Multi Source Translation Content

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

Multi Source Translation Content

ディスカッション

ソート順:
FRDM Trainings and resources Keep Learning with FRDM – Explore Training & Resources to Power Your Development This section provides a helpful overview of the available resources designed to support your journey with FRDM Development Boards. Whether you're just getting started or looking to expand your knowledge, you'll find tools, guides, hands-on training, and more.  Explore FRDM Development Boards  Platform Overview  Visit nxp.com/FRDM to explore the scalability of FRDM boards and compare supported MCUs and MPUs.  New to FRDM? Start with:  Getting Started with the FRDM Development Platform: A Complete Beginner’s Guide.  Board Categories   General Purpose Microcontrollers  FRDM-MCXC041  FRDM-MCXC242  FRDM-MCXC444  FRDM-MCXA153  FRDM-MCXA156  FRDM-MCXA346  FRDM-MCXE247  FRDM-MCXN236  FRDM-MCXN947  Wireless Microcontrollers  FRDM-MCXW71  FRDM-MCXW23 FRDM-RW612  i.MX Application Processors  FRDM-IMX91  FRDM-IMX93  FRDM-IMX8MPLUS    For board positioning and comparison, refer to:  Design without bounds with FRDM  and nxp.com/FRDM  FRDM Video Resources  Enhance your learning experience with a curated selection of FRDM video content, including:  🎬 Live Demos – See FRDM boards in action with ready-to-use, open-source examples.  📘 Board Introductions – Get familiar with the features and capabilities of various FRDM Development Boards.  🎓 Educational Videos – Access tutorials and walkthroughs to support your development journey.  These videos offer practical insights and visual guidance to help you get the most out of your FRDM tools.    FRDM Blog Resources  Dive into a rich collection of blog articles that explore:  ✅ Real-world use cases featuring FRDM boards  🛠️ Tool support and integration tips  💬 Developer experiences and insights  📱 Application examples and technical guidance  These blogs offer valuable perspectives and practical knowledge to help you make the most of your FRDM development journey.   Highlighted Content:  Boost Performance: 5 Reasons to Migrate to 32-Bits MCUs with MCX C  From Frustration to Flow: How GUI Guider Transformed Embedded Interface Development    FRDM Hubs   Each "Hub" file is a gateway to deeper content for your specific product, including board overview, expansion boards and accessories, hands-on guidance and technical insights.  FRDM Product-Specific  FRDM-IMX91   FRDM-RW61   FRDM-IMX93   FRDM-IMX8MPLUS   FRDM-MCXN  FRDM-MCXW   Software, Tools Related Trainings & Communities   Category  Tool / Resource  MCU Training Hub  MCUXpresso Training Hub. Trainings for different tools for Microcontrollers and Processors  IDE Trainings  MCUXpresso IDE  MCUXpresso for Visual Studio Code    Software Packs & Libraries  MCUXpresso SDK  Open CMSIS Packs  Configuration Tools  MCUXpresso Config Tools. Suite of configuration tools that enable you to rapidly configure pins, clocks, security, memory and drivers, enabling quicker understanding of NXP devices and easier migration to custom hardware designs.    Provisioning  MCUXpresso Secure Tool Provisioning. GUI-based application to simplify use of security features to generate and program secured bootable executables and enable secure provisioning.    Debug Tools  FreeMaster .Real-time debug monitor and data visualization tool that enables runtime configuration and tuning of embedded software applications.    Open Source Application Code  Application Code Hub. Dashboard to easily find software examples, code snippets, application software packs and demos developed byPartners and our in-house experts.  Explore demo videos based on FRDM. GoPoint is an intuitive interface that provides developers with easy access to application-specific demos for i.MX processors .  Learn about GoPoint in a 2 min video:  Power Up FRDM with GoPoint Demos: AI, Vision, Graphics and More  FRDM Development Boards supported: FRDM-IMX93 FRDM-IMX8MPLUS Machine Learning Environment  eIQ.  Software development environment enables the use of ML algorithms on NXP EdgeVerse™ microcontrollers and microprocessors. This software leverages open-source and proprietary technologies and is fully integrated into our MCUXpresso SDK and Yocto development environments.       Explore Software code examples, Application notes and code snippets by most popular use case: ML / AI Motor Control Security Wireless Connectivity Sensing Graphics Explore all demos supported by FRDM Development Platform here. Use filters in the left side of the dashboard to filter by board, use case and more. Operating System Support  Zephyr OS  Run Zephyr on A55 with FRDM-IMX93 and FRDM-IMX91 Zephyr OS for MCX FRDM Development boards   Hardware Accessories   FRDM Board Enclosures  MCX Microcontrollers FRDM Boards Enclosures (3D Print)    #FRDM-Training #Hands-On Training FRDM Training and Resources This article provide a guide of available resources for FRDM Development boards to help you to find and use available resources (Boards, Guides, Hands-On Trainings and more) FRDM-IMX8 FRDM-IMX8MP FRDM-IMX9 FRDM-IMX91 FRDM-IMX93 FRDM-MCXA FRDM-MCXC FRDM-MCXE FRDM-MCXE24 FRDM-MCXE31 FRDM-MCXL FRDM-MCXN FRDM-MCXW23 FRDM-RW612 FRDM-Training Hands-On Training i.MX Application Processors MCU MCX W23 Wireless
記事全体を表示
Tricked out tech at MakerFaire Maker Faires, here we come! This weekend we'll be sharing some super cool projects in San Mateo, and in September we'll be in New York. After much work, our team has pulled together some super cool projects built around Kinetis mcus, i.MX 6 processors, Freedom development platforms, as well as popular community projects featuring the UDOO, Riotboard.org, Novena, CuBox-i, Wandboard.org, Wunderbar, ZumoBots and more. Here are a few things that we have planned. Who doesn't love blinking, flashy lights? The crew over at PJRC has created a LED display (4320 to be exact) all being controlled by ONE Teensy3.1 board, which is about the size of a stick of gum. Paul has cooked up some special Teensyduino sketch library's that take advantage of the Kinetis K20 MCU's direct memory access engine (DMA) features to pull off the video and audio shown in this demo. Not only did Paul manage the difficult LED timing, but it also serves all the video from the SDCard interface. Did we mention it plays audio as well?! https://community.nxp.com/docs/DOC-100844 Once you're done getting your fill of light from the sign, you can test your skills with our hacked Wii-Fi (yes it's WII + WiFi) Nerf Swarmfire.  Add a few servos, a little re-wiring and a custom built WiFi remote and viola ... instant fun!  To pull this off we use two FRDM-KL64Fs on the Nerf itself (base) and one acting as a wireless remote.  The base board processes data from the remote and corresponding controls the servos. This video has been deleted (view in My Videos) The remote board behaves somewhat like a Wii in that the user has to move the remote around and onboard accelerometers turn that into motion movements which it then passes via WiFi to the base controller. And to top it all off, we just had to 3D print a plastic controller to put it all in. https://community.nxp.com/docs/DOC-100845 Those are are my kickin' Kinetis MCUs based demos. Now let's talk multimedia and that means i.MX apps processors. While your in the area be sure to say hello to Mario. Mario is a DIY Android powered robot with voice recognition and Twitter connection. Mario’s heart is a UDOO Quad running Android 4.3 plus an Arduino Motor Shield which controls 2 servos (Mario’s arms) and 4 Motors that turn 4 wheels (Mario’s legs). To show his cute face Mario has a 7-inch LVDS display while his mouth is a little speaker. To make him talk we used the Google APIs voice recognition and text to speech in order to give him a life. We also used Twitter APIs to control Mario via Twitter, he can read tweets and it’s also possible to send commands to Mario with a simple chirp. Re: Tricked out tech at MakerFaire Technical links: Wandboard: At Maker Faire San Mateo, we're showing a Wandboard Quad running XBMC (Xbox Media Center) (I might change this to Ubuntu or yocto) Main www.wandboard.org Technical http://www.wandboard.org/index.php/details Supplied software images http://www.wandboard.org/index.php/downloads Forums (there is both a Google group and a forum) http://www.wandboard.org/index.php/forums Where to Buy http://www.wandboard.org/index.php/buy Solidrun/Cubox: They are providing a unti with XBMC (Xbox Media Center) Main http://www.solid-run.com/ Technical and Pricing http://cubox-i.com/table/ Teensy Small Kinetis K20 that is Ardunio sketch compatible. Works with the Ardunino IDE. Main http://www.pjrc.com UDOO i.MX6 with Arduino also. Main http://www.udoo.org/ Technical and Pricing http://shop.udoo.org/usa/?___from_store=usa&popup=no
記事全体を表示
i.MX27ADS への U-Boot のインストール <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> まず、ネットワーク( ネットワーク経由でのファイル転送)またはシリアル( シリアル経由でのファイル転送) を使用してU-Bootファームウェアをアップロードし ます これは、一般的なシリアル転送出力です。 =>負荷 ## Ready for binary (ymodem) download to 0xa0800000 at 115200 bps... CCmode, 1359(SOH)/0(STX)/0(CAN) packets, 9 retries ## 合計サイズ = 0x0002a388 = 172936バイト ブートローダーのフラッシュ領域の保護を解除します。 C0000000 C003FFFFをオフに保護 フラッシュブロックを消去します。 消去C0000000 C003FFFF RAM からフラッシュへのコピー: ファームウェアがシリアル経由で転送されている場合: CP.B A0800000 C0000000 2A388 ファームウェアが TFTP 経由で転送された場合: CP.B 100000 C0000000 2A388 BDI3000 を使用した U-Boot のインストール BDI2000/3000を使用して、S71WS256 pSRAMに書き込むことができます。 この設定ファイルを入手してください。Ultimate Solutionsの皆さん、とても親切な人たちで、ほぼ準備ができているファイルを書いてくれたことに感謝します。 [FLASH]セクションを次のように編集します。 [フラッシュ] チップタイプS29M32X16 チップサイズ0x2000000 バス幅 16 ファイル/home/lsantos/work/i.mx27/u-boot/u-boot-v2/uboot.bin ;Change to you パス フォーマットビン0xC0000000 消去0xC0000000 消去0xC0008000 消去 (消去) 0xC0018000 消去0xC0010000 消去 0xC0020000 [HOST]セクションをマシンのIPアドレスに編集することを忘れないでください。 BDI への Telnet 接続 - CONFIG: ロード設定ファイルが渡されました - CONFIG: ロード レジスタ定義が渡されました - TARGET: リセット要求の処理 - ターゲット: BDI が TRST と RESET をアサート - 対象:BDIがTRSTを排除 - TARGET: バイパス チェック 0x00000001 => 0x00000002 - TARGET: JTAG exists チェックに合格しました - Core#0: IDコードは0x07926121 - TARGET: すべてのICEBreakerアクセスチェックに合格しました - ターゲット: BDI は RESET を削除します。 - ターゲット: BDI が RESET 非アクティブを待機 - TARGET: ターゲットのリセットが渡されました - TARGET:処理対象のスタートアップ .... - TARGET: 処理対象のスタートアップが渡されました 最初の 128 KiB を消去します。 ADS>消去 0xc0000000でのフラッシュの消去 0xc0008000でのフラッシュの消去 0xc0018000でのフラッシュの消去 0xc0010000でのフラッシュの消去 0xc0020000でのフラッシュの消去 消去フラッシュが通過しました フラッシュを書き込む ADS>プログレッシブ プログラミング/home/lsantos/work/i.mx27/u-boot/u-boot-v2/uboot.bin、お待ちください...。 書き込みフラッシュが渡されました すべてが本当にうまくいったことを確認してください ADS>確認 確認中 /home/lsantos/work/i.mx27/u-boot/u-boot-v2/uboot.bin 、お待ちください .... ターゲット・メモリーが渡されたことの確認 これで、BDIのプラグを抜いてボードをリセットできます Uブート2.0.0-rc9-00136-gbf725a2-dirty(2009年6月17日 - 15:45:23) ボード:Freescale i.MX27 ADS cfi_probe:cfi_flashベース:0xc0000000サイズ:0x02000000 チップID: [2,882,1,01d] mpll:265999329ヘルツ spll:239999725ヘルツ アーム:177332886ヘルツ perclk1: 8866644 Hz perclk2:17733288ヘルツ perclk3:44333221ヘルツ perclk4:17733288ヘルツ clkin26:26000000ヘルツ ahb:44333221ヘルツ ipg:22166610ヘルツ Malloc スペース: 0xa7b00000 -> 0xa7f00000 (サイズ 4 MB) スタックスペース:0xa7af8000-> 0xa7b00000(サイズ32kB) envfs: /dev/env0 の間違った魔法 有効な環境が /dev/env0 に見つかりませんでした。デフォルト環境の使用 /env/bin/init を実行しています... 自動起動を停止するには、任意のキーを押します:2 「update_kernel [ ] と入力して、カーネルをフラッシュに更新します 「udate_root [ ] 」と入力して、rootfs を Flash に更新します uboot:/ もちろん、この設定はRedbootでも機能しますので、[FLASH]セクションの FILE エントリを変更するか、 prog コマンドを使用してください。 ADS>プログラム 0xc0000000 /home/lsantos/work/i.mx27/redboot/build/install/bin/redboot.bin BIN プログラミング/home/lsantos/work/i.mx27/redboot/build/install/bin/redboot.bin、お待ちください.... 書き込みフラッシュが渡されました ADS>確認 確認中 /home/lsantos/work/i.mx27/redboot/build/install/bin/redboot.bin 、お待ちください .... ターゲット・メモリーが渡されたことの確認 再起動 ++...0x07f00000 0x07ee0000 0xc1fe0000: ....0xc1fff000: の 0x07ed3000-0x07ed4000 から読みます。**警告** FLASH構成のチェックサムエラーまたは無効なキー 'fconfig -i' を使用してデータベースを [再] 初期化します PMIC ID: 0x0000009b [改訂版: 3.3] イーサネットFEC MACアドレス:設定されていません ボードタイプ:ADS クロック入力:26MHz [NORフラッシュ]からの起動 PHY ID 22 @ 1 FEC: [ HALF_DUPLEX ] [ 切断 ] [ 10M bps ] : イーサネットeth0:MACアドレス00:04:9f:00:af:7a デバイスのBOOTP情報を取得できません!RedBoot(tm) ブートストラップおよびデバッグ環境 [ROMRAM] 非認定リリース、バージョン FSL 200749 - 2009 年 6 月 17 日 19:37:28 プラットフォーム: MX27 ADS/EVB (Freescale i.MX27 ベース) PASS 2.1 [x32 SDR] Copyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat, Inc. RAM:0x00000000-0x07f00000、[0x00025260-0x07ed1000]利用可能 フラッシュ:0xc0000000〜0xc2000000、各0x00020000バイトの256ブロック。レッドブーツ> i.MX2x
記事全体を表示
Zephyr 定制板和应用程序 如果您对这些资源有任何疑问或问题,请 提出新问题,恩智浦支持团队将为您解答。 定制板 Zephyr 存储库包括对数十种NXP 开发板的支持。创建自定义开发板时,最好从使用同一系列的 SOC 的最接近的开发板开始,克隆该开发板文件夹,重命名为新开发板,并进行修改以匹配硬件。定制板的更多资源包括: Zephyr 项目板移植指南 NXP 博客:为 i.MX RT685 创建定制 Zephyr 开发板 请参阅本页的“生成电路板 pinctrl”部分 如果从克隆的开发板更改内存设置,请参阅Zephyr 的内存详细信息。 使用适用于 VS Code 的 MCUXpresso,从 v25.3.72 开始,导入 Zephyr 应用程序时不支持树外板。此功能将很快添加。与此同时,还有一个解决方法。 不受支持的 SOC 部件号 创建定制板时的一个常见挑战是,目前 Zephyr 并不支持 NXP 销售的所有 SOC 部件号。 Zephyr 中的支持基于董事会,而不是直接由 SOC 提供。构建 Zephyr 应用程序时必须指定板名称。然后,电路板文件包括该电路板上使用的 SOC。这些是 Zephyr 支持的NXP 板。Zephyr 文档框架没有针对 SOC 的类似页面。 NXP 为开发板提供 Zephyr 支持。一个开发板通常支持一个SOC系列。开发板通常在板上具有超集 SOC,它提供该系列的最多功能/内存。例如,MIMXRT1060-EVK 板用于与 i.MX RT106x 系列一起开发,并使用超集 RT1062 部件号。系列中的其他零件编号与超集非常相似,但可能缺少一些功能、内存较少或较小封装中的引脚较少。 由于 Zephyr 支持基于主板,并且主板上的 SOC 也受支持,因此目前有许多其他类似的 SOC 部件号在 Zephyr 中不直接受支持。以下是创建自定义板时管理此问题的一些选项: 定制板以 Zephyr 支持的开发板为基础,并在定制板上使用相同的 SOC 部件编号。该 SOC 已在 Zephyr 中可用,可以启用开发板。 在电路板上使用同一系列的 SOC,但配置 Zephyr 定制板以使用开发板上的超集 SOC。例如,电路板使用 RT1061 零件编号,但自定义板文件使用来自 MIMXRT1060-EVK 的相同 RT1062 零件编号。此选项的优点是 Zephyr 不需要任何额外的 SOC 支持。超集可能具有电路板上 SOC 可用的所有功能和内存。然后,自定义板文件可以通过禁用不可用的外围设备并根据需要减少内存大小来修改设备树和 Kconfig。SOC pinctrl 文件适用于受支持系列中的大多数 SOC,可在HAL_NXP repo 中找到。通常,定制板可以包含所使用的精确零件编号的 SOC pinctrl 文件。 使用同一系列的 SOC,但贡献 Zephyr 所需的所有 SOC 文件。例如,电路板使用 RT1061 零件编号,因此开发人员将 RT1061 零件编号选项添加到 Zephyr repo,并配置定制板以使用该 RT1061 零件编号。此选项需要付出更多努力并对 Zephyr repo 有一定的适应性,但一些 Zephyr 用户可能更喜欢此选项。如果像这样启用了新的 SOC,它可以被贡献给 Zephyr repo 的上游。 上面讨论的 SOC 选项假设 SOC 系列的主板已在 Zephyr 中受支持,从而可以启用该系列中的至少一个 SOC。如果尝试将 Zephyr 移植到没有电路板支持的新型 SOC 系列,则可能需要付出更多的努力。为了尽量减少移植工作量,最好从主板上已经支持的 SOC 系列开始。 点控 Zephyr 使用pinctrl来配置 SOC 的引脚和 pinmux 设置。通常,每个电路板都有一个 pinctrl 文件,其中包含该电路板的默认 pinctrl 设置。例如,这是mimxrt1060_evk-pinctrl.dtsi 。NXP 还为每个 SOC 提供 pinctrl 文件,例如mimxrt1062dvl6a-pinctrl.dtsi 。SOC pinctrl 文件位于HAL_NXP repo 中,并为每个引脚提供所有 pinmux 选项,这使得在板 pinctrl 文件中选择 pinmux 选项变得更容易、更易读。对于 NXP 开发板,开发板 pinctrl 文件包含 SOC pinctrl 文件,如下所示: #include 生成 board pinctrl 创建新板时通常会创建新的板 pinctrl 文件。始终可以手动创建 Board pinctrl 文件。但生成文件很方便,特别是因为 NXP 提供了MCUXpresso 配置工具中包含的 Pins 工具。Pins Tool 有一个 GUI,可帮助选择应用程序使用的所有所需信号,并配置 pinmux 和 pin 设置。从 v25.03 版本开始,配置工具可以为 i.MX RT1xxx 和 MCX 设备生成 Zephyr 板 pinctrl 文件。Zephyr 所支持的设备将在后续版本中添加。要了解如何生成电路板 pinctrl 文件,请参阅配置工具用户指南。 对于配置工具中尚不支持的其他设备,NXP 有一个 Python 脚本来帮助生成电路板 pinctrl 文件。这些脚本最终将被配置工具取代并弃用。该脚本使用上面相同的配置工具来配置电路板的引脚,然后从文件中提取引脚信息并生成电路板 pinctrl 文件。脚本包含在HAL_NXP repo 中并通过此Readme记录。 如果无法生成,则必须手写电路板 pinctrl。最好的选择是找到类似 SOC 的 board pinctrl 文件,并根据需要进行修改。 新的树外应用程序 Zephyr 存储库充满了示例和测试应用程序,有助于学习如何使用驱动程序、子系统或模块。创建新应用程序时,可以为该应用程序创建一个新的 Git 仓库,并且可以使用 West 将 Zephyr 仓库作为模块引入。应用程序经常将 West 的T2 Star 拓扑与 Zephyr 结合使用。在创建应用程序存储库时,这些示例存储库是一个很好的参考: Zephyr 项目的示例应用程序 repo ,包括一个外部板和驱动程序 NXP Zephyr 演示和示例库 NXP Pro 支持Zephyr 示例库 返回Zephyr知识中心
記事全体を表示
MCUXpresso IDE v11.5.1现已发布 我们很高兴地宣布 MCUXpresso IDE v11.5.1(版本 7266)现已推出。 这是基于之前的MCUXpresso IDE v11.5.0 版本构建的维护版本,我们建议所有现有用户下载并安装此新版本。 安装程序下载 要下载所有平台的安装程序,请登录我们的下载网站: https://www.nxp.com/mcuxpresso/ide/download 文档 更多信息可以在更新后的用户指南和其他文档中找到,这些文档可以通过 IDE 的帮助菜单访问内置帮助系统,或以 PDF 格式从安装目录中获取,也可以从以下链接下载: https://www.nxp.com/mcuxpresso/ide/documentation   未来版本的发布通知 要接收有关未来版本的通知,请关注: MCUXpresso IDE - 发布历史 变更摘要 - 版本 11.5.1 - 2022 年 4 月 升级:CDT 从 CDT 10.3.0 升级到 CDT 10.3.3。这是为了解决: https://bugs.eclipse.org/bugs/show_bug.cgi ?id=575903 问题。 升级:较新的 SEGGER J-Link 软件(v7.62c)。 升级:较新的 PEmicro 插件(v5.2.0)。 添加:[NPI] RT1060X(RT1060幻影)支持。 功能:[Flash 编程器][RT1160/RT117x] 为 FlexSPI2 端口 A 上的 QSPI 添加闪存驱动程序。 已修复:[调试器] 有关新 MCU-Link 固件版本的通知可能不会显示在探测器发现对话框中。 已修复:[调试器] 在具有大量寄存器的目标(如 RT1160 或 RT117x)上打开 Peripherals+ 窗口时,调试操作很慢。 已修复:[项目经理][RT1160/RT117x] .cproject 中的 -D__MULTICORE_MASTER 泛滥。 已修复:[项目管理器][RT1160/RT117x] M7 C++ 项目无法在特定应用程序上加载 M4 项目(在多核配置的情况下)。现在,在生成的链接器文件中,exdata 部分被放置在堆和堆栈部分之前(使用托管链接器脚本配置时),而以前的版本中,exdata 部分被放置在数据部分之前。 已修复:[Peripherals+][LPC546xx] Peripherals+ 窗口中的 EMC 寄存器位置/偏移量不正确。 已修复:[能量测量] 如果能量测量视图与 SWO 配置文件一起使用,则会出现不稳定性 已知问题 请参阅安装布局中的 KnownIssues.txt 文件以获取详细列表。 注意:发布后发现的额外问题将添加至在线版本中,同时也会在可行时提供解决方案说明。
記事全体を表示
RT106L/S voice control system based on the Baidu cloud RT106L_S voice control system based on the Baidu cloud 1 Introduction     The NXP RT106L and RT106S are voice recognition chip which is used for offline local voice control, SLN-LOCAL-IOT is based on RT106L, SLN-LOCAL2-IOT is a new local speech recognition board based on RT106S. The board includes the murata 1DX wifi/BLE module, the AFE voice analog front end, the ASR recognition system, the external flash, 2 microphones, and the analog voice amplifier and speakers. The voice recognition process for SLN-LOCAL-IOT and SLN-LOCAL2-IOT is different and the new SLN-LOCAL2-IOT is recommended.     This article is based on the voice control board SLN-LOCAL/2-IOT to implement the following block diagram functions: 1.jpg Pic 1 Use the PC-side speed model tool (Cyberon DSMT) to generate WW(wake word) and VC(voice command) Command related voice engine binary files , which will be used by the demo code. This system is mainly used for the Chinese word recognition, when the user says Chinese word: "小恩小恩", it wakes up SLN-LOCAL/2-IOT, and the board gives feedback "小恩来了,请吩咐". Then system enter the voice recognition stage, the user can say the voice recognition command: “开红灯”,“关红灯”,“开绿灯”,“关绿灯”,“灯闪烁”,“开远程灯”,“关远程灯”, after recognition, the board gives feedback "好的". Among them, “开红灯”,“关红灯”,“开绿灯”,“关绿灯”,“灯闪烁”,the five commands are used for the local light switch, while the 开远程灯”,“关远程灯“two commands can through network communication Baidu cloud control the additional MIMXRT1060-EVK development board light switch. SLN-LOCAL/2-IOT through the WIFI module access to the Internet with MQTT protocol to achieve communication with Baidu cloud, when dectect the remote control command, publish the json packets to Baidu cloud, while MIMRT1060-EVK subscribe Baidu cloud data, will receive data from the IOT board and analyze the EVK board led control. PC side can use MQTT.fx software to subscribe the Baidu cloud data, it also can send data to the device to achieve remote control function directly.  Now, will give the detail content about how to use the SLN-LOCAL/2-IOT SDK demo realize the customized Chinese wake command and voice command, and remote control the MIMXRT1060-EVK through the Baidu Cloud.     2 Platform establish 2.1 Used platform SLN-LOCAL-IOT/SLN-LOCAL2-IOT MIMXRT1060-EVK MQTT.fx SDK_2_8_0_SLN-LOCAL2-IOT MCUXPresso IDE Segger JLINK Baidu Smart Cloud: Baidu cloud control+ TTS Audacity:audio file format convert tool WAVToCode:wav convert to the c array code, which used for the demo tilte play MCUBootUtility: used to burn the feedback audio file to the filesystem Cyberon DSMT: wake word and voice detect command generation tool DSMT is the very important tool to realize the wake word and voice dection, the apply follow is: 2.jpg Pic 2 2.2 Baidu Smart cloud 2.2.1 Baidu cloud IOT control system Enter the IoT Hub: https://cloud.baidu.com/product/iot.html     Click used now. 2.2.1.1 Create device project Create a project, select the device type, and enter the project name. Device types can use shadows as images of devices in the cloud to see directly how data is changing. Once created, an endpoint is generated, along with the corresponding address: 3.jpg Pic 3 2.2.1.2 Create Thing model The Thing model is mainly to establish various properties needed in the shadow, such as temperature, humidity, other variables, and the type of value given, in fact, it is also the json item in the actual MQTT communication.    Click the newly created device-type project where you can create a new thing model or shadow: 4.jpg Pic 4    Here create 3 attributes:LEDstatus,humid,temp It is used to represent the led status, humidity, temperature and so on, which is convenient for communication and control between the cloud and RT board. Once created, you get the following picture: 5.jpg Pic 5 2.2.1.3 Create Thing shadow In the device-type project, you can select the shadow, build your own shadow platform, enter the name, and select the object model as the newly created Thing model containing three properties, after the create, we can get the details of the shadow:   6.jpg Pic 6 At the same time will also generate the shadow-related address, names and keys, my test platform situation is as follows: TCP Address: tcp://rndrjc9.mqtt.iot.gz.baidubce.com:1883 SSL Address: ssl://rndrjc9.mqtt.iot.gz.baidubce.com:1884 WSS Address: wss://rndrjc9.mqtt.iot.gz.baidubce.com:443 name: rndrjc9/RT1060BTCDShadow key: y92ewvgjz23nzhgn Port 1883, does not support transmission data encryption Port 1884, supports SSL/TLS encrypted transmission Port 8884, which supports wesockets-style connections, also contains SSL encryption. This article uses a 1883 port with no transmission data encryption for easy testing. So far, Baidu cloud device-type cloud shadow has been completed, the following can use MQTTfx tools to connect and test. In practice, it is recommended that customers build their own Baidu cloud connection, the above user key is for reference only. 2.2.2 Online TTS    SLN-LOCAL/2-IOT board recognizes wake-up words, recognition words, or when powering on, you need to add corresponding demo audio, such as: "百度云端语音测试demo ", "小恩来啦!请吩咐“,"好的". These words need to do a text-to-wav audio file synthesis, here is Baidu Smart Cloud's online TTS function, the specific operation can refer to the following documents: https://ai.baidu.com/ai-doc/SPEECH/jk38y8gno   Once the base audio library is opened, use the main.py provided in the link above and modify it to add the Chinese field you want to convert to the file "TEXT" and add the audio file to be converted in "save_file" such as xxx .wav, using the command: python main.py to complete the conversion, and generate the audio format corresponding to the text, such as .mp3, .wav. 7.jpg Pic 7 After getting the wav file, it can’t be used directly, we need to note that for SLN-LOCAL/2-IOT board, you need to identify the audio source of the 48K sample rate with 16bit, so we need to use the Audioacity Audio tool to convert the audio file format to 48K16bit wav. Import 16K16bit wav files generated by Baidu TTS into the Audioacity tool, select project rate of 48Khz, file->export->export as WAV, select encoding as signed 16bit PCM, and regenerate 48Khz16bit wav for use. 8.jpg Pic 8 “百度云端语音测试demo“:Used for power-on broadcasting, demo name broadcasting, it is stored in RT demo code, so you need to convert it to a 16bit C code array and add it to the project. "小恩来啦!请吩咐",“好的“:voice detect feedback, it is saved in the filesystem ZH01,ZH02 area. 2.3 playback audio data prepare and burn   There are two playback audio file, it is "小恩来啦!请吩咐",“好的“,it is saved in the filesystem ZH01,ZH02 area. Filesystem memory map like this: 9.jpg Pic 9 So, we need to convert the 48K16bit wav file to the filesystem needed format, we need to use the official tool::Ivaldi_sln_local2_iot Reference document:SLN-LOCAL2-IOT-DG chapter 10.1 Generating filesystem-compatible files Use bash input the commands like the following picture: 10.jpg Pic10 Use the convert command to get the playback bin file: python file_format.py -if xiaoencoming_48k16bit.wav -of xiaoencoming_48k16bit.bin -ft H At last, it will generate the file: "小恩来啦!请吩咐"->xiaoencoming_48k16bit.bin,burn to flash address 0x6184_0000 “好的”->OK_48k16bit.bin, burn to flash address 0x6180_0000 Then, use MCUBootUtility tool burn the above two file to the related images. Here, take OK_48k16bit.bin as an example, demo enter the serial download mode(J27-0), power off and power on. Flash chip need to select hyper flash IS26KSXXS, use the boot device memory windows, write button to burn the .bin file to the related address, length is 0X40000 11.jpg Pic11 12.jpg Pic12 xiaoencoming_48k16bit.bin can use the same method to download to 0x6184_0000,Length is 0X40000. 2.4 Demo audio prepare and add The prepared baiduclouddemo_48K16bit.wav(“百度云端语音测试demo “) need to convert to the 16bit C array code, and put to the project code, calls by the code, this is used for the demo mode play. The convert need to use the WAVToCode, the operation like this: 13.jpg Pic 13 The generated baiducloulddemo_48K16bit.c,add it to the demo project C files: sln_local_iot_local_demo->audio->demos->smart_home.c。 2.5 WW and VC prepare Wake-up word are generated through the cyberon DSMT tool, which supports a wide range of language, customers can request the tool through Figure 2. The Chinese wake-up words and voice command words in this article are also generated through DSMT. DSMT can have multiple groups, group1 as a wake-up word configuration, CmdMapID s 1. Other groups act as voice command words, such as CMD-IOT in this article, cmdMapID=2. 14.jpg Pic 14 15.jpg Pic 15 Wake word continuously detects the input audio stream, uses group1, and if successfully wakes up, will do the voice command detection uses group2, or other identifying groups as well as custom groups. The wake-up words using the DSMT tool, the configuration are as follows: 16.jpg Pic 16 The WW can support more words, customer can add the needed one in the group 1. Use the DSMT configure VC like this: 17.jpg Pic 17 Then, save the file, code used file are: _witMapID.bin, CMD_IOT.xml,WW.xml. In the generated files, CYBase.mod is the base model, WW.mod is the WW model, CMD_IOT.mod is the VC model. After Pic 16,17, it finishes the WW and VC command prepare, we can put the DSMT project to the RT106S demo project folder: sln_local2_iot_local_demo\local_voice\oob_demo_zh 3 Code prepare Based on the official SLN-LOCAL2-IOT SDK local_demo, the code in this article modifies the Chinese wake-up words and recognition words (or you can build a new customer custom group directly), add local voice detect the led status operations, Then feedback Chinese audio, demo Chinese audio, Wifi network communication MQTT protocol code, and Baidu cloud shadow connection publish. Source reference code SDK path: SDK_2_8_0_SLN-LOCAL2-IOT\boards\sln_local2_iot\sln_voice_examples\local_demo   SDK_2_8_0_SLN-LOCAL2-IOT\boards\sln_local2_iot\sln_boot_apps SLN-LOCAL2-IOT and SLN-LOCAL-IOT code are nearly the same, the only difference is that the ASR library file is different, for RT106S (SLN-LOCAL2-IOT) using SDK it’s own libsln_asr.a library, for RT106L (SLN-LOCAL-IOT) need to use the corresponding libsln_asr_eval.a library.    Importing code requires three projects: local_demo, bootloader, bootstrap. The three projects store in different spaces. See SLN-LOCAL2-IOT-DG .pdf, chapter 3.3 Device memory map    This is the 3 chip project boot process: 18.jpg Pic 18 This document is for demo testing and requires debug, so this article turns off the encryption mechanism, configures bootloader, bootstrap engineering macro definition: DISABLE_IMAGE_VERIFICATION = 1, and uses JLINK to connect SLN-LOCAL/2-IOT's SWD interface to burn code. The following is to add modification code for app local_demo projects. 3.1 sln-local/2-iot code Sln-local-iot, sln-local2-iot platform, the following modification are the same for the two platform. 3.1.1 Voice recognition related code 1)Demo audio play Play content:“百度云端语音测试demo“ sln_local2_iot_local_demo_xe_ledwifi\audio\demos\ smart_home.c content is replaced by the previously generated baiducloulddemo_48K16bit.C. audio_samples.h,modify: #define SMART_HOME_DEMO_CLIP_SIZE 110733 This code is used for the main.c announce_demo API play:         case ASR_CMD_IOT:             ret = demo_play_clip((uint8_t *)smart_home_demo_clip, sizeof(smart_home_demo_clip)); 2)command print information #define NUMBER_OF_IOT_CMDS      7 IndexCommands.h static char *cmd_iot_en[] = {"Red led on", "Red led off", "Green led on", "Green led off",                              "cycle led",        "remote led on",         "remote led off"}; static char *cmd_iot_zh[] = {"开红灯", "关红灯", "开绿灯", "关绿灯", "灯闪烁", "开远程灯", "关远程灯"}; Here is the source code modification using IOT, you can actually add your own speech recognition group directly, and add the relevant command identification. 3)sln_local_voice.c Line757 , add led-related notification information in ASR_CMD_IOT mode. oob_demo_control.ledCmd = g_asrControl.result.keywordID[1];     The code is used to obtain the recognized VC command data, and the value of keywordID[1] represents the number. This number can let the code know which detail voice is detected. so that you can do specific things in the app based on the value of ledcmd. The value of keywordID[1] corresponds to Command List in Figure 17. For example, “开远程灯“, if woke up, and recognized "开远程灯", then keywordID[1] is 5, and will transfer to oob_demo_control.ledCmd, which will be used in the appTask API to realize the detail control. 4) main.c void appTask(void *arg) Under case kCommandGeneric: if the language is Chinese, then add the recognition related control code, at first, it will play the feedback as “好的”. Then, it will check the voice detect value, give the related local led control. else if (oob_demo_control.language == ASR_CHINESE) { // play audio "OK" in Chinese #if defined(SLN_LOCAL2_RD) ret = audio_play_clip((uint8_t *)AUDIO_ZH_01_FILE_ADDR, AUDIO_ZH_01_FILE_SIZE); #elif defined(SLN_LOCAL2_IOT) ret = audio_play_clip(AUDIO_ZH_01_FILE); #endif //kerry add operation code==================================================begin RGB_LED_SetColor(LED_COLOR_OFF); if (oob_demo_control.ledCmd == LED_RED_ON) { RGB_LED_SetColor(LED_COLOR_RED); vTaskDelay(5000); } else if (oob_demo_control.ledCmd == LED_RED_OFF) { RGB_LED_SetColor(LED_COLOR_OFF); vTaskDelay(5000); } else if (oob_demo_control.ledCmd == LED_BLUE_ON) { RGB_LED_SetColor(LED_COLOR_BLUE); vTaskDelay(5000); } else if (oob_demo_control.ledCmd == LED_BLUE_OFF) { RGB_LED_SetColor(LED_COLOR_OFF); vTaskDelay(5000); } else if (oob_demo_control.ledCmd == CYCLE_SLOW) { for (int i = 0; i < 3; i++) { RGB_LED_SetColor(LED_COLOR_RED); vTaskDelay(400); RGB_LED_SetColor(LED_COLOR_OFF); RGB_LED_SetColor(LED_COLOR_GREEN); vTaskDelay(400); RGB_LED_SetColor(LED_COLOR_OFF); RGB_LED_SetColor(LED_COLOR_BLUE); vTaskDelay(400); } } … } In addition to local voice recognition control, this article also add remote control functions, mainly through wifi connection, use the mqtt protocol to connect Baidu cloud server, when local speech recognition get the remote control command, it publish the corresponding control message to Baidu cloud, and then the cloud send the message to the client which subscribe this message,  after the client get the message, it will refer to the message content do the related control. 3.1.3 Network connection code 1)sln_local2_iot_local_demo_xe_ledwifi\lwip\src\apps\mqtt     Add mqtt.c 2)sln_local2_iot_local_demo_xe_ledwifi\lwip\src\include\lwip\apps Add mqtt.h, mqtt_opts.h,mqtt_prv.h The related mqtt driver is from the RT1060 sdk, which already added in the attachment project. 3)sln_tcp_server.c   Add MQTT application layer API function code, client ID, server host, MQTT server port number, user name, password, subscription topic, publishing topic and data, etc., more details, check the attachment code.    The MQTT application code is ported from the mqtt project of the RT1060 SDK and added to the sln_tcp_server.c. TCP_OTA_Server function is used to initialize the wifi network, realize wifi connection, connect to the network, resolve Baidu cloud server URL to get IP, and then connect Baidu cloud server through mqtt, after the successful connection, publish the message at first, so that after power-up through mqttfx to see whether the power on network publishing message is successful. TCP_OTA_Server function code is as follows: static void TCP_OTA_Server(void *param) //kerry consider add mqtt related code { err_t err = ERR_OK; uint8_t status = kCommon_Failed; #if USE_WIFI_CONNECTION /* Start the WiFi and connect to the network */ APP_NETWORK_Init(); while (status != kCommon_Success) { status_t statusConnect; statusConnect = APP_NETWORK_Wifi_Connect(true, true); if (WIFI_CONNECT_SUCCESS == statusConnect) { status = kCommon_Success; } else if (WIFI_CONNECT_NO_CRED == statusConnect) { APP_NETWORK_Uninit(); /* If there are no credential in flash delete the TPC server task */ vTaskDelete(NULL); } else { status = kCommon_Failed; } } #endif #if USE_ETHERNET_CONNECTION APP_NETWORK_Init(true); #endif /* Wait for wifi/eth to connect */ while (0 == get_connect_state()) { /* Give time to the network task to connect */ vTaskDelay(1000); } configPRINTF(("TCP server start\r\n")); configPRINTF(("MQTT connection start\r\n")); mqtt_client = mqtt_client_new(); if (mqtt_client == NULL) { configPRINTF(("mqtt_client_new() failed.\r\n");) while (1) { } } if (ipaddr_aton(EXAMPLE_MQTT_SERVER_HOST, &mqtt_addr) && IP_IS_V4(&mqtt_addr)) { /* Already an IP address */ err = ERR_OK; } else { /* Resolve MQTT broker's host name to an IP address */ configPRINTF(("Resolving \"%s\"...\r\n", EXAMPLE_MQTT_SERVER_HOST)); err = netconn_gethostbyname(EXAMPLE_MQTT_SERVER_HOST, &mqtt_addr); configPRINTF(("Resolving status: %d.\r\n", err)); } if (err == ERR_OK) { configPRINTF(("connect to mqtt\r\n")); /* Start connecting to MQTT broker from tcpip_thread */ err = tcpip_callback(connect_to_mqtt, NULL); configPRINTF(("connect status: %d.\r\n", err)); if (err != ERR_OK) { configPRINTF(("Failed to invoke broker connection on the tcpip_thread: %d.\r\n", err)); } } else { configPRINTF(("Failed to obtain IP address: %d.\r\n", err)); } int i=0; /* Publish some messages */ for (i = 0; i < 5;) { configPRINTF(("connect status enter: %d.\r\n", connected)); if (connected) { err = tcpip_callback(publish_message_start, NULL); if (err != ERR_OK) { configPRINTF(("Failed to invoke publishing of a message on the tcpip_thread: %d.\r\n", err)); } i++; } sys_msleep(1000U); } vTaskDelete(NULL); } Please note the following published json data, it can’t be publish directly in the code. {   "reported": {     "LEDstatus": false,     "humid": 88,     "temp": 22   } } Which need to use this web https://www.bejson.com/ realize the json data compression and convert: {\"reported\" : {     \"LEDstatus\" : true,     \"humid\" : 88,     \"temp\" : 11    } } 4)main appTask Under case kCommandGeneric: , if the language is Chinese, then add the corresponding voice recognition control code. "开远程灯": turn on the local yellow light, publish the “remote led on” mqtt message to Baidu cloud, control remote 1060EVK board lights on. "关远程灯": turn on the local white light, publish the “remote led off” mqtt message to Baidu cloud, control the remote 1060EVK board light off. Related operation code: else if (oob_demo_control.ledCmd == LED_REMOTE_ON) { RGB_LED_SetColor(LED_COLOR_YELLOW); vTaskDelay(5000); err_t err = ERR_OK; err = tcpip_callback(publish_message_on, NULL); if (err != ERR_OK) { configPRINTF(("Failed to invoke publishing of a message on the tcpip_thread: %d.\r\n", err)); } } else if (oob_demo_control.ledCmd == LED_REMOTE_OFF) { RGB_LED_SetColor(LED_COLOR_WHITE); vTaskDelay(5000); err_t err = ERR_OK; err = tcpip_callback(publish_message_off, NULL); if (err != ERR_OK) { configPRINTF(("Failed to invoke publishing of a message on the tcpip_thread: %d.\r\n", err)); } } 3.2 MIMXRT1060-EVK code The main function of the MIMXRT1060-EVK code is to configure another client in the cloud, subscribe to the message published by SLN-LOCAL/2-IOT which detect the remote command, and then the LED on the control board is used to test the voice recognition remote control function, this code is based on Ethernet, through the Ethernet port on the board, to achieve network communication, and then use mqtt to connect baidu cloud, and subscribe the message from local2, This enables the reception and execution of the Local2 command. the network code part is similar to SLN-LOCAL2-IOT board network code, the servers, cloud account passwords, etc. are all the same, the main function is to subscribe messages. See the code from attachment RT1060, lwip_mqtt_freertos.c file. When receives data published by the server, it needs to do a data analysis to get the status of the led light and then control it. Normal data from Baidu cloud shadow sent as follows Received 253 bytes from the topic "$baidu/iot/shadow/RT1060BTCDShadow/update/accepted": "{"requestId":"2fc0ca29-63c0-4200-843f-e279e0f019d3","reported":{"LEDstatus":false,"humid":44,"temp":33},"desired":{},"lastUpdatedTime":{"reported":{"LEDstatus":1635240225296,"humid":1635240225296,"temp":1635240225296},"desired":{}},"profileVersion":159}" Then you need to parse the data of LEDstatus from the received data, whether it is false or true. Because the amount of data is small, there is no json-driven parsing here, just pure data parsing, adding the following parsing code to the mqtt_incoming_data_cb function: mqtt_rec_data.mqttindex = mqtt_rec_data.mqttindex + len; if(mqtt_rec_data.mqttindex >= 250) { PRINTF("kerry test \r\n"); PRINTF("idex= %d", mqtt_rec_data.mqttindex); datap = strstr((char*)mqtt_rec_data.mqttrecdata,"LEDstatus"); if(datap != NULL) { if(!strncmp(datap+11,strtrue,4))//char strtrue[]="true"; { GPIO_PinWrite(GPIO1, 3, 1U); //pull high PRINTF("\r\ntrue"); } else if(!strncmp(datap+11,strfalse,5))//char strfalse[]="false"; { GPIO_PinWrite(GPIO1, 3, 0U); //pull low PRINTF("\r\nfalse"); } } mqtt_rec_data.mqttindex =0; It use the strstr search the “LEDstatus“ in the received data, and get the pointer position, then add the fixed length to get the LED status is true or flash. If it is true, turn on the led, if it is false, turn off the led. 4 Test Result    This section gives the test results and video of the system. Before testing the voice function, first use MQTTfx to test baidu cloud connection, release, subscription is no problem, and then test sln-local2-iot combined with mimxrt1060-evk voice wake-up recognition and remote control functions.    For SLN-LOCAL2-IOT wifi hotspot join, enter the command in the print terminal: setup AWS kerry123456 4.1 MQTT.fx test baidu cloud connection MQTT.fx is an EclipsePaho-based MQTT client tool written in the Java language that supports subscription and publishing of messages through Topic.    4.1.1 MQTT fx configuration     Download and install the tool, then open it, at first, need to do the configuration, click edit connection: 19.jpg Pic19 Profile name:connect name Profile type: MQTT broker Broker address: It is the baidu could generated broker address, with 1883 no encryption transfer. Broker port:1883 No encryption Client ID: RT1060BTCDShadow, here need to note, this name should be the same as the could shadow name, otherwise, on the baidu webpage, the connection is not be detected. If this Client ID name is the same as the shadow name, then when the MQTT fx connect, the online side also can see the connection is OK. User credentials: add the thing User name and password from the baidu cloud. After the configuration, click connect, and refresh the website. Before conection: 20.jpg Pic 20 After connection: 21.jpg Pic 21 4.1.2 MQTT fx subscribe When it comes to subscription publishing, what is the topic of publishing subscriptions?  Here you can open your thing shadow, select the interaction, and see that the page has given the corresponding topic situation: 22.jpg Pic 22 Subscribe topic is: $baidu/iot/shadow/RT1060BTCDShadow/update/accepted  Publish topic is: $baidu/iot/shadow/RT1060BTCDShadow/update 23.jpg Pic 23 Click subscribe, we can see it already can used to receive the data. 4.1.3 MQTT fx publish Publish need to input the topic: $baidu/iot/shadow/RT1060BTCDShadow/update It also need to input the content, it will use the json content data. 24.jpg Pic 24 Here, we can use this json data: {   "reported" : {     "LEDstatus" : true,     "humid" : 88,     "temp" : 11    } } The json data also can use the website to check the data: https://www.bejson.com/jsonviewernew/ 25.jpg Pic 25 Input the publish data, and click pubish button: 26.jpg Pic 26 4.1.4 Publish data test result   Before publish, clean the website thing data: 27.jpg Pic 27 MQTT fx publish data, then check the subscribe data and the website situation: 28.jpg Pic 28 We can see, the published data also can be see in the website and the mqttfx subscribe area. Until now, the connection, data transfer test is OK. 4.2 Voice recognition and remote control test This is the device connection picture: 29.jpg Pic 29 4.2.1 voice recognition local control 30.jpg Pic 30 This is the SLN-LOCAL2-IOT print information after recognize the voice WW and VC. Red led on: (view in My Videos) led cycle: (view in My Videos) 4.2.2 voice recognition remote control   Following test, wakeup + remote on, wakeup+remote off, and also give the print result and the video. 31.jpg Pic 31 remote control: (view in My Videos) i.MXRT 106x
記事全体を表示
FreeMASTER 3.1.1更新 - 发布公告 NXP FreeMASTER 工具 3.1.1 版本刚刚在线发布。  此版本带来了如下所述的错误修复和小更新。您可能还想阅读最近的公告并观看 主线 版本 3.1.0 的培训 视频 。 更新后的安装程序以及文档和其他资源可在http://www.nxp.com/freemaster上获取。 发布说明 FreeMASTER是一款由恩智浦开发并提供的强大数据可视化工具,旨在帮助用户监控和控制在恩智浦目标上运行的嵌入式应用程序。它兼容几乎所有恩智浦 Arm ® Cortex ® -M 微控制器,包括边缘处理和汽车 BL,以及 DSC 和传统 Power Architecture、ColdFire 和 HCS12/Z 平台。 版本 3.1.1是 3.1 主线版本的一个小更新。如果版本 3.1.0已安装 FreeMASTER Update 3.1.1覆盖安装,并且它仍然被称为通用主线版本 3.1。旧版本 2.x 和 3.0 未被删除。 3.1.1 版向后兼容所有先前版本。它支持变量监控、示波器实时图表、快速瞬态记录仪图表以及与第三方应用程序的连接。基于 Chromium 的 HTML 渲染引擎全面支持 JSON-RPC、HTML5 和 JavaScript,可用于创建自定义仪表板和其他用户界面,这些界面可在 FreeMASTER 内部运行,也可在本地或远程 Web 浏览器中独立运行。旧版 Internet Explorer 渲染、ActiveX 接口以及为 2.x 版定义的协议也仍然受支持。 FreeMASTER Lite服务是 FreeMASTER 安装包的一部分,它为 Windows 和 Linux 系统提供了通信核心。它可以通过 JSON-RPC 接口访问,与 FreeMASTER 桌面应用程序类似。FreeMASTER Lite 3.1 还嵌入了流行的Node-RED框架,用于图形化编程,并提供了许多使用 FreeMASTER 工具的示例。您可以在专门的培训视频中找到更多关于 Node-RED 的信息。 变更 3.1.1 版本变更列表 P&E Micro Communication 插件的新版本支持最新的基于 CortexM7 的设备。该插件已从“BDM Communication”重命名为“P&E Micro Communication”,以便更好地识别支持的接口集。 新版本的Segger JLink 通信插件将 JLink 通信库更新至 6.88c 版本,并修复了在插件配置对话框中打开目标设备选择窗口时出现的问题。 ELF/DWARF 解析中添加了新选项,可以加载未使用的符号和由链接器在零(NULL)地址分配的符号。此选项默认关闭,用户必须在选项/地图文件/编辑设置对话框中启用。 项目树中的部分剪贴板支持简化了记录器、示波器和其他项目的复制和移动。目前,剪贴板命令仅在 FreeMASTER 的单个运行实例中起作用。 现在可以分配变量描述和注释文本。该描述可用作内部变量文档 - 显示在变量属性对话框中。注释文本可能会显示为变量监视视图中的新列。此列在新项目中默认可见。 错误修复及其他扩展: 修复了初始电路板探测期间与目标板的过度通信问题。当 ActiveX/JSON-RPC 客户端在初始端口打开操作期间尝试读取/写入变量时,就会发生这种情况。 修复了 PD-BDM 插件中的直接内存访问模式。这种更快的访问模式并不总是在 CortexM 平台上使用。 修复了在 ReadVariable、WriteVariable 和其他类似日志消息中记录的通信调试日志中的无效/零变量大小。 修复了应用程序启动后主窗口丢失时打开初始项目时崩溃的问题 在应用程序完全初始化之前聚焦。 修复了浮点数的 JSON-RPC 解析 - 这取决于用户区域设置,从而导致荷兰和其他环境中出现问题。JSON 解析现在强制采用英语语言环境。 修复了 ELF/DWARF 解析器,以正确识别函数内部定义的静态变量。变量现在被标识为“function::variable”。为了向后兼容,旧的“变量”命名仍然受支持,但只有在没有重复的变量名时才可用。 修复了 ELF 重新加载问题。在某些情况下,FreeMASTER 无法检测到 ELF 文件已被更改,甚至在文件更改后无法重新加载该文件。 修复了所有插件配置对话框现在将在标题栏中显示插件版本的问题 以便更轻松地跟踪与错误 DLL 注册相关的问题。 修复了从一个实例切换到另一个实例时导致冲突的记录器问题。 修复了切换到另一个管道端口时取消注册管道端口的类似管道问题。 发布的目标受众群体 FreeMASTER 和 FreeMASTER Lite 主要针对希望在运行时监控和控制其应用程序的工业、物联网和汽车领域的 NXP 嵌入式应用程序的客户、工程师和开发人员。FreeMASTER 也是一个强大的框架,可用于创建交互式演示和用户界面,帮助更广泛的目标受众使用嵌入式应用程序。 前提条件 FreeMASTER 工具在主机上运行,并使用串行、CAN、JTAG、BDM 或其他物理接口与目标微控制器应用程序通信。微控制器通信驱动程序可作为 MCUXpresso SDK、S32 Design Studio 的一部分或独立安装包提供。在使用 FreeMASTER 工具之前,请熟悉通信协议和微控制器驱动程序 API。 许可条款和条件仅允许在基于NXP微处理器或微控制器系统的系统上使用FreeMASTER。 封装 包含 FreeMASTER 桌面应用程序和新 FreeMASTER Lite 服务的单个自解压安装包可用于 Windows 平台。带有 FreeMASTER Lite 服务的软件包也适用于 Linux。 访问 FreeMASTER 主页上的安装和文档 https://www.nxp.com/freemaster。
記事全体を表示
Making Light of Small Cell Deployment     Features QorIQ Processing Platforms BSC9131 SoC based LTE small cell Zero intrusion by fitting in a lamppost’s existing photocell socket Avoids costly site acquisition and lengthy planning procedures Backhaul agnostic – Fiber, copper, PoE wireless P2P Trust architecture provides secure computing environment Block Diagram Mobile
記事全体を表示
Android ICS 4.0.4 with Hotspot on iWave's Freescale iMX6x Qseven Board iWave has now enabled the new Hotspot feature in Android ICS 4.0.4 on iMX6 Qseven board. Internet Sharing is one of the most popular concepts in wireless communication today. A device having Data Pack can share its internet connectivity with other devices, this feature is known as 'Hotspot'. By enabling Hotspot in i.MX6 Q7 evaluation board we can use the board an Access Point. Once the Device is enabled with Hotspot, all other devices (we'll call it as client devices) within the minimum coverage range will get Network SSID in their Available wireless network's list. Once connected, client devices will be provided with the internet access. Android allows tethering only if the device is provided with mobile data pack or through Ethernet. So, the Board is connected to internet using Ethernet. As security is the major consideration in wireless communication, Hotspot feature is provided with following security modes. WPA2-PSK is more secure -                      (i)Open, (ii)WPA-PSK and (iii)WPA2-PSK Implementation of Non Standard Android feature – Simultaneous Wi-Fi Station-Hotspot modes: Basic android architecture does not support simultaneous operation of Station mode and Hotspot. Now iWave is providing support for simultaneous working of Station and Hotspot, which allows sharing the available Wi-Fi connectivity, with its client devices. This feature supports, Device(iWave iMX6 Qseven development board) works as a Wi-Fi Access Point(Standard android feature) Device works as a Wi-Fi Client (Standard android feature) Device works simultaneously as a Wi-Fi AP and a client(Non-standard android feature) A Wi-Fi mobile or tablet connects to Device's Access Point(AP) Device (As a client) connects to a public AP Device bridges the two connections and enables the Wi-Fi mobile to connect to the public AP Board acts as an Access Point by enabling Hotspot feature. Then the board will act as client by switching on Wi-Fi feature and connecting to an Access Point which is connected to internet. Pros and cons: Pros: Internet connectivity sharing is possible. Hotspot is provided with Open, WPA-PSK, WPA2-PSK security modes. Network range is up to 10m. Device can act as station and as SoftAP simultaneous. Cons: Number of client devices supported is limited to 10. For further information or enquiries please write to [email protected] or visit www.iwavesystems.com General
記事全体を表示
Preserve Memory Ranges In CodeWarrior v10.6 This document shows a general way how to preserve memory range using target task in CW10.6.   I am using k64 freedom board and Segger J-link in my project as an example. K64 freedom board use MK64FN1M0 MCU which has 1 M size flash.  In my project I divide the flash into two areas in the link file as below:   /* Specify the memory areas */ MEMORY { m_interrupts       (rx) : ORIGIN = 0x00000000, LENGTH = 0x198 m_cfmprotrom       (rx) : ORIGIN = 0x00000400, LENGTH = 0x10 m_text             (rx) : ORIGIN = 0x00000800, LENGTH = 512K m_text2            (rx) : ORIGIN = 0x00080800, LENGTH = 512K - 0x800 m_data         (rwx) : ORIGIN = 0x1FFF0000, LENGTH = 64K                  /* Lower SRAM */ m_data2        (rwx) : ORIGIN = 0x20000000, LENGTH = 192K                 /* Upper SRAM */ } m_text2 is the memory area that I am trying to keep it from being erased while downloading the application to m_text memory area. Here are the steps to do this using target task in CW10.6. Add a target task view by clicking Window -> Show View -> other from menu bar, then select Debug -> Target Tasks view in the popup window. From the Target Tasks view, select “Import” from the context menu. Then select the flash (.xml) file for your target device. In this case I need to select MK64FN1M0.xml file. After that you will see a “MK64FN1M0” task in the list. Double click the task name, you will see there are two actions (“Erase” and “Program and Verify”) in the “Flash Programmer Actions” view.   The default Erase action will mass erase all flash, so I remove this action by unchecking the “Erase” action. I can add erase action in “Program and Verify” action later. Double click the “Program and Verify” action. In the popup dialog, check “Erase sectors before program” option. Check “Restrict to Addresses in this Range” option, and then specify the address range you want to program. The data/code out of this range will be preserved (will not be erased or changed). Click “Update Program Action” button to update the settings of this action. Move to Debug configurations window by clicking Run -> Debug configurations from Menu bar. Select a debug configuration, in this case I select the run configuration for Segger J-Link. Select Download tab which is under Debugger tab. By default, Standard Download will be executed and all the flash will be erased. As I am going to execute target task in this case, so uncheck “Perform Standard Download” and then check “Execute Tasks”. Click “Add” button to add a task. In this case I add K64F1M0M12 task which I created in previous step in target task view. Click “Debug” button, the application will be downloaded to flash but preserved area which was not specified in restrict flash range will not be erased. You can check this from memory view.   With the above steps, you can preserve a specified flash range while downloading application. I am using Segger J-link in my project as an example and the steps also work for other tools like P&E Multilink and USB Tap. General
記事全体を表示
Sensor Toolbox GUI Installer Rev.4.2.0.8 Here is the Installer file for the revision 4.2.0.8 of the Sensor Toolbox GUI Here is the Installer file for the revision 4.2.0.8 of the Sensor Toolbox GUI Accelerometers Pressure Sensors Touch Sensors
記事全体を表示
飞思卡尔传感器融合预发布 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 附件是用于 Kinetis MCU 的飞思卡尔传感器融合库下一版本的预发布副本。这是一个预发布版本,因为我们仍在努力更新数据表和用户指南以适应新的变化。此副本中包含的数据表和用户指南与http://www.freescale.com/sensorfusion上的当前生产版本相同。这是该库的第一个版本,提供所有源代码。该软件许可证与之前的版本相比没有变化,并在本帖末尾重新发布。如果您不同意这些许可条款,请不要下载该文件。   为了绕过社区的病毒过滤器,我不得不创建一个简单的融合工具包 zip 文件。没有安装程序。只需将其解压缩到您选择的目录中即可。   飞思卡尔 Kinetis MCU 传感器融合库预发布说明 上一个生产版本:build 417 本次发布:build 420 这是一个预发布套件。所包含的数据表和用户指南与以前的版本(版本 417)相关。更新正在进行中,很快就会发布。 同时,以下列出了(高层次的)变化。 变化: 1. 移除所有许可证检查功能 2. 融合和磁校准库现在包含在源形式中。libFusion.a 现在已经不存在了。它已被 Sources 目录中的附加文件所取代。 3. 增加了Kinetis Design Studio的模板项目 4.增加KL46Z主板支持 5. 社区支持: https://community.freescale.com/community/sensors/sensorfusion 6.数据表已更新模拟融合指标、代码大小和系统棒数量 7.“FLASH_EU”目标名称已更改为“FLASH” 8. 将品牌从“Xtrinsic”更改为“Freescale”。这导致项目前缀从“XSFK_”更改为“FSFK_”。 9. 移除了加速度计+磁力计的6轴卡尔曼滤波器(电子罗盘的实现更加高效) 10.调试数据包现在默认处于开启状态。这使得 Android 传感器融合工具包能够在开机时以正确的板显示启动。 11.以下源文件已重命名: FSL_utils.c/.h 现在是 drivers.c/.h tasks_func.c/.h 现在是 tasks.c/.h proj_config.h 现在是 build.h ProcessorExpert.c 现在是 main.c baranski_kalman.h 现在是 kalman.h 12. 许可证.h已被删除 13.为 KL46Z(无 MQXLite)添加了裸机电子罗盘实现 14.此版本将不包括所有 KDS 项目的运行配置。排列组合太多,工具正在定期更新。 勘误表: 1. 较新的 K64F Freedom 主板可以使用几种不同版本的 OpenSDA 接口。MBED 驱动程序不能正确处理闪存安全性,并且可能会暂时损坏电路板。为了使下载功能正常工作,文件名 Generated_Files/CPU_Config.h 中的 CPU_FLASH_CONFIG_FIELD 的 NV_FSEC 部分的值必须为 0xFE。Processor Expert(生成此文件)当前不支持该值。运行 Processor Expert 后,您必须手动进行更改。 2. 在KDS中第一次编译时,工具可能会生成以下错误信息:“写入APSR时未指定位掩码”。这是一个无效错误。只需构建第二次,错误就会消失。 3.MQXLite 1.1.0通过 Processor Expert 创建的错误处理了 K64F 上浮点单元的上下文切换。在交付时,这并不会出现问题,因为浮点计算通常在一个采样周期内完成。但是,如果您向该项目模板添加额外的代码,使得计算超出一个采样周期,您将得到不正确的结果(没有警告!)。MQXLite 1.1.1修复了这个问题。检查 Processor Expert 中的 MQX1 设置以查看您正在使用哪个版本。 4、I2C传输速度配置为300KHz至400KHz。在构建过程中,出现以下情况是正常的: “警告:该设备设计运行频率高达 100kHz!(SCL频率)”。 开发团队通常以更高的 I2C 频率进行操作,尽管设备数据表中并不一定保证这些频率。其他警告来自 Processor Expert 生成的 MQXLite 代码。实际的融合库被认为是干净的。 面向Kinetis MCU的Xtrinsic传感器融合库 许可证:LA_OPT50 版本 2014 年 1 月 20 日 重要提示:请完整阅读以下飞思卡尔软件许可协议(以下简称“协议”)。点击本页末尾的“我同意”按钮,即表示您接受本协议的条款,并确认您有权代表贵公司约束贵公司遵守这些条款。之后,您可以下载或安装该文件。 飞思卡尔最终用户软件许可协议 这是您(作为个人或代表您雇主行事的授权代表)与飞思卡尔半导体公司(“飞思卡尔”)之间的许可协议。它涉及您使用软件包和任何随附书面材料(“软件”)的权利。该软件包括飞思卡尔根据本许可向您提供的任何更新或错误更正或与该软件相关的文档。考虑到飞思卡尔允许您访问该软件,您同意接受本协议条款的约束。如果您不同意本协议的所有条款,请不要下载或安装该软件。如果您稍后改变主意,请停止使用该软件并删除您拥有或控制的该软件的所有副本。您已经分发的任何软件副本(在允许的情况下且不会销毁)将继续受本协议的管辖。您之前的使用也将继续受本协议的约束。 1.许可授予。仅就被许可方开发和销售包含飞思卡尔直接或间接提供的飞思卡尔Xtrinsic传感器解决方案(例如,任何分立或组合外形的加速度计、磁力计和陀螺仪)(“飞思卡尔系统”)的产品或与使用飞思卡尔系统有关的教育计划而言,飞思卡尔授予您免费、非排他性、不可转让的权利:(1) 使用软件;(2) 复制软件;(3) 编写软件的衍生作品;(4) 将软件及其衍生作品以对象(机器可读)形式作为飞思卡尔系统的一部分分发;以及 (5) 将使用飞思卡尔系统中包含的分发软件的权利再授权给他人。如果您违反本协议的任何条款或限制,飞思卡尔可立即终止本协议,并要求您停止使用并删除您拥有或控制的该软件的所有副本。上述授予的任何许可仅适用于飞思卡尔的知识产权,而飞思卡尔向您提供并在授予的许可范围内使用的软件必然会侵犯该知识产权。您必须告知飞思卡尔所获得的任何结果,包括任何问题或建议的改进。飞思卡尔保留以其认为适当的任何方式使用此类结果和相关信息的权利。 2.其他限制。根据上述许可授予,适用以下限制: a. 飞思卡尔保留本文未明确授予的所有权利。 b.除非本协议另有明确约定,否则您不得出租、租赁、再许可、出借或抵押本软件 c.您不得分发、制造、让人制造、再授权或以其他方式复制该软件用于本协议规定以外的目的。 d.您不得删除或更改许可软件中包含的任何专有图例、声明或商标, e. 本协议的条款和条件将适用于飞思卡尔自行决定向您提供的任何软件更新,用于替换和/或补充原始软件,除非此类更新包含单独的许可。 f.您不得对仅以目标代码格式(机器可读)提供给您的软件进行翻译、反向工程、反编译或反汇编,除非适用法律明确禁止此类限制。您将禁止您的再许可人翻译、逆向工程、反编译或反汇编该软件,除非适用法律明确禁止此类限制。 3.开源。此处许可的软件中包含的任何开源软件均不根据本协议的条款进行许可,而是根据适用的开源许可证的条款进行许可,例如 BSD 许可证、Apache 许可证或宽 GNU 通用公共许可证。您对此类开源软件的使用须遵守每个适用许可的条款。您必须同意每个适用许可的条款,否则您不应使用开源软件。 4.版权。该软件仅授权给您,而非出售给您。飞思卡尔拥有该软件,并且美国版权法和国际条约规定保护该软件。因此,您必须像对待其他受版权保护的材料(例如书籍或音乐录音)一样对待该软件。您不得将本软件用于本协议所述目的以外的任何其他目的。除非本文另有明确规定,飞思卡尔不授予您任何飞思卡尔或第三方专利、版权、商标或商业秘密下的任何明示或暗示的权利。此外,您必须复制并应用软件中包含或嵌入的任何版权或其他所有权声明,以用于其全部或部分副本(如果有)。您不得删除软件中包含的任何飞思卡尔版权声明。 5.期限和终止。本协议期限自安装或下载之日起开始,直至根据本协议终止为止。如果您违反本协议的任何条款或限制,飞思卡尔有权在不另行通知的情况下终止本协议,并要求您停止使用并删除您拥有或控制的该软件的所有副本。如果任何软件成为或根据飞思卡尔的合理意见可能成为知识产权侵权或商业秘密盗用的索赔对象,飞思卡尔可终止本协议。一旦终止,您必须停止使用并销毁该软件,并以书面形式向飞思卡尔确认遵守规定。一旦终止,根据本协议授予的许可立即终止,第 4 至 18 条的规定在本协议终止后仍然有效。 6.支持。飞思卡尔没有义务提供该软件的任何支持、升级或新版本。如果您愿意,您可以联系飞思卡尔并报告问题并提供有关软件的建议。飞思卡尔不承担以任何方式回应此类问题报告或建议的任何义务。飞思卡尔可能随时对软件进行更改,并且没有义务通知您或向您提供软件的更新版本。 7.无担保。在法律允许的最大范围内,飞思卡尔明确否认对该软件的任何担保。该软件按“原样”提供,不附带任何明示或暗示的保证,包括但不限于适销性、适用于特定用途或非侵权的暗示保证。您承担因使用或执行该软件或使用该软件设计的任何系统(如果有)而产生的全部风险。本协议中的任何内容均不得解释为飞思卡尔对软件或使用该软件开发的或包含该软件的任何衍生作品不会侵犯第三方知识产权的保证或陈述。 8.赔偿。您同意就与 (1) 您使用(包括您的再许可人的使用,如果允许)该软件或 (2) 您违反本协议的条款和条件相关的任何及所有索赔、责任和费用(包括合理的律师费)向飞思卡尔进行全面辩护和赔偿。 9.责任限制。在任何情况下,飞思卡尔均不承担任何合同、侵权或其他方面的责任,对于任何偶然、特殊、间接、后果性或惩罚性损害,包括但不限于因使用损失、时间损失、不便、商业损失、利润损失、储蓄损失或收入损失而造成的损害,即使事先被告知有此类损害的可能性,在法律可以完全免责的范围内。在任何情况下,根据任何追偿理论,飞思卡尔的责任仅限于飞思卡尔根据本协议收到的总金额。 10.遵守法律;出口限制。未获得美国政府和出口或再出口国家/地区的适当出口或再出口许可,您不得以任何形式转售、再出口或直接或间接提供许可软件或其直接产品。当产品、技术或软件通过任何方式从一个国家转移到另一个国家时,就会发生出口,包括实物运输、FTP 文件传输、电子邮件、传真、远程服务器访问、对话等。当技术或软件被转让给美国的外国人或开展商业活动所在国的外国人时,也会发生出口。外国人是指既不是美国公民也不是永久居民的人,也不是开展商业活动所在国的公民。此外,如果需要获得出口/进口许可证、许可或其他政府要求的授权(统称为“政府授权”)才能将技术、软件、硬件或其他飞思卡尔财产转让给非飞思卡尔方,但未获批准,则飞思卡尔没有义务在获得此类“政府授权”之前根据本协议转让软件。 11.政府权利。许可软件是 48 CFR §2.101 中定义的“商业物品”,包括“商业计算机软件”和“商业计算机软件文档”,这些术语在 48 CFR § 12.212 或 48 CFR §227.7202 中适用,并且仅授权给美国政府最终用户,并享有本文所述的权利。 12.高风险活动。您承认本软件不具备容错功能,并且飞思卡尔设计、制造或预期不会将其纳入到旨在用于或转售在危险、危及生命或可能危及生命的环境中的在线控制设备的产品中,这些环境需要故障安全性能,例如在核设施、飞机导航或通信系统、空中交通管制、直接生命支持机器或武器系统的运行中,在这些环境中,产品故障可能直接导致死亡、人身伤害或严重的物理或环境损害(“高风险活动”)。您明确表示并保证您不会将本软件或本软件的任何衍生作品用于高风险活动。 13.法律选择;地点;限制。您同意,美国和美国德克萨斯州的法规和法律(不考虑法律冲突原则)将适用于与本协议或软件相关的所有事项,并且您同意任何诉讼均受美国德克萨斯州的州或联邦法院的专属管辖。您同意,无论任何相反的法令或法律如何规定,因本协议或软件引起的或与之相关的任何索赔或诉讼事由必须在该索赔或诉讼事由发生后一 (1) 年内提出,否则将永远丧失诉讼资格。 14.机密信息。您必须将本软件视为机密信息,并同意对软件的源代码形式(人类可读)永久保密,或对软件的所有其他部分在本协议终止之日起五 (5) 年内保密。在此期间,您不得向除需要了解该软件并已签署书面协议要求其至少以与本协议相同的谨慎程度保护此类许可软件的员工以外的任何人披露该软件的任何部分。您同意对软件采取与对待您自己的机密信息相同程度的谨慎,但不低于合理的谨慎程度。您可以在法院或法律或命令要求的范围内披露软件,前提是您在披露之前通知飞思卡尔此类要求,您仅披露所需的信息,并且您允许飞思卡尔有机会对要求此类披露的法院或其他法律机构提出异议。 15.产品标签。您无权使用任何飞思卡尔商标、品牌名称或徽标。 16.完整协议。本协议构成您与飞思卡尔之间关于本协议标的的完整协议,并取代所有先前的沟通、谈判、谅解、协议或陈述(如有),无论是书面的还是口头的。本协议仅可由您和飞思卡尔以书面形式修改。 17.可分割性。如果本协议的任何条款因任何原因被认定为无效或不可执行,则本协议的其余条款将不受影响,并且,除非对无效或不可执行条款的修改或替换被进一步认定为剥夺您或飞思卡尔的实质性利益(在这种情况下,本协议将立即终止),无效或不可执行的条款将被替换为有效、可执行且最接近无效或不可执行条款意图的条款。 18.不放弃。飞思卡尔对违反本协议任何条款的行为的放弃并不构成或被解释为对任何其他或后续违反相同或不同条款的行为的放弃。 © 2004-2014 飞思卡尔半导体公司版权所有。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 附件是用于 Kinetis MCU 的飞思卡尔传感器融合库下一版本的预发布副本。这是一个预发布版本,因为我们仍在努力更新数据表和用户指南以适应新的变化。此副本中包含的数据表和用户指南与http://www.freescale.com/sensorfusion上的当前生产版本相同。这是该库的第一个版本,提供所有源代码。该软件许可证与之前的版本相比没有变化,并在本帖末尾重新发布。如果您不同意这些许可条款,请不要下载该文件。   为了绕过社区的病毒过滤器,我不得不创建一个简单的融合工具包 zip 文件。没有安装程序。只需将其解压缩到您选择的目录中即可。   飞思卡尔 Kinetis MCU 传感器融合库预发布说明 上一个生产版本:build 417 本次发布:build 420 这是一个预发布套件。所包含的数据表和用户指南与以前的版本(版本 417)相关。更新正在进行中,很快就会发布。 同时,以下列出了(高层次的)变化。 变化: 1. 移除所有许可证检查功能 2. 融合和磁校准库现在包含在源形式中。libFusion.a 现在已经不存在了。它已被 Sources 目录中的附加文件所取代。 3. 增加了Kinetis Design Studio的模板项目 4.增加KL46Z主板支持 5. 社区支持: https://community.freescale.com/community/sensors/sensorfusion 6.数据表已更新模拟融合指标、代码大小和系统棒数量 7.“FLASH_EU”目标名称已更改为“FLASH” 8. 将品牌从“Xtrinsic”更改为“Freescale”。这导致项目前缀从“XSFK_”更改为“FSFK_”。 9. 移除了加速度计+磁力计的6轴卡尔曼滤波器(电子罗盘的实现更加高效) 10.调试数据包现在默认处于开启状态。这使得 Android 传感器融合工具包能够在开机时以正确的板显示启动。 11.以下源文件已重命名: FSL_utils.c/.h 现在是 drivers.c/.h tasks_func.c/.h 现在是 tasks.c/.h proj_config.h 现在是 build.h ProcessorExpert.c 现在是 main.c baranski_kalman.h 现在是 kalman.h 12. 许可证.h已被删除 13.为 KL46Z(无 MQXLite)添加了裸机电子罗盘实现 14.此版本将不包括所有 KDS 项目的运行配置。排列组合太多,工具正在定期更新。 勘误表: 1. 较新的 K64F Freedom 主板可以使用几种不同版本的 OpenSDA 接口。MBED 驱动程序不能正确处理闪存安全性,并且可能会暂时损坏电路板。为了使下载功能正常工作,文件名 Generated_Files/CPU_Config.h 中的 CPU_FLASH_CONFIG_FIELD 的 NV_FSEC 部分的值必须为 0xFE。Processor Expert(生成此文件)当前不支持该值。运行 Processor Expert 后,您必须手动进行更改。 2. 在KDS中第一次编译时,工具可能会生成以下错误信息:“写入APSR时未指定位掩码”。这是一个无效错误。只需构建第二次,错误就会消失。 3.MQXLite 1.1.0通过 Processor Expert 创建的错误处理了 K64F 上浮点单元的上下文切换。在交付时,这并不会出现问题,因为浮点计算通常在一个采样周期内完成。但是,如果您向该项目模板添加额外的代码,使得计算超出一个采样周期,您将得到不正确的结果(没有警告!)。MQXLite 1.1.1修复了这个问题。检查 Processor Expert 中的 MQX1 设置以查看您正在使用哪个版本。 4、I2C传输速度配置为300KHz至400KHz。在构建过程中,出现以下情况是正常的: “警告:该设备设计运行频率高达 100kHz!(SCL频率)”。 开发团队通常以更高的 I2C 频率进行操作,尽管设备数据表中并不一定保证这些频率。其他警告来自 Processor Expert 生成的 MQXLite 代码。实际的融合库被认为是干净的。 面向Kinetis MCU的Xtrinsic传感器融合库 许可证:LA_OPT50 版本 2014 年 1 月 20 日 重要提示:请完整阅读以下飞思卡尔软件许可协议(以下简称“协议”)。点击本页末尾的“我同意”按钮,即表示您接受本协议的条款,并确认您有权代表贵公司约束贵公司遵守这些条款。之后,您可以下载或安装该文件。 飞思卡尔最终用户软件许可协议 这是您(作为个人或代表您雇主行事的授权代表)与飞思卡尔半导体公司(“飞思卡尔”)之间的许可协议。它涉及您使用软件包和任何随附书面材料(“软件”)的权利。该软件包括飞思卡尔根据本许可向您提供的任何更新或错误更正或与该软件相关的文档。考虑到飞思卡尔允许您访问该软件,您同意接受本协议条款的约束。如果您不同意本协议的所有条款,请不要下载或安装该软件。如果您稍后改变主意,请停止使用该软件并删除您拥有或控制的该软件的所有副本。您已经分发的任何软件副本(在允许的情况下且不会销毁)将继续受本协议的管辖。您之前的使用也将继续受本协议的约束。 1.许可授予。仅就被许可方开发和销售包含飞思卡尔直接或间接提供的飞思卡尔Xtrinsic传感器解决方案(例如,任何分立或组合外形的加速度计、磁力计和陀螺仪)(“飞思卡尔系统”)的产品或与使用飞思卡尔系统有关的教育计划而言,飞思卡尔授予您免费、非排他性、不可转让的权利:(1) 使用软件;(2) 复制软件;(3) 编写软件的衍生作品;(4) 将软件及其衍生作品以对象(机器可读)形式作为飞思卡尔系统的一部分分发;以及 (5) 将使用飞思卡尔系统中包含的分发软件的权利再授权给他人。如果您违反本协议的任何条款或限制,飞思卡尔可立即终止本协议,并要求您停止使用并删除您拥有或控制的该软件的所有副本。上述授予的任何许可仅适用于飞思卡尔的知识产权,而飞思卡尔向您提供并在授予的许可范围内使用的软件必然会侵犯该知识产权。您必须告知飞思卡尔所获得的任何结果,包括任何问题或建议的改进。飞思卡尔保留以其认为适当的任何方式使用此类结果和相关信息的权利。 2.其他限制。根据上述许可授予,适用以下限制: a. 飞思卡尔保留本文未明确授予的所有权利。 b.除非本协议另有明确约定,否则您不得出租、租赁、再许可、出借或抵押本软件 c.您不得分发、制造、让人制造、再授权或以其他方式复制该软件用于本协议规定以外的目的。 d.您不得删除或更改许可软件中包含的任何专有图例、声明或商标, e. 本协议的条款和条件将适用于飞思卡尔自行决定向您提供的任何软件更新,用于替换和/或补充原始软件,除非此类更新包含单独的许可。 f.您不得对仅以目标代码格式(机器可读)提供给您的软件进行翻译、反向工程、反编译或反汇编,除非适用法律明确禁止此类限制。您将禁止您的再许可人翻译、逆向工程、反编译或反汇编该软件,除非适用法律明确禁止此类限制。 3.开源。此处许可的软件中包含的任何开源软件均不根据本协议的条款进行许可,而是根据适用的开源许可证的条款进行许可,例如 BSD 许可证、Apache 许可证或宽 GNU 通用公共许可证。您对此类开源软件的使用须遵守每个适用许可的条款。您必须同意每个适用许可的条款,否则您不应使用开源软件。 4.版权。该软件仅授权给您,而非出售给您。飞思卡尔拥有该软件,并且美国版权法和国际条约规定保护该软件。因此,您必须像对待其他受版权保护的材料(例如书籍或音乐录音)一样对待该软件。您不得将本软件用于本协议所述目的以外的任何其他目的。除非本文另有明确规定,飞思卡尔不授予您任何飞思卡尔或第三方专利、版权、商标或商业秘密下的任何明示或暗示的权利。此外,您必须复制并应用软件中包含或嵌入的任何版权或其他所有权声明,以用于其全部或部分副本(如果有)。您不得删除软件中包含的任何飞思卡尔版权声明。 5.期限和终止。本协议期限自安装或下载之日起开始,直至根据本协议终止为止。如果您违反本协议的任何条款或限制,飞思卡尔有权在不另行通知的情况下终止本协议,并要求您停止使用并删除您拥有或控制的该软件的所有副本。如果任何软件成为或根据飞思卡尔的合理意见可能成为知识产权侵权或商业秘密盗用的索赔对象,飞思卡尔可终止本协议。一旦终止,您必须停止使用并销毁该软件,并以书面形式向飞思卡尔确认遵守规定。一旦终止,根据本协议授予的许可立即终止,第 4 至 18 条的规定在本协议终止后仍然有效。 6.支持。飞思卡尔没有义务提供该软件的任何支持、升级或新版本。如果您愿意,您可以联系飞思卡尔并报告问题并提供有关软件的建议。飞思卡尔不承担以任何方式回应此类问题报告或建议的任何义务。飞思卡尔可能随时对软件进行更改,并且没有义务通知您或向您提供软件的更新版本。 7.无担保。在法律允许的最大范围内,飞思卡尔明确否认对该软件的任何担保。该软件按“原样”提供,不附带任何明示或暗示的保证,包括但不限于适销性、适用于特定用途或非侵权的暗示保证。您承担因使用或执行该软件或使用该软件设计的任何系统(如果有)而产生的全部风险。本协议中的任何内容均不得解释为飞思卡尔对软件或使用该软件开发的或包含该软件的任何衍生作品不会侵犯第三方知识产权的保证或陈述。 8.赔偿。您同意就与 (1) 您使用(包括您的再许可人的使用,如果允许)该软件或 (2) 您违反本协议的条款和条件相关的任何及所有索赔、责任和费用(包括合理的律师费)向飞思卡尔进行全面辩护和赔偿。 9.责任限制。在任何情况下,飞思卡尔均不承担任何合同、侵权或其他方面的责任,对于任何偶然、特殊、间接、后果性或惩罚性损害,包括但不限于因使用损失、时间损失、不便、商业损失、利润损失、储蓄损失或收入损失而造成的损害,即使事先被告知有此类损害的可能性,在法律可以完全免责的范围内。在任何情况下,根据任何追偿理论,飞思卡尔的责任仅限于飞思卡尔根据本协议收到的总金额。 10.遵守法律;出口限制。未获得美国政府和出口或再出口国家/地区的适当出口或再出口许可,您不得以任何形式转售、再出口或直接或间接提供许可软件或其直接产品。当产品、技术或软件通过任何方式从一个国家转移到另一个国家时,就会发生出口,包括实物运输、FTP 文件传输、电子邮件、传真、远程服务器访问、对话等。当技术或软件被转让给美国的外国人或开展商业活动所在国的外国人时,也会发生出口。外国人是指既不是美国公民也不是永久居民的人,也不是开展商业活动所在国的公民。此外,如果需要获得出口/进口许可证、许可或其他政府要求的授权(统称为“政府授权”)才能将技术、软件、硬件或其他飞思卡尔财产转让给非飞思卡尔方,但未获批准,则飞思卡尔没有义务在获得此类“政府授权”之前根据本协议转让软件。 11.政府权利。许可软件是 48 CFR §2.101 中定义的“商业物品”,包括“商业计算机软件”和“商业计算机软件文档”,这些术语在 48 CFR § 12.212 或 48 CFR §227.7202 中适用,并且仅授权给美国政府最终用户,并享有本文所述的权利。 12.高风险活动。您承认本软件不具备容错功能,并且飞思卡尔设计、制造或预期不会将其纳入到旨在用于或转售在危险、危及生命或可能危及生命的环境中的在线控制设备的产品中,这些环境需要故障安全性能,例如在核设施、飞机导航或通信系统、空中交通管制、直接生命支持机器或武器系统的运行中,在这些环境中,产品故障可能直接导致死亡、人身伤害或严重的物理或环境损害(“高风险活动”)。您明确表示并保证您不会将本软件或本软件的任何衍生作品用于高风险活动。 13.法律选择;地点;限制。您同意,美国和美国德克萨斯州的法规和法律(不考虑法律冲突原则)将适用于与本协议或软件相关的所有事项,并且您同意任何诉讼均受美国德克萨斯州的州或联邦法院的专属管辖。您同意,无论任何相反的法令或法律如何规定,因本协议或软件引起的或与之相关的任何索赔或诉讼事由必须在该索赔或诉讼事由发生后一 (1) 年内提出,否则将永远丧失诉讼资格。 14.机密信息。您必须将本软件视为机密信息,并同意对软件的源代码形式(人类可读)永久保密,或对软件的所有其他部分在本协议终止之日起五 (5) 年内保密。在此期间,您不得向除需要了解该软件并已签署书面协议要求其至少以与本协议相同的谨慎程度保护此类许可软件的员工以外的任何人披露该软件的任何部分。您同意对软件采取与对待您自己的机密信息相同程度的谨慎,但不低于合理的谨慎程度。您可以在法院或法律或命令要求的范围内披露软件,前提是您在披露之前通知飞思卡尔此类要求,您仅披露所需的信息,并且您允许飞思卡尔有机会对要求此类披露的法院或其他法律机构提出异议。 15.产品标签。您无权使用任何飞思卡尔商标、品牌名称或徽标。 16.完整协议。本协议构成您与飞思卡尔之间关于本协议标的的完整协议,并取代所有先前的沟通、谈判、谅解、协议或陈述(如有),无论是书面的还是口头的。本协议仅可由您和飞思卡尔以书面形式修改。 17.可分割性。如果本协议的任何条款因任何原因被认定为无效或不可执行,则本协议的其余条款将不受影响,并且,除非对无效或不可执行条款的修改或替换被进一步认定为剥夺您或飞思卡尔的实质性利益(在这种情况下,本协议将立即终止),无效或不可执行的条款将被替换为有效、可执行且最接近无效或不可执行条款意图的条款。 18.不放弃。飞思卡尔对违反本协议任何条款的行为的放弃并不构成或被解释为对任何其他或后续违反相同或不同条款的行为的放弃。 © 2004-2014 飞思卡尔半导体公司版权所有。 传感器融合 回复:飞思卡尔传感器融合预发布 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 是否有计划发布非 Windows KDS 实现的库?
記事全体を表示
使用 GCC C++ 创建新的 MQX 项目 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 附件文档解释了如何使用带有 GCC 编译器 MQX 4.1 的 CW10.6 创建 C++ 项目。 此致, 卡洛斯 回复:使用 GCC C++ 创建新的 MQX 项目 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 谢谢卡洛斯。我没有意识到我可以将服务请求功能用于除可以 100% 重现的实际错误或明显是 KSDK 的问题之外的任何其他问题。 好消息是,我有一个使用 MQX 和 PEx 运行 C++ 代码的程序,它似乎可以工作并且几乎没有不便。我将测试一些用于 FSL 设备驱动程序的 C++ 包装器类,我们将看看本周的进展情况。谢谢! 回复:使用 GCC C++ 创建新的 MQX 项目 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 对于此类问题,我强烈建议您在我们的网页www.freescale.com/support上提交服务请求 我是支持团队的一员,我或我的任何同事都可以在我们这边查看它。 卡洛斯 回复:使用 GCC C++ 创建新的 MQX 项目 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 好的,在我进行初步测试后,您介意查看一下我的项目吗?我将创建一个 KSDK/PEx/MQX 项目,转换为 C++,然后看看是否可以做一些简单的事情,比如在我的 FRDM-K64F 上闪烁 LED。如果这不起作用,我希望能够将其提交给某人进行审核。谢谢! 回复:使用 GCC C++ 创建新的 MQX 项目 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 我知道该如何让一切正常运转,但我有一块带以太网的 MK64FN1M0VLL12 板,并且想使用 KDS3/KSDK1.2 中的处理器专家来创建我的任务。我将使用 OS_Task 组件,但代码生成会创建 C 文件,而不是 CPP。我认为这不是什么大问题,只要我将所有内容转换过来,然后禁用 MQX 的代码生成。所以我的计划是提前创建一些额外的任务,即使我不会使用它们。然后,当需要发布代码时,我只需删除未使用的任务即可。似乎先创建更多任务然后禁用代码生成,然后再删除未使用的代码更容易。你同意吗? 在这种情况下,您是否能够制作一个“演练”文档,该文档采用处理器和最新的工具链,并展示如何在 C++ 项目中运行 MQX?我计划本周解决这个问题,所以如果你不能制作文档,我就可以去做,如果遇到问题,我会在这里发布问题。 回复:使用 GCC C++ 创建新的 MQX 项目 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 卡洛斯,您是否有在 KDS 3.0 / KSDK 1.2 下使用 C++ 的 MQX 示例?使用 Processor Expert 吗?
記事全体を表示
Test to keep u-boot logo util system screen on. This is only a test of keep u-boot logo util  yocto system screen on for some request validation. HW : 8mn-ddr4-evk. SW:  8mn 4.14.98ga-2.2.0 release. 1. patch 2 u-boot patchs. 2. patch kernel patch. 3. changed kernel config to remove  CONFIG_FRAMEBUFFER_CONSOLE and  CONFIG_LOGO.
記事全体を表示
ビデオ・チュートリアル:FRDM-K64Fプロジェクト(Kinetis SDK + Processor Expert + OpenOCDデバッグ) <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> SDK + Processor Expert for FRDM-K64Fを使用したプロジェクト作成の動画です。SDKはCPU_MK64FN1M0VLL12導関数のみをサポートしているため、コンパイラの設定が変更されます。次に、Processor Expert CPUタイプがボード上のチップに変更され、さらにピンマルチプレクシングが更新されます。最後に、プロジェクトはOpenOCDとCMSIS-DAPでデバッグされます。 (マイビデオで視聴) 全般
記事全体を表示
Using Sensors for Low-Power IoT Applications: Tips and Tricks This session will cover in detail some of today's most popular IoT sensing applications such as Asset Tracking, Machine Condition Monitoring, Activity Monitoring, Keyfob, Smart Door, Smart Ball, Inhaler, HVAC, etc. This will involve showcasing NXP's demos/reference designs to explain the execution of some key applications. It will also cover low-power techniques on implementing the above applications. This session will cover in detail some of today's most popular IoT sensing applications such as Asset Tracking, Machine Condition Monitoring, Activity Monitoring, Keyfob, Smart Door, Smart Ball, Inhaler, HVAC, etc. This will involve showcasing NXP's demos/reference designs to explain the execution of some key applications. It will also cover low-power techniques on implementing the above applications.
記事全体を表示
Developing LwIP Application with Sequential API LwIP can be used in two basic modes: Mainloop mode (“NO_SYS”)(no OS/RTOS running on target system) or OS mode (TCPIP thread) (there is an OS running on the target system). In mainloop mode, only raw API can be used. In OS mode, raw API and sequential APIs can be used. In OS mode, the lwip stack and the application run in separate tasks. The application communicates with the LwIP stack through sequential API calls that sue the RTOS mailbox mechaniam for inter-process communicatioin. This post is focusing on how to design a LwIP applicatioin in OS mode with sequential API in MCUXpresso SDK. It is for LwIP beginners. The code snipperts is from MCUXpresso SDK2.6. For how to design a LwIP applicaton in mainloop mode (bare metal mode) with raw API, please refer to below link: Developing LwIP Applications with Raw API   Generally, a LwIP application inlcudes network interface setting up, LwIP stack initialization , using LwIP API, and configuration. 1. Starting a network interface To create a new network interface, the user allocates space for a new struct netif (but does not initialize any part of it) and calls netifapi_netif_add:     IP4_ADDR(&fsl_netif0_ipaddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3);     IP4_ADDR(&fsl_netif0_netmask, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3); IP4_ADDR(&fsl_netif0_gw, configGW_ADDR0, configGW_ADDR1, configGW_ADDR2, configGW_ADDR3);       netifapi_netif_add(&fsl_netif0, &fsl_netif0_ipaddr, &fsl_netif0_netmask, &fsl_netif0_gw, &fsl_enet_config0,                        ethernetif0_init, tcpip_input); Pass tcpip_input API to netif_add API as input callback function that is called to pass ingress packets up in the protocol layer stack next we need to bring the interface up An interface that is “up” is available to your application for input and output, and “down” is the opposite state. Therefore, before you can use the interface, you must bring it up. This can be accomplished depending on how the interface gets its IP address.  We can use static IP address  or DHCP. Set the network interface as the default network interface netifapi_netif_set_default(&fsl_netif0);   Bring the interface up, available for processing     netifapi_netif_set_up(&fsl_netif0); 2. Initializing LwIP stack   Call tcpip_init to create tcpip_thread, this thread has exclusive access to LwIP core functions. Other threads communicate with this thread using message boxes. It also starts all the timers to make sure they are running in the right thread context.   tcpip_init(NULL, NULL);   void   tcpip_init(tcpip_init_done_fn initfunc, void *arg) {   lwip_init();     tcpip_init_done = initfunc;   tcpip_init_done_arg = arg;   if (sys_mbox_new(&tcpip_mbox, TCPIP_MBOX_SIZE) != ERR_OK) {     LWIP_ASSERT("failed to create tcpip_thread mbox", 0);   } #if LWIP_TCPIP_CORE_LOCKING   if (sys_mutex_new(&lock_tcpip_core) != ERR_OK) {     LWIP_ASSERT("failed to create lock_tcpip_core", 0);   } #endif /* LWIP_TCPIP_CORE_LOCKING */     sys_thread_new(TCPIP_THREAD_NAME, tcpip_thread, NULL, TCPIP_THREAD_STACKSIZE, TCPIP_THREAD_PRIO); } Priority of user task should not exceed the priority of tcpip_thread   - In lwipopts.h, the priority of tcpip_thread     #define TCPIP_THREAD_PRIO              2 3. Using sequential API  As shown in the below figure, the steps for establishing a TCP connection on the client side are the following: Create a connection using the netconn_new() function; Connect to the address of the server using the netconn_connect() function; Send and receive data by means of the netconn_recv() and netconn_write() functions. Close the connection by means of the netconn_close() function. The steps involved in establishing a TCP connection on the server side are as follows: Create a TCP connection with the netconn_new() function; Bind the server to an address using the netconn_bind() function; Listen for connections with the netconn_listen() function; Accept a connection with the netconn_accept() function. This call typically blocks until a client connects with the server. Send and receive data by means of netconn_write() and netconn_recv(). Close the connection by means of the netconn_close() function. Middleware/lwip/contrib/appa/tcpecho/tcpecho.c static void tcpecho_thread(void *arg) {   struct netconn *conn, *newconn;   err_t err;   LWIP_UNUSED_ARG(arg);     /* Create a new connection identifier. */   /* Bind connection to well known port number 7. */ #if LWIP_IPV6   conn = netconn_new(NETCONN_TCP_IPV6);   netconn_bind(conn, IP6_ADDR_ANY, 7); #else /* LWIP_IPV6 */   conn = netconn_new(NETCONN_TCP);   netconn_bind(conn, IP_ADDR_ANY, 7); #endif /* LWIP_IPV6 */   LWIP_ERROR("tcpecho: invalid conn", (conn != NULL), return;);     /* Tell connection to go into listening mode. */   netconn_listen(conn);     while (1) {       /* Grab new connection. */     err = netconn_accept(conn, &newconn);     /*printf("accepted new connection %p\n", newconn);*/     /* Process the new connection. */     if (err == ERR_OK) {       struct netbuf *buf;       void *data;       u16_t len;             while ((err = netconn_recv(newconn, &buf)) == ERR_OK) {         /*printf("Recved\n");*/         do {              netbuf_data(buf, &data, &len);              err = netconn_write(newconn, data, len, NETCONN_COPY); #if 0             if (err != ERR_OK) {               printf("tcpecho: netconn_write: error \"%s\"\n", lwip_strerr(err));             } #endif         } while (netbuf_next(buf) >= 0);         netbuf_delete(buf);       }       /*printf("Got EOF, looping\n");*/       /* Close connection and discard connection identifier. */       netconn_close(newconn);       netconn_delete(newconn);     }   } } From the tcpecho thread, we can see First, one new TCP connection was called with parameter NETCONN_TCP  by API netconn_new. #define netconn_new(t)                  netconn_new_with_proto_and_callback(t, 0, NULL) struct netconn * netconn_new_with_proto_and_callback(enum netconn_type t, u8_t proto, netconn_callback callback) {   struct netconn *conn;   API_MSG_VAR_DECLARE(msg);   API_MSG_VAR_ALLOC_RETURN_NULL(msg);     conn = netconn_alloc(t, callback);   if (conn != NULL) {     err_t err;       API_MSG_VAR_REF(msg).msg.n.proto = proto;     API_MSG_VAR_REF(msg).conn = conn;     err = netconn_apimsg(lwip_netconn_do_newconn, &API_MSG_VAR_REF(msg));     if (err != ERR_OK) {       LWIP_ASSERT("freeing conn without freeing pcb", conn->pcb.tcp == NULL);       LWIP_ASSERT("conn has no recvmbox", sys_mbox_valid(&conn->recvmbox)); #if LWIP_TCP       LWIP_ASSERT("conn->acceptmbox shouldn't exist", !sys_mbox_valid(&conn->acceptmbox)); #endif /* LWIP_TCP */ #if !LWIP_NETCONN_SEM_PER_THREAD       LWIP_ASSERT("conn has no op_completed", sys_sem_valid(&conn->op_completed));       sys_sem_free(&conn->op_completed); #endif /* !LWIP_NETCONN_SEM_PER_THREAD */       sys_mbox_free(&conn->recvmbox);       memp_free(MEMP_NETCONN, conn);       API_MSG_VAR_FREE(msg);       return NULL;     }   }   API_MSG_VAR_FREE(msg);   return conn; }   Then, the newly created connection is then bound to port 7 (echo protocol) by calling the API function netconn_bind.   Next, the application starts the listening process on the connection by calling the API function netconn_listen. In the infinite while(1) loop, the application waits for a new connection by calling the API function netconn_accept. This API will block the application task when there is no incoming connection. When there is an incoming connection, the application can start receiving data by calling the API function netconn_recv. Incoming data are received in a netbuf.       Application can get the received data by calling the netbuf API function netbuf_data. err_t netbuf_data(struct netbuf *buf, void **dataptr, u16_t *len) {   LWIP_ERROR("netbuf_data: invalid buf", (buf != NULL), return ERR_ARG;);   LWIP_ERROR("netbuf_data: invalid dataptr", (dataptr != NULL), return ERR_ARG;);   LWIP_ERROR("netbuf_data: invalid len", (len != NULL), return ERR_ARG;);     if (buf->ptr == NULL) {     return ERR_BUF;   }   *dataptr = buf->ptr->payload;   *len = buf->ptr->len;   return ERR_OK; }   The received data is sent back (echoed) to the remote TCP client by calling the API function netconn_write. Netconn_close and netconn_delete are used to respectively close and delete the netconn connection     4. Configuration LwIP lwipopts.h is a user file that you can use to fully configure lwIP and all of its modules. You do not need to define every option that lwIP provides; if you do not define an option, a default value will be used. Therefore, your lwipopts.h provides a way to override much of the behavior of lwIP. In multi theads mode, . We need to #define NO_SYS to 0. Please refer to evkbimxrt1050_lwip_tcpecho_freertos\source\lwipopts.h … #if USE_RTOS   /**  * SYS_LIGHTWEIGHT_PROT==1: if you want inter-task protection for certain  * critical regions during buffer allocation, deallocation and memory  * allocation and deallocation.  */ #define SYS_LIGHTWEIGHT_PROT 1   /**  * NO_SYS==0: Use RTOS  */ #define NO_SYS 0 /**  * LWIP_NETCONN==1: Enable Netconn API (require to use api_lib.c)  */ #define LWIP_NETCONN 1 /**  * LWIP_SOCKET==1: Enable Socket API (require to use sockets.c)  */ #define LWIP_SOCKET 1   /**  * LWIP_SO_RCVTIMEO==1: Enable receive timeout for sockets/netconns and  * SO_RCVTIMEO processing.  */ #define LWIP_SO_RCVTIMEO 1 …   Re: Developing LwIP Application with Sequential API Daniel, Don't I need to have an active network connection before making netif API calls? If there is no network cable attached when I call netif_dhcp_start(), but I attach it later, I never see the dhcp state variable go to DHCP_STATE_BOUND. So, I would think there would be a callback or a status variable that lets me know when the link goes up or down, yet I can't seem to find it in either MCUXpresso SDK or LwIP. How is link status detected and reported? Thanks!
記事全体を表示
示例 MPC5744P EDC_after_ECC_error_by_UTEST_area_read GHS714 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ******************************************************************************** * 详细说明: * 本例的目的是展示如何在 ECC 错误后生成 EDC * 内部闪存。通过读取预定义模式实现错误响应 * 在地址 0x00400080 的 UTEST 区域中生成 IVOR1 异常和 FCCU * 中断(FCCU_Alarm_Interrupt)。 * 示例未显示任何处理,因为它是特定于应用程序的。 * 该示例在终端窗口(连接器 J19 上)显示通知 * MPC57xx_Motherboard)(19200-8-无奇偶校验-1停止位-eSCI_A上无流量控制)。 * 无需其他外部连接。 * ---------------------------------------------------------------------------------------------- * 测试硬件:MPC57xx_主板 + MPC5744P-144DC * MCU:PPC5744PFMLQ8,0N15P,QQAA1515N,Rev2.1B * Fsys: 200 MHz PLL,带 40 MHz 晶振参考 * 调试器:Lauterbach Trace32 * 目标:internal_FLASH,RAM * 终端:19200-8-无奇偶校验-1停止位-无流量控制 * EVB连接:默认 ******************************************************************************** <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ******************************************************************************** * 详细说明: * 本例的目的是展示如何在 ECC 错误后生成 EDC * 内部闪存。通过读取预定义模式实现错误响应 * 在地址 0x00400080 的 UTEST 区域中生成 IVOR1 异常和 FCCU * 中断(FCCU_Alarm_Interrupt)。 * 示例未显示任何处理,因为它是特定于应用程序的。 * 该示例在终端窗口(连接器 J19 上)显示通知 * MPC57xx_Motherboard)(19200-8-无奇偶校验-1停止位-eSCI_A上无流量控制)。 * 无需其他外部连接。 * ---------------------------------------------------------------------------------------------- * 测试硬件:MPC57xx_主板 + MPC5744P-144DC * MCU:PPC5744PFMLQ8,0N15P,QQAA1515N,Rev2.1B * Fsys: 200 MHz PLL,带 40 MHz 晶振参考 * 调试器:Lauterbach Trace32 * 目标:internal_FLASH,RAM * 终端:19200-8-无奇偶校验-1停止位-无流量控制 * EVB连接:默认 ********************************************************************************
記事全体を表示
示例 MPC5775K PIT ISR GHS614 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ******************************************************************************** * 详细说明: * 本示例包含基本的 PMPLL 初始化和 * 模式进入模块和时钟生成的配置 * 模块。默认情况下,活动是核心 2 -> e200z4 * 配置 PIT 计时器来触发中断并对其进行服务 * ---------------------------------------------------------------------------------------------- * 测试硬件:MPC57xx * 掩模组:0N76P * 目标:internal_FLASH * Fsys: 265 MHz PLL,带 40 MHz 晶振参考 ******************************************************************************** 修订历史: 1.0 Sep-07-2017 b21190(Vlna Peter) 初始版本 ********************************************************************************************/ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ******************************************************************************** * 详细说明: * 本示例包含基本的 PMPLL 初始化和 * 模式进入模块和时钟生成的配置 * 模块。默认情况下,活动是核心 2 -> e200z4 * 配置 PIT 计时器来触发中断并对其进行服务 * ---------------------------------------------------------------------------------------------- * 测试硬件:MPC57xx * 掩模组:0N76P * 目标:internal_FLASH * Fsys: 265 MHz PLL,带 40 MHz 晶振参考 ******************************************************************************** 修订历史: 1.0 Sep-07-2017 b21190(Vlna Peter) 初始版本 ********************************************************************************************/
記事全体を表示
eIQ Getting Started with NXP Microcontrollers eIQ® is comprised of multiple pieces of hardware and software to enable users to run machine learning models on embedded devices. Some of the key pieces of eIQ enablement for NXP microcontrollers include: eIQ Time Series Studio - PC tool to create and deploy classical machine learning and neural network models for time series analysis eIQ Inference Engines - Included as part of MCUXpresso SDK or Yocto Linux, these are used to do inferencing of pre-trained models on embedded devices. Options for MCUs include TensorFlow Lite, and coming soon, ExecuTorch. eIQ Neutron NPU – Accelerator core architecture embedded inside specific NXP devices like MCX N and i.MX RT700 to accelerate the inference of neural network models eIQ Neutron SDK - Contains the Neutron Converter tool for enabling models to be accelerated with eIQ Neutron NPUs eIQ Model Zoo - browse models tested on NXP silicon eIQ Model Watermarking Extension - Enhance copyright protections on custom models eIQ Model Creator - Partnership with ModelCat for vision-based model development There are two main paths for using AI/ML on NXP devices. Use eIQ Time Series Studio to generate and deploy a model for time series applications Use eIQ inference engines to deploy a pre-trained neural network model This attached lab will cover the 2nd option by showing how to run the TensorFlow Lite for Microcontrollers (TFLM) inference engine examples found in the MCUXpresso SDK. TFLM support can be found for the following NXP devices in MCUXpresso SDK: MCX N i.MX RT500 i.MX RT600 i.MX RT700 i.MX RT1050 i.MX RT1060 i.MX RT1064 i.MX RT1160 i.MX RT1170 i.MX RT1180 Full details on how to download eIQ inference engine software libraries and run it with VS Code, MCUXpresso IDE, IAR, Keil MDK, or ARM GCC can be found in the attached Getting Started guide.  For more information about eIQ and some hands-on labs for the i.MX RT family, see the following links: eIQ Software for MCUs: eIQ Libraries for MCUs on MCUXpresso SDK Builder or Github eIQ Time Series Studio (TSS) for Time Series applications eIQ Neutron SDK (for Neutron Converter Tool) MCU Hands-on Labs eIQ Time Series Studio Getting Started Lab i.MX RT700 NPU Getting Started Lab MCX N NPU Getting Started Lab TFLite for Microcontrollers Getting Started Lab   Resources: eIQ TSS Documentation eIQ MCUXpresso SDK Documentation eIQ FAQ Application Code Hub for AI/ML Examples GoPoint for i.MX Application Processors eIQ Model Creator by ModelCat.ai eIQ Model Zoo eIQ Neutron NPU Research Paper eIQ App Notes i.MX RT700 eIQ Neutron NPU Enablement and Performance (AN14700) i.MX RT700 USB Camera Object Detection (AN14718) with software In-Depth Exploration of TensorFlow Quantizer Debugger Tool (AN14493) Anomaly Detection with eIQ using K-Means clustering in TF-Lite (AN12766) Transfer Learning and Datasets (AN12892) Handwritten Digit Recognition using TensorFlow Lite (AN12603) Caffe Model Development on MNIST Dataset with CMSIS-NN Library (AN12781) Gender Voice Recognition with TensorFlow Lite Inference (AN13065) i.MX RT Re: eIQ Getting Started with i.MX RT Hi Ana-maria,     What board and what IDE are you using? Can you also share your modified linker file?  -Anthony  Re: eIQ Getting Started with i.MX RT Hello! I tried running the cmsis_nn_cifar10 example from the SDK (configured to have eIQ) but it seems that the example has SDRAM and BOARD_SDRAM that overlaps (both starting at the same address and having the same size). When I try to adjust the memory to be the same as memory in example cmsis_nn_kws, the example is not writing in the right addresses. I also can't erase that memory. Can you please guide me to solve this issue?
記事全体を表示