Multi Source Translation Content

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

Multi Source Translation Content

ディスカッション

ソート順:
FIR滤波器套件 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 本内容最初由 Steve Sabram 贡献给 lpcware.com 该示例项目使用 LPC4350 演示板和 ARM CMSIS DSP 库实现了声学范围、有限无限响应 (FIR) 滤波器。科幻“电击枪”的声音资源从演示板的耳机插孔中播放出来。该声音样本非常适合演示,因为它在声学带中具有许多低频、中频和高频成分。您可以通过触摸演示板上的电容式触摸按钮来播放声音资源,如演示板 LCD 上显示的菜单所示。最好使用耳机或耳塞聆听声音。四个按钮分别播放相同的声音资源 不同之处: 1) Raw – 未处理的声音按照其格式播放(采样率为 44.1 kHz、16 位样本和单声道)。 2) 低通——通过低通巴特沃斯滤波器滤波,截止频率为 5 kHz,类似于普通模拟电话的带宽。播放时,请注意高音部分被移除,类似 通过电话听到的声音。 3) 高通——通过高通巴特沃斯滤波器滤波,低频截止频率为 8 kHz。请注意,由于仅播放高音谐波成分,因此音量较低。 4) 后向掩码——声音资源样本以相反的顺序播放。“Zap!”现在变成了“Zoup!”数字滤波器是使用广受欢迎的公共领域工具 WinFilter ( http://www.winfilter.20m.com/ ) 设计的。 伴随这个例子。随着 NXP 推出这款免费 DSP 设计工具,我希望它的作者能够扩展其功能。 用户内容
記事全体を表示
LPC177x_8x u-boot端口 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 该项目解释了如何使用 LPC177x_8x 设备为平台构建和部署 u-boot。要构建 u-boot,您需要运行 Linux 操作系统的系统、适用于 Linux 操作系统的最新 CodeSourcery GNU 工具、u-boot 源代码以及适用于 LPC1788 的 u-boot 补丁。 已实现的功能 -------------------------------------------------------------------------------- 支持带有 32 位 DRAM(32MB)的 EA1788 主板 支持EA1788板的NAND FLASH 支持LPC177x_8x内部FLASH 以太网支持 有限的 MPU 支持 u-boot 已知问题 -------------------------------------------------------------------------------- 问题:“重置”命令导致电路板崩溃 解决方法:改用“cmreset”命令 问题:“boot”命令导致主板崩溃 解决方法:使用环境变量和 go 命令编写脚本 问题:bootvx 命令导致主板崩溃 解决方法:无,但没有理由使用此命令 未实现的功能 -------------------------------------------------------------------------------- FLASH“保护”命令和功能未实现(易于实现) 未实现中断/NVIC 支持(易于实现) 可能的改进 -------------------------------------------------------------------------------- Systick 可以代替 LPC1788 匹配定时器 重定位代码已被“绕过”,并且未正确实施 针对设备特定 IRQ 的宏文件,即需要包含弱链接 在启动文件中(特定于架构的设备覆盖) 有一个基本的 MPU 驱动程序,似乎可以工作,但可以改进 以太网驱动程序和 PHY 设置是“特定于板的”,但可以移动 到驱动程序区域,可以使用通用 PHY 支持 u-boot 启动操作概述 -------------------------------------------------------------------------------- 以下是 u-boot 如何在 LPC1788 上启动的概述。 - LPC1788 启动 ROM 将控制权转移到内部 FLASH 中的 u-boot 代码 每个 CM3 启动过程的地址 0x0 - u-boot 代码首先设置 MPU - 引脚复用、时钟和 DRAM 均已初始化 - 代码和数据从 FLASH 迁移到 DRAM - DRAM 中的 BSS 段被清除 - 控制权转移到 DRAM 中的 u-boot 代码 - 调用 u-boot board_init_f() 进行初始 u-boot 设置 - board_init_r() 用于稍后的 u-boot 设置 - u-boot 在 DRAM 之外正常运行 移植文件的位置 -------------------------------------------------------------------------------- arch/arm/cpu/cortex-m3 - Cortex M3 特定文件(mpu、启动等) arch/arm/cpu/cortex-m3/lpc1788 - LPC1788 特定文件(计时器、串行等) arch/arm/include/asm/arch-cortex-m3 - Cortex M3 头文件 arch/arm/include/asm/arch-lpc17xx - LPC177x_8x 特定的头文件 board/nxp - 使用 NXP 设备的电路板专用区域 board/nxp/ea1788 - EA1788 板特定文件(设置、nand 等) include/configs/ea1788.h - EA1788 板特定配置文件
記事全体を表示
FTF-IND-F1348 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 本课程基于 FRDM-K22F 开发板和多功能新型 Arduino 兼容 Shield,讨论如何实现:使用 Kinetis K2 和 LS Research 预认证的 Wi-Fi(TiWi-CW)和 BLE(SaBLE-x)无线模块的物联网应用。使用 TiWiConnect LIFT 软件协议流式传输到云端(大大简化了软件开发)。使用与 Freescale Freedom 板连接的第三方 Pmod 兼容(I2C 和 SPI)板进行传感器和 I/O 扩展。使用加速软件开发和预认证无线模块,加快您的物联网产品的上市时间。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 本课程基于 FRDM-K22F 开发板和多功能新型 Arduino 兼容 Shield,讨论如何实现:使用 Kinetis K2 和 LS Research 预认证的 Wi-Fi(TiWi-CW)和 BLE(SaBLE-x)无线模块的物联网应用。使用 TiWiConnect LIFT 软件协议流式传输到云端(大大简化了软件开发)。使用与 Freescale Freedom 板连接的第三方 Pmod 兼容(I2C 和 SPI)板进行传感器和 I/O 扩展。使用加速软件开发和预认证无线模块,加快您的物联网产品的上市时间。
記事全体を表示
S32Kの例 S32K1xx S32K144 例:S32K144 CMPラウンド・ロビンS32DS2.0  例:S32K144バックドア・アクセス・キー検証S32DS1.3  例:S32K144 FlexCAN0 RXFIFO DMA非SDK S32DS13  例:S32K144 PDB ADCトリガDMA ISR S32DS  例:S32K144 Flash RWシンプルS32DS  例:S32K144 DMAメモリ・コピー・テストS32DS  例:S32K144 EEEPROMの使用方法 例:S32K144 EEEPROMの使用方法 - 非SDK  例:S32K144 RTC VLPS  例:S32K144 WDOG RCM割り込み  例:S32K144 SRAM ECC注入  例 S32K144 RAM 保持 S32DS.R1 例:S32K144 I2CマスタMPL3115A2 S32DSR1_v3  例:S32K144 FlexCAN RXFIFO DMA S32DS.ARM.2018.R1  例:S32K144_printf_implementation - S32DS_1.0  例:FreeRTOS環境でのS32k144 UART printf/scanf - S32DS 例:S32K144 LPITタイマを使用した構成可能期間に対するSDK関数の呼び出し  例:S32K144 .noinitセクションの使用方法 例:S32K144 PDB ADC DMA S32DS.ARM.2018.R1   例:S32K144 RAMセルフテスト・シンプルS32DS 2018.R1  例:S32K144ポジショニング独立コード 例:S32K144 FlexCAN疑似ネットワーキングSTOPモードのテストS32DS.ARM.2.2  例:S32K144 LPIT DMA LPSPI  例:S32K144 FlexCAN TX/RX/エラーISRテストS32DS2.2  例:S32K144 FlexIOアイドル検出S32DS2.2 S32K146 S32K146 Set_whole_FlexRAM-as_RAM S32DS.ARM.2.2の例 S32K148 例:S32K148 PDB0-PDB1リングS32DS3.4 RTM4.0.3  例:S32K148 PDB0-PDB1 ring DMA S32DS3.4 RTM4.0.3  例:S32K148 GPIO割り込み  S32K116 例:S32K116 WDOG高速テスト  例:S32K116 LPUART LINスレーブTXRX ISR S32DS.ARM.2.2  例 S32K116 FlexCAN PN STOP S32DS.ARM.2.2 例:S32K116 FlexCAN VLPRテストS32DS.ARM.2.2 S32K118 例 S32K118-SRAM-keep_data_over_SW_reset v0_1 S32DS.ARM.2.2 S32K3XXシリーズ S32K344 例:S32K344 PIT BTCU ADC DMA DS3.4 RTD100   例:S32K344 FlexCAN_Ip TX/RX/EnhanceRXFIFOテストS32DS3.4 RTD200     例Siul2_Port_Ip_Example_S32K344_ITCM_DTCM S32DS3.4RTD300   例:S32K358 FlexCAN TXRX ISR S32DS35 RTD400/500     
記事全体を表示
LX2160 定制板上模块的掉电 在我们基于 LX2160 的定制主板中,没有 SPDT 开关可用于通过软件控制电源轨。 不过,我们的目标是降低 USB、WiFi、BT、PoE 和蜂窝模块的功耗。 我方提出了当前的意见和做法: 1.WiFi、BT 和蜂窝模块通过 PCIe 连接。 我们观察到,这些功能可以通过 SerDes 配置禁用。 通过将 SerDes 协议配置为 S2 = 9,所有相应的通道都被配置为 SGMII,而不是 PCIe,从而有效禁用 PCIe 连接的模块。 2.USB 模块似乎没有类似的基于 SerDes 的禁用选项。 对于 USB,我们目前正在尝试使用以下方法基于 GPIO 禁用: USB1_MUX_EN USB2_MUX_EN RCW 配置已经过验证,相应引脚已确认配置为 GPIO。 然而,即使驱动这些 GPIO 进行禁用操作,也无法观察到预期的功耗降低。 3.PoE 模块(AQR113c 用于以太网) 请就可能需要修改的其他文件或配置提出意见/建议,以便完全禁用和降低功耗。 Re: Power down of modules on LX2160 custom board 闲置时是否可以对 USB、WiFi、BT、PoE 和蜂窝模块掉电?还是产品的配置不同,这些接口根本不会被使用?   请注意,即使接口未使用,仍需为其电源轨供电。LX2160A 不支持从其轨道上拔下电源。 如果断开接口设备的电源,则需要确保 LX2160A I/O 不会发生泄漏   你能做什么? 1) 内核消耗最大功率。SDK 支持在不使用 CPU 时降低其频率,以节省功耗。 Refer 电源管理单元 - [Layerscape Software Development Kit User Guide | NXP 半导体|https://docs.nxp.com/bundle/GUID-487B2E69-BB19-42CB-AC38-7EF18C0FE3AE/page/GUID-2E8E375E-7DCD-4671-B0CF-D4713D8BB9EB.html] 2) 未使用的 IP 可通过 DEVDISR 进行时钟门控。不过,一旦禁用,就无法再启用。 3) 如果 SerDes 通道未使用,可将其断电。参见第 26.10.2 节LX2160A 参考手册中未使用的车道 4) 当通过 RCW 设置选择 SerDes 协议时,它还会根据协议要求配置与该协议相关的寄存器。因此,重新配置车道并不是正确的方法。 5) 从原理图片段来看,您已将 SerDes#2 配置为 SRDS_PRTCL_S2 =3,但只使用了单通道。 你可以使用 SRDS_PRTCL_S2=11 并按照 (4) 对未使用的通道进行掉电。类似的机制也可应用于其他 SerDes。 6) 如果 PCIe 未使用 Gen3,则 PLLF 可以断电。同样,未使用的 PLL 也可以断电 谢谢! Re: Power down of modules on LX2160 custom board 如何测量耗电量? 请注意,对于 SerDes 通道,您需要检查为 SerDes I/O 供电的 0.9V 和 1.8V 电源通道。 对于 DFS,请检查 VDD(0.8V)电源的功耗。 既然这是你的定制电路板,你有电源轨的功率测量电路吗? 如果你在自定义主板的输入上进行衡量,我不确定你会看到多大的差异。这还取决于测量的最小计数。 为进行检查,可在较低配置下运行核心/平台。查看设计检查表,其中有 VDD 轨功耗图表。 Re: Power down of modules on LX2160 custom board 你好, 感谢您的及时回复。我附上了我对您分享的有关功率优化建议的观察和测试结果。请查看它们,并与我们联系是否建议进行其他检查或配置。 要点 说明 CPU 热插拔/频率缩放观测 我们使用以下方法测试了 CPU 热插拔、CPU 频率缩放和不同的 CPU 模式: lscpu | grep line 观察结果: On-line CPU(s): 9 Off-line CPU(s): 0-8,10-15 不过,在这些情况下都没有观察到明显的功耗降低。 通过 DEVDISR 进行未使用的 IP 时钟门控 我们知道未使用的 IP 可以通过 devDisr 进行时钟门控。但是,由于禁用这些区块如果不重置就不可逆转,我们认为这种方法风险很高,因此不建议在我们当前的测试中使用这种方法。 未使用的 SerDes 通道掉电 寄存器写入成功。 不过,迄今为止还没有观察到明显的功耗降低。 SerDes 协议配置优化 PLL 掉电未使用的 Gen3 PCIe 应用配置: SRDS_REFCLKF_DIS_S2 = 1 SRDS_PRTCL_S2 = 11 SRDS_INTRA_REF_CLK_S2 = 0 SRDS_PLL_PD_PLL3 = 1 Re: Power down of modules on LX2160 custom board 你好, 我们正在使用这些连接到 BMC 的电流传感器来测量功耗,其中 VCC_12V 感应定制板的输入,而 VCC_0V8 正在感应恩智浦 (LX2160A) 芯片组的输入。 同样 在闪存时(这些以 VCC_12V 即总功耗测量)-使用 CodeWarrior(可能会下降约 10W)和 -使用 (echo mem > /sys/power /state & echo freeze > /state sys/power/state)(可能会下降约 6W)(但在此之下,由于不存在用户交互,因此不建议将其用于我们的测试), Re: Power down of modules on LX2160 custom board 与内部团队讨论,我们我们已经回答了 您的与配置相关的问题。 在 12V 输入电压下,10 瓦的功耗在我们看来是相当合理的。 我们对于 LX2160A 而言,这是很合理的。 请 请分享您的目标,您的 示意图和配置、日志和应用。我们将检查还能实现哪些功能。
記事全体を表示
iMX95:两路视频输入和两路视频输出。 下午好! 我们有一个想使用 iMX95 的项目,但需要两个视频输入和两个视频输出。在输入方面,我们希望使用两个 MIPI-CSI 输入。关于视频输出,我们希望使用两个 LVDS 输出,因为两个 MIPI-CSI 输入无法使用 MIPI-DSI 输出(由于 MIPI-DSI/CSI 组合)。 我们有几个关于 LVDS 输出的问题,因为我们希望一个输出连接到 LCD(480x272),另一个连接到 LVDS 转 HDMI 桥接器。以下是我们目前提出的问题: 1.输出端是否可以像我们描述的那样?也就是说,一个 LVDS 输出端连接 LCD,另一个 LVDS 输出端连接 LVDS 转 HDMI 桥接器。 2.您推荐哪种 LVDS 转 HDMI 桥接器?我们看到的是 IT6263 芯片,对吗?还有其他人吗? 3.我们需要"LVDS 转 HDMI" 桥接器后的 HDMI 输出支持以下格式:720p50/59/60、1080p50/59/60、PAL、NTSC 和 1080i50/59/60。有可能达到 1080p60 吗?通过 iMX95 的 LVDS 和"LVDS 到 HDMI" 桥接器,是否可以支持隔行扫描格式输出? 谢谢, Daniel。 Re: iMX95: Two video inputs and two video outputs. 感谢您的回复! 关于 HDMI 输出的隔行扫描格式支持...如果我们使用 MIPI-DSI 转 HDMI 桥接器,是否会支持隔行扫描格式,还是会出现与使用 LVDS 转 HDMI 桥接器相同的问题? 谢谢, Daniel。 Re: iMX95: Two video inputs and two video outputs. 你好 1.是的,这是可能的。 2。IT6263 是我们的参考设计中唯一经过测试的芯片,其他 LVDS 转 HDMI 芯片应该可以正常工作。 3. i.MX95 最多支持 2 个 1080p60 LVDS Tx(2x 4 通道或 1x 8 通道),电路板支持包不支持隔行格式,应由您自己实现。 顺祝商祺! Re: iMX95: Two video inputs and two video outputs. 你好 由于我们的 BSP 中未实现隔行格式,因此会出现与使用 LVDS 转 HDMI 桥接器一样的问题。 顺祝商祺! Re: iMX95: Two video inputs and two video outputs. 感谢您的回复! 关于 HDMI 输出的隔行扫描格式支持...如果我们使用 MIPI-DSI 转 HDMI 桥接器,是否会支持隔行扫描格式,还是会出现与使用 LVDS 转 HDMI 桥接器相同的问题? 谢谢, Daniel。 Re: iMX95: Two video inputs and two video outputs. 在澄清了有关产出的问题后(非常感谢),我们想澄清有关两项投入的一些要点。 首先,我会解释我们的想法,然后提出问题。我们要使用 iMX95 的两个 MIPI-CSI 输入:一个连接到 TC358743 芯片,另一个连接到 TC358748 芯片。对于这两种输入,我们希望支持以下格式:720p50/59/60、1080p50/59/60、PAL、NTSC 和 1080i50/59/60。 这一设置提出了以下问题: 1.是否可以像我们描述的那样进行输入?也就是说,一个 MIPI-CSI 输入来自 TC358743,另一个 MIPI-CSI 输入来自 TC358748,这两个输入可支持不同的视频格式。 2.有支持这两种芯片的驱动程序吗?TC358743 和 TC358748? 3.MIPI-CSI 输入是否也支持隔行扫描格式 PAL、NTSC 和 1080i50/59/60?如果是这样,如何使用所谓的"虚拟通道" ?文档似乎支持 MIPI-CSI 输入中的隔行扫描("CSI Pixel Formatter (CSI_PIXEL_FORMATTING)" => " 支持 YUV/RGB 数据类型的隔行扫描模式" ),但我们要求确认。 4.由于 TC358743 芯片的 MIPI-CSI 接口对隔行扫描数据的限制,我们无法使用 YUV422。我们正在考虑使用 YUV444 格式,但通过 MIPI-CSI 接口将其作为 RGB 格式发送,然后可能需要更改软件(驱动程序)。这可能吗?软件(驱动程序等)是否已经准备就绪,还是需要我们自己动手? 5.我们希望将两个 MIPI-CSI 接口之一的输入路由到 H264/HEVC 视频编码器,但该编码器需要 YUV420,而 MIPI-CSI 接口是 YUV422(或 YUV444)。根据文档,似乎可以使用"HW" 模块"CSC 从 YUV422/YUV444/RGB 8 位" 。这个 CSC 是 ISI 模块中的那个,还是另一个?是使用 CSC 进行转换,还是必须通过软件将 YUV422/YUV444 转换为 YUV420? 6.继续前面的问题,考虑将视频解码器输出发送到 LVDS,这需要将 YUV420(解码器)转换为 RGB(LVDS)...这种转换(YUV420 到 RGB)是使用硬件模块(也许可以使用显示控制器的"Blit 控制器" )还是必须在软件中完成? 7.说到色彩转换,我们还有一个关于支持和使用 BT601 和 BT709 的问题。它们是否在任何硬件转换中都受支持,还是取决于特定的系数配置或其他因素? 谢谢, Daniel。 Re: iMX95: Two video inputs and two video outputs. 还有一个新问题: 8.我们需要对 MIPI-CSI 接口的通道数进行动态配置。这可能吗? 谢谢你,丹尼尔。 Re: iMX95: Two video inputs and two video outputs. 谢谢! Re: iMX95: Two video inputs and two video outputs. 你好 关于这些有关输入的新问题,我建议创建一个新的社区主题或提交支持票据。 这将有助于使每个主题集中在一个话题上。 顺祝商祺! Re: iMX95: Two video inputs and two video outputs. 谁能帮我回答最后 8 个问题? 非常感谢, Daniel。 Re: iMX95: Two video inputs and two video outputs. 谢谢!你说得对,我会就这些问题开辟一个新的主题。
記事全体を表示
PFE MCAL driver receiver processing may have reentrancy issue Hi Team From PFE MCAL driver 1.6.0, the receiver processing may have reentrancy issue. The call relationship of function pfe_hif_drv_process_rx_frames() is shown as the following figure.  The _Receive, TxConfirmation and MainFunction will call pfe_hif_drv_process_rx_frames when driver works in polling mode. If the callers are in different tasks, pfe_hif_drv_process_rx_frames has a risk of reentrancy. Should we add exclusive protection for pfe_hif_drv_process_rx_frames ? Regards, Ryder PFE PFE MCAL Re: PFE MCAL driver receiver processing may have reentrancy issue Hello @Ryder_Gong, The PFE team has picked up the case, also who is the customer that reported this? Best regards,  Radu Re: PFE MCAL driver receiver processing may have reentrancy issue Hi, The original issue is from Mobileye, actually software team has involved by a debug call. Re: PFE MCAL driver receiver processing may have reentrancy issue Hello Ryder.  Thank you for finding the race condition. It was confirmed as cause of the "Rx stops working" issue and bug ticket ANET-1032 was created to fix it. It will be fixed by adding an exclusive area protection as you have proposed. The bug affects all versions of the PFE MCAL driver, in polling mode, and it will be fixed in version 1.8.0.
記事全体を表示
Flexera License Dongle Hello, We have been using CodeWarrior 5.2 and 11.1 for some time with the Flexera License keys. Everything was working correctly and then all of a sudden the CodeWarrior Suites do not seem to recognize the Dongle anymore.  lmtools correctly displays the FLEXid: I have the license.dat files at the following paths: C:\Program Files (x86)\Freescale\CWS12v5.2 C:\Freescale\CW MCU v11.1\MCU For CodeWarrior 5.2 I get the following error: And for 11.1 I get: The computer I am using is running Windows 11. We have some older laptops that are Windows 10 and have no issues on those. Any help will be greatly appreciated! Thank you, Zach
記事全体を表示
S32K376 整车控制器VCU – 如何在 S32DS 中实现基于 SPI 的 DIO (MSDI)? 我正在开发 S32K376 整车控制器VCU POC 板,其中 MSDI 设备通过 SPI 连接。 从原理图来看,使用了以下 MSDI 相关信号: SPI 信号:MSDI_CS、MSDI_SCLK、MSDI_MOSI、MSDI_MISO 控制/状态信号:msdi_intb, msdi_wakeb 模拟/多路复用信号:MSDI_AMUX 用于数字输入和输出的MSDI SGx / SPx 引脚 我想使用带有 S32 配置工具 (S32CT) 的 MBDT(Simulink)来实现这一目标,但我不清楚正确的软件方法。 具体来说,我需要以下方面的指导: 如何在 S32CT 中配置和使用 SPI 引脚以使其与外部 MSDI 设备配合使用 MSDI_INTB 和 MSDI_WAKEB 应如何配置(DIO 与 ICU/EXTI)并在 MBDT 中处理 如何在软件中访问MSDI 数字输入/输出(SGx / SPx) 是否有任何 MCAL 支持模式? 还是应该通过自定义 SPI 命令 + 应用级抽象来实现? MSDI_AMUX 通常应如何处理(ADC 路径/预期用途) 我没有有效的参考资料或示例来展示在 S32K376/96 整车控制器VCU & 电池管理系统 示例 POC 项目中使用 MBDT + S32CT 的流程。 请提出建议的实施方法(分步实施或分块实施) Re: S32K376 VCU – How to implement SPI-based DIO (MSDI) in S32DS? 你好@mariuslucianand 能否请您对此发表评论? 先行致谢。 BR, Petr Re: S32K376 VCU – How to implement SPI-based DIO (MSDI) in S32DS? 大家好 由于没有人回复,我尝试了很多方法,但在使用 S32K396 在同一 VCU POC 板上工作时发现,外部 MSDI 设备通过 LPSPI3 连接。但是,SPI 初始化在运行时会出现总线故障。 观察到的问题 在执行 Lpspi_Ip_Init() 时,代码在以下位置出现故障: Base->CFGR1 = PhyUnitConfigPtr->Cfgr1; 调试器观察: 实例 = 3 基地址 = 0x40364000 寄存器内容如下verid = 53248 param = 53249 cr = 53249 sr = 53249 紧随其后:BusFault: imprecise data access error HardFault escalation:在访问 LPSPI3 的寄存器时发生。 请提供以下帮助: 具体是哪些配置/设置(参见附件)不正确?或 要正确访问 MSDI I/O 引脚数据,还需要哪些额外设置/MBDT 块集? Re: S32K376 VCU – How to implement SPI-based DIO (MSDI) in S32DS? 你好 请查看以下文章,获取有关配置 SPI 外设以从 MC33CD1030 IC 获取数据的帮助: 如何:使用恩智浦 MBDT 在 S32K396BMS-EVB 上安装 MSDI MC33CD1030 请注意,本文主要介绍从 MC33CD1030 IC 发送和接收数据的 SPI 配置。有关 CD1030 的更多信息,请查阅其数据表。 顺祝商祺! 索林-班奇拉
記事全体を表示
こんにちは、NPU!i.MX 9でTFLiteモデルを実行 以下は、Pytorch と Tensorflow でシンプルなモデルをトレーニングし、i.MX93 Ethos-65 ニューラル プロセッシング ユニット (NPU) を使用してアプリケーションにデプロイするためのガイドです。 このガイドに従うと、次のことが達成されます。 MNISTデータセットでシンプルなCNNをトレーニングする モデルを tflite に変換し、量子化して i.MX93 NPU (Ethos-65) 用にコンパイルします。 モデルによって数字を描画および識別できる簡単なアプリケーションを実行します。 前提条件 このガイドに従うには次のものが必要です: Yocto イメージ、C++ の例では GTKMM3 のサポートが必要ですが、Python の例では事前にビルドされたイメージを使用できます。 i.MX93ボード Pythonの例を実行する アプリケーションの実装は Python と C++ の両方で提供されます。Pythonアプリケーションを使用する場合は、代わりに事前に構築された完全なイメージを使用できます。Python スクリプトをターゲットにコピーして、次のように実行するだけです。 # Running quantized example on the CPU ./run.py -m cnn_tf_quant.tflite # Running example on the Ethos NPU ./run.py -m cnn_tf_quant_vela.tflite -d /usr/lib/liblitert_ethosu_delegate.so 添付ファイルには事前に構築されたモデルが提供されていますが、モデルのトレーニングと生成に使用される手順とスクリプトも含まれています (以下を参照)。 GTKMM3 サポート付きのイメージのビルディング (C++ の例のみ) デモンストレーションに使用される GUI アプリケーションはGTKMM3 ( GTKライブラリの C++ ラッパー) で記述されているため、GTKMM3 をサポートするイメージが必要ですが、幸いなことに、これを Yocto イメージに簡単に統合できるレシピが既にあります。 イメージをビルドするには、 Yocto ユーザー ガイドの指示に従うだけです。この記事の執筆時点では最新の BSP は 6.12.49_2.2.0 なので、これを使用します。 ホストとインストールされたリポジトリですべての要件を設定したら、次のようにビルド環境を設定できます。 リポジトリ init -u https://github.com/nxp-imx/imx-manifest -b imx-linux-walnascar -m imx-6.12.49-2.2.0.xml リポジトリ同期 ターゲットに応じてビルド ディレクトリを設定できるようになりました。例として、X11 をサポートする Wayland グラフィックスとiMX93 Freedomボードを使用します。 ディストリビューション=fsl-imx-xwayland マシン=imx93-11x11-lpddr4x-frdm ソース imx-setup-release.sh -b 93-frdm-xwayland ボードに合った MACHINE 構成を選択するだけです。 これでビルドを開始する準備がほぼ整いました。まだイメージに GTKMM3 サポートを追加する必要があります。conf/local.conf の下にある local.conf ファイルを変更し、次のコードを追加するだけです。 IMAGE_INSTALL:append = "gtkmm3" ビルド時に問題が発生しないように、gtkmm3 の前にスペースがあることを確認してください。ビルドはリソースを大量に消費するため、ビルド中にメモリ不足の問題が発生する可能性があります。一度にビルドを試みる同時レシピの数を制限するために、以下も追加することをお勧めします。 BB_NUMBER_THREADS="8" PARALLEL_MAKE="-j8" BB_PRESSURE_MAX_CPU ?= "50000" BB_PRESSURE_MAX_IO ?= "100000" BB_PRESSURE_MAX_MEMORY ?= "25000" その後、local.conf は次のようになります。 注意:ビルドを完了するには 500 GB 以上必要なので、マシンに十分なストレージ容量があることを確認してください。 これでビルドを開始できます。GTKMM アプリケーションをソースからビルドする場合は、利用可能な SDK が必要であり、次のように作成します。 bitbake imx-image-full -c populate_sdk 画像を作成するには、次のようにするだけです。 bitbake imx-image-full すべての Tensorflow Lite ライブラリとさまざまな例が含まれているため、完全なイメージが必要です。 ビルドが完了したら、ツールチェーンをインストールし、イメージをボードにフラッシュできます。 ツールチェーンをインストールするには: ./tmp/deploy/sdk/fsl-imx-xwayland-glibc-x86_64 -imx-image-full-armv8a-imx93-11x11-lpddr4x-frdm-toolchain-6.12-walnascar.sh その後、ツールチェーンを使用するたびに次の操作を実行します。 ソース /opt/fsl-imx-xwayland/6.12-walnascar-full-gtkmm3/environment-setup-armv8a-poky-linux イメージを SD カードにフラッシュするには: zstdcat imx-image-full-imx93-11x11-lpddr4x-frdm.rootfs.wic.zst | sudo dd of=/dev/mmcblk0 bs=1M conv=fsync これで、アプリケーションを構築し、いくつかのモデルをトレーニングしてデプロイする準備が整いました。 GTKMM3 ビルディング アプリケーション (C++) アプリケーションのソースはここにあります。また、ビルド済みのバイナリも提供されており、ここに添付されています。 アプリケーションには、マウスまたはタッチ ディスプレイを使用して数字を簡単に描画できる描画領域と、描画領域をクリアするためのボタンと、モデルの実行をトリガーして数字を予測するためのボタンの 2 つのボタンが含まれています。 最初からビルドするには、CMake と、GTKMM3 をサポートするツールチェーン (上記参照) が必要です。プロジェクトをビルドするには、次の手順に従ってください。 sudo apt install cmake git クローンhttps://github.com/ManRod2982/drawing_window_imx cd drawing_window_imx/drawing_window_cpp/ ソース /opt/fsl-imx-xwayland/6.12-walnascar-full-gtkmm3/environment-setup-armv8a-poky-linux cmake -B ビルド -DCMAKE_TOOLCHAIN_FILE=$OECORE_NATIVE_SYSROOT/usr/share/cmake/OEToolchainConfig.cmake cmake --build ビルド この後、ビルド ディレクトリの下に window というバイナリが作成され、それをターゲットの SD カードに簡単にコピーできるようになります。 Linux を使用している場合はファイルシステムがマウントされるので、バイナリをルート ディレクトリにコピーするだけです。 sudo cp build/window /media/user/root/root/ ボードへの接続がすでに確立されている場合も SCP を使用できます。 scp ビルド/ウィンドウ [email protected]:/root そして、この後、ターゲット上でアプリケーションを次のように起動できます。 ./window -m model_path [オプション] -d delegate_path [オプション] -v アプリケーションでは次の 3 つのパラメータが受け入れられます。 モデルへのパス: -m または --model_path [オプション] デリゲートへのパス(存在する場合): -d または --delegate_path。指定されていない場合は、 XNN デリゲートを使用して CPU 上でモデルの実行が試行されます。 [オプション] 詳細フラグ。存在する場合、モデルはより多くの情報を出力します。 ここで、実行するモデルが必要です。 シンプルなCNNモデルのトレーニング このリリースの機械学習ユーザーガイドを見てみましょう。各デバイスで利用可能なコンピューティング エンジンに関するさまざまなフレームワークのサポートは次のとおりです。 Tensorflow Lite とLiteRT (Tensorflow Lite の最新リリースであり、今後リリースされる唯一のもの) は、i.MX9 ファミリのほとんどのコンピューティング エンジンで広くサポートされているフレームワークです。このガイドでは、例として C++ を使用し、LiteRT の現在のリリースでは Python のみがサポートされているため、Tensorflow Lite を使用しますが、インターフェースとプロセスはほぼ同じです。 環境の設定 サンプル リポジトリには、モデルをトレーニングして tflite 形式に変換するために使用されるさまざまな Python スクリプトが含まれています。次の手順を実行するには、python3 のインストールが必要です。 仮想環境を設定することをお勧めします。 python3 -m venv myenv ソース myenv/bin/activate pip インストール -r 要件.txt これにより、Tensorflow と Pytorch の両方に必要なすべてのパッケージがインストールされます。 Tensorflowでモデルをトレーニングする Tensorflow を使用すると、モデルを量子化して Tensorflow Lite に変換するための簡単なパスが可能になり、畳み込みニューラル ネットワーク (CNN) アーキテクチャは次のようになります。 model = tf.keras.models.Sequential([ tf.keras.layers.Input(batch_shape=(1, 28, 28, 1)), tf.keras.layers.Conv2D(16, 5, padding='same', activation='relu'), tf.keras.layers.Conv2D(32, 3, activation='relu'), tf.keras.layers.Dropout(0.2), tf.keras.layers.MaxPool2D(2, strides=(2,2)), tf.keras.layers.Flatten(), tf.keras.layers.Dense(100, activation='relu'), tf.keras.layers.Dropout(0.2), tf.keras.layers.Dense(10, activation='softmax') ]) train_tf.pyスクリプトを実行してモデルをトレーニングすることができます。通常のノートPCでトレーニングするには約 2 分かかり、テスト データセットで 99.05% の精度を達成します。フレームワークの詳細については、公式のTensorflow ドキュメントを参照してください。 スクリプトを実行した後、 eIQ ツールキットモデル ビジュアライザーまたはNetron.app を使用してモデルを視覚化できます。 i.MX93 には、重み、バイアス、入力が整数である必要があるArm Ethos-65 NPUが搭載されており、現在のモデルは float32 を使用しているため、モデルを量子化する必要があります。これを実現するには、モデルを量子化して tflite に変換する tf2quant_tflite.py を実行します。 整数の入力と出力を取り、重みとバイアスも量子化されており、ファイル サイズの違いが簡単に確認できます。 量子化モデルは 555 KB ですが、float32 モデルは 2.2 MB です。これは、float32 では重みとバイアスをそれぞれ保存するのに 4 バイトが必要なのに対し、量子化モデルでは 1 バイトしか必要ないからです。 これで、ターゲットで使用できるモデルができました。ただし、現状では、XNN デリゲートを使用して CPU 上で実行されます。モデルを実行するには、次のようにするだけです。 ./window -m cnn_tf_quant.tflite これで、Arm Ethos NPU 用に量子化モデルをコンパイルできるようになりました。eIQ ツールキットが使用されます。モデル ツールを使用してモデルを開きます。 量子化されたモデル(この場合は cnn_tf_quant.tflite)があるフォルダーに移動して開きます。モデルを視覚化できるはずです。オプション メニューをクリックして変換を選択します。 i.MX93 コンバータを選択すると、保存先フォルダも選択するように求められます。 宛先フォルダを選択した後、すべてがうまくいけば変換が完了し、Ethos で実行できるように最適化されたモデルを視覚化できるようになります。NPU でサポートされていない操作はすべて CPU によって表示および実行されます。この単純な例では、すべての操作は NPU によって実行されます。 そして、次のようにしてターゲット上でモデルを実行できるようになりました。 ./window -m cnn_tf_quant_vela.tflite -d /usr/lib/libethosu_delegate.so Pytorchでモデルをトレーニングする リポジトリには、畳み込みニューラル ネットワークを使用して MNIST データ セットをトレーニングするサンプル モデルが含まれています。モデル構造は次のとおりです。 NeuralNetwork( (cnn): Sequential( (0): Conv2d(1, 16, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2)) (1): ReLU() (2): Conv2d(16, 32, kernel_size=(3, 3), stride=(1, 1)) (3): ReLU() (4): Dropout(p=0.2, inplace=False) (5): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False) (6): Flatten(start_dim=1, end_dim=-1) (7): Linear(in_features=5408, out_features=100, bias=True) (8): ReLU() (9): Dropout(p=0.2, inplace=False) (10): Linear(in_features=100, out_features=10, bias=True) ) ) Pytorch モデルは、Tensorflow lite (量子化なし) に簡単に変換して CPU 上で実行できます。また、 Open Neural Network Exchange モデル (ONNX)も同様です。ただし、最近リリースされたExecutorchは組み込みデバイス上の Pytorch モデル用の推論モデルであり、現在そのサポートが進められています。 Pytorch モデルは pytorch_model.py で定義されています。 #!/usr/bin/env python3 import torch from torch import nn # Define model class NeuralNetwork(nn.Module): def __init__(self): super().__init__() self.cnn = nn.Sequential( # Input 28x28x1, after padding 32x32x1, output 28x28x16 nn.Conv2d(in_channels=1, out_channels=16, kernel_size=5, padding=2), nn.ReLU(), # Input 28x28x16, output 26x26x32 nn.Conv2d(in_channels=16, out_channels=32, kernel_size=3), nn.ReLU(), nn.Dropout(p=0.2), # Input 26x26x32, output 13x13x32 nn.MaxPool2d(kernel_size=2, stride=2), nn.Flatten(), nn.Linear(13*13*32, 100), nn.ReLU(), nn.Dropout(p=0.2), nn.Linear(100, 10) ) def forward(self, x): logits = self.cnn(x) return logits トレーニングは train_pytorch.py を実行して実行され、テスト データセットで 99.3% の精度を達成し、通常のノートPCで完了するまでに約 7 分かかります。フレームワーク自体とトレーニング プロセスの詳細については、公式のpytorch ドキュメントを参照してください。 その後、pytorch モデルは pytorch_model.pth に保存されますが、pytorch はグラフ情報ではなく重みとバイアスのみを保存します。保存したモデルをnetronまたはeIQ ツールキットモデル ビジュアライザーで視覚化すると、分離された重みとバイアスを観察できます。 モデルをより良く視覚化するために、スクリプトpytorch2onnx.pyを使用してONNX形式に変換するだけです。そして、Neutron 上でモデルのグラフを視覚化できるようになりました。 注: ONNX は量子化して量子化されたモデルを tflite に変換する方法も提供している可能性がありますが、onnx-tf のテストではツールが最新の Tensorflow フレームワークと同期していないようでした。Tensorflow で同様のモデルを作成し、量子化してエクスポートする方が簡単でした。 これでモデルを tflite にエクスポートできるようになりました。モデルは量子化されていないため、CPU (XNN デリゲート) 上で実行されます。エクスポートするには、 pytorch2tflite.py を実行し、エクスポートされたモデルを視覚化できるようになりました。 そして、次のようにしてこのモデルをターゲット上で実行できます。 ./window -m pytorch_cnn.tflite モデルのデプロイと実行 これで、数字を描画できるアプリケーションと、それらの数字を検出できるモデルができましたが、アプリケーションはそのモデルを実行して結果を取得できる必要があります。これが次のステップです。 ターゲット上でモデルを実行できるようにするには、次のことが必要です。 モデルをロードする tfliteインタープリターを作成する 外部デリゲートがある場合はロードする テンソルを割り当てる C++の例 ここでは最小限の例が提供されていますが、NPU でモデルを実行するために必要な外部デリゲートの読み込みは含まれていません。 必要なヘッダーは次のとおりです。 #include "tensorflow/lite/delegates/external/external_delegate.h" #include "tensorflow/lite/interpreter.h" #include "tensorflow/lite/interpreter_builder.h" #include "tensorflow/lite/kernels/register.h" #include "tensorflow/lite/model_builder.h" TFLite APIを使用して次のようにモデルをロードできるようになりました。 std::unique_ptr<:flatbuffermodel> model = tflite::FlatBufferModel::BuildFromFile(model_path); ここでインタープリターを作成する必要があります。そのためには、モデルだけでなく操作リゾルバーも必要です。 tflite::ops::builtin::BuiltinOpResolver resolver; std::unique_ptr<:interpreter> interpreter; tflite::InterpreterBuilder(*model, resolver)(&interpreter); デリゲートが必要な場合は、それを作成して実行グラフを更新し、インタープリターがサポートされている操作でデリゲートを呼び出すことを認識できるようにする必要があります。 // Create external delegate option and pass the delegate library TfLiteExternalDelegateOptions external_delegate_options = TfLiteExternalDelegateOptionsDefault(delegate_path); // Create the External Delegate. This will load the delegate. TfLiteDelegate *external_delegate = TfLiteExternalDelegateCreate(&external_delegate_options); // Add External Delegate into TFLite Interpreter to automatically delegate nodes. if (interpreter->ModifyGraphWithDelegate(external_delegate) != kTfLiteOk) { std::cerr << "Failed to add delegate" << std::endl; } これで、モデルにテンソルを割り当てることができます。 // Allocate tensors for the model if (interpreter->AllocateTensors() != kTfLiteOk) { std::cerr << "Failed to allocate tensors" << std::endl; } これで、モデルを使用して推論を実行する準備が整いました。 最後のステップは、入力バッファにデータを入力し、インタープリタを呼び出して、出力バッファから結果を取得することです。次の例では、float モデルを使用しています。 // Fill input buffers // Note: The buffer of the input tensor with index `i` of type T can // be accessed with `T* input = interpreter->typed_input_tensor (i);` float *input_tensor = interpreter->typed_input_tensor (0); std::memcpy(input_tensor, input.data(), input.size() * sizeof(float)); // Run inference if (interpreter->Invoke() != kTfLiteOk) { std::cerr << "Failed to invoke Interpreter!" << std::endl; return {}; } // Read output buffers // Note: The buffer of the output tensor with index `i` of type T can // be accessed with `T* output = interpreter->typed_output_tensor (i);` float *output_tensor = interpreter->typed_output_tensor (0); std::memcpy(output, output_tensor, output.size() * sizeof(float)); 私たちのサンプル アプリケーションでは、インタープリターの作成と推論の呼び出しは NnModel というクラスにラップされています。その実装はリポジトリで確認できますが、変更なしで float モデルと int8 モデルの両方を処理できます。 クラスはメイン ルーチン内でインスタンス化され、予測ボタンがクリックされるたびに推論が呼び出されます。 // Create model with parsed parameters NnModel nn(model_path, delegate_path, verbose); void Window::on_predict_clicked() { // Save screen to file std::cout << "Predict clicked!" << std::endl; // Call inference on NnModel depending on the type // the model expects int number; auto data_type = nn_.get_dtype(); switch (data_type) { case kTfLiteFloat32: { std::vector drawing = mouse_drawing.export_to_vector (28, 28, 255.0); std::vector output_vec_f = nn_.infer (drawing); number = get_max_index (output_vec_f); break; } case kTfLiteInt8: { std::vector drawing = mouse_drawing.export_to_vector (28, 28, 255.0); std::vector output_vec_int = nn_.infer (drawing); number = get_max_index (output_vec_int); break; } default: std::cerr << "Cannot handle input type: " << std::to_string(data_type) << std::endl; break; } std::string display = "You drew a: " + std::to_string(number); std::cout << display << std::endl; text_view.set_text(display); } Pythonの例 Python でインタープリターを作成するプロセスはほぼ同じですが、デリゲートが使用されている場合はそれをロードし、モデルをロードしてテンソルを割り当てる必要があります。 この例では、代わりに LiteRT が使用されていますが、API は同じままで、必要な変更は解釈されたものがどこからインポートされるかだけです。 次の最小限のコードを使用して、モデルと外部デリゲートを読み込むことができます。 from ai_edge_litert.interpreter import Interpreter # Create interpreter if delegate_path is not None: # attempt to load external delegate if provided (platform specific) try: from ai_edge_litert.interpreter import load_delegate delegate = load_delegate(delegate_path) self.interpreter = Interpreter(model_path=model_path, experimental_delegates=[delegate]) except Exception as e: raise RuntimeError(f"Failed to load delegate: {e}") else: self.interpreter = Interpreter(model_path=model_path) self.interpreter.allocate_tensors() これで使用できるインタープリターができました。入力テンソルを入力し、インタープリターを呼び出して、モデルからの結果を含む出力テンソルを取得するだけです。 # Set input input_details = self.interpreter.get_input_details()[0] self.interpreter.set_tensor(input_details['index'], input_data) # Run inference self.interpreter.invoke() # Get results out_details = self.interpreter.get_output_details()[0] output_data = self.interpreter.get_tensor(out_details['index']) これらの手順は、 nn_model.pyの下のラッパー クラスに含まれています。 モデルのベンチマーク リリースには、ランダムな入力を生成し、モデルで推論を実行するのにかかる時間を測定するための事前構築されたベンチマーク ツールが付属しています。以下は、i.MX93 でさまざまなモデルを実行した結果です。 ./benchmaark_model --graph=モデル --num_threads=コア数   CPU 1コア CPU 2コア NPU pytorch_cnn.tflite 1559.61米ドル 1023.22米ドル N/A cnn_tf_quant.tflite 585.37米ドル 379.69米ドル N/A cnn_tf_quant_vela.tflite N/A N/A 221.84米ドル これはもちろん単なる例ですが、専用ハードウェア上で実行すると推論速度が大幅に向上することがわかります。 以下は、Pytorch と Tensorflow でシンプルなモデルをトレーニングし、i.MX93 Ethos-65 ニューラル プロセッシング ユニット (NPU) と i.MX95 eIQ Neutron NPU を使用してアプリケーションにデプロイするためのガイドです。
記事全体を表示
在 i.MX9 板上为扩展接头启用 3.3 V 和 5 V 稳压器 该补丁系列支持 i.MX93-QSB、i.MX93-FRDM 和 i.MX91-FRDM 板上的树莓派扩展连接器使用的外部 3.3 V 和 5 V 电源轨。 这些调节器已在设备树中定义,但默认情况下处于禁用状态。通过激活它们,兼容 RPI 的扩展接头可以正确地为外部模块、HAT 和附加板供电。 董事会变更: i.MX93-QSB 启用 RPI 连接器使用的 3.3 V 和 5 V 外部供电线路。 i.MX93-FRDM 启用 RPI 连接器使用的 3.3 V 和 5 V 外部供电线路。 i.MX91-FRDM 启用 RPI 连接器使用的 3.3 V 和 5 V 外部供电线路。 目的是 为兼容 Raspberry Pi 的扩展端口提供适当的电源。 为连接外部 HAT 或模块的用户提高硬件兼容性。 对齐所有 i.MX9 参考板,为 RPI 连接器使用一致的电源树配置。
記事全体を表示
Freed Buffer out of Range Issue in Ethernet for RT1170 Hi, I am trying to execute basic ethernet testing from custom project on custom board. As a part of this project (which integrates different modules like SD card, CAN ,GPIO,ADC, Ethernet and EEPROM) basic ethernet send and receive is to be verified. But I am facing "freed buffer out of range error" before ping send. I have done all the basic initializations and configurations related to ethernet. I see the error is observed because of line  LWIP_ASSERT("Freed buffer out of range", ((idx >= 0) && (idx < ENET_RXBUFF_NUM))); in function "ethernetif_rx_free" (enet_ethernetif_kinetis.c) where the idx value I am getting it in negative. This complete functionality is working on EVK kit. What could be missing? Kindly suggest. Re: Freed Buffer out of Range Issue in Ethernet for RT1170 Hi, All The issue happens to me too on my RT1024 customer board, it is likely to happen when i put a breakpoint somewhere and it stops here, and then resume to normal running is more likely  ends up this error. Regards! Ping Re: Freed Buffer out of Range Issue in Ethernet for RT1170 If the example project is working fine in your custom board, seems the problem is on SW side. You are not using FreeRTOS right? Seems there is something interfering with the behavior of the example, probably some configurations are missing or just the example flow is being affected due the rest of the application. I would recommend you to try to use the latest SDK release which is 2.15.000. If your issue still occurs with this release, then I’m afraid there is something wrong with the flow of your application. Regards, Daniel. Re: Freed Buffer out of Range Issue in Ethernet for RT1170 Hi, Yes, the issue appears when implementing the merged source code in custom board. But, the individual source of Ethernet_ping,which was not merged with remaining interfaces is working fine in Custom board. Problem arises when the individual source of Ethernet is merged with remaining interfaces. Re: Freed Buffer out of Range Issue in Ethernet for RT1170 If I am understanding correctly, when you run the SDK example it works. But when you add your custom application, the issue appears. Can you confirm? Regards, Daniel. Re: Freed Buffer out of Range Issue in Ethernet for RT1170 Hi, Actually the individual source code of Ethernet is working fine in Custom board. When I'm trying to integrate the code then Ethernet is not working. I observed that EIR register's 25th (RXF), 26th (TXB), and 27th (TXF) bits are set to 0, and the RDAR register's 24th bit is updated to 0. But in working code of Ethernet this registers are set to '1'.  I suspect that these register updates are handled by interrupts, but I am unable to locate the specific handler responsible for these updates in my custom project codebase. Kindly help me. Re: Freed Buffer out of Range Issue in Ethernet for RT1170 Could you please double check if there are any peripheral changes (i.e. peripheral instances) needed in your project in order to make the EVK example work in your custom hardware? In case you already verified this, seems the problem is on the HW side. By any chance have you already verified your design with the HDG? Regards, Daniel. Re: Freed Buffer out of Range Issue in Ethernet for RT1170 Hi, I am using SDK version 11.6.1. I'm trying to test lwip_ping_bm_cm7 example. It is working fine in EVK. But it is not working in custom board when tried to interface all the source codes with Ethernet. What might be the issue if we are facing "Freed Buffer out of range" occurs. Please help me with this. Re: Freed Buffer out of Range Issue in Ethernet for RT1170 Hi, What SDK version are you using? What is the SDK example you are using to test this? If I understood correctly, the application works fine in an EVK, am I right? Regards, Daniel.
記事全体を表示
i.MXRT1064 カスタム ボードをデバッグできません。 こんにちは、 デバッグ モードでコードを実行しようとすると、「アドレス "0x20d102" でブレークしましたが、デバッグ情報が利用できません」というメッセージが表示されます。 私は i.MXRT1064 カスタム ボードを使用し、LinkServer LPC-Link2 を使用してプログラミングしています。 このボードは以前は問題なく動作していましたが、突然このメッセージが表示されます。 リリースモードを試してみました。リリース コードを使用してボードを正常にフラッシュすることはできますが、その後プログラムが実行されないようです。シリアル端末からもディスプレイからも出力が表示されません。 また、Secure Provisioning Tool を使用してこのボードをプログラミングしようとしましたが、まだ動作しません。 この問題に関して、どこに焦点を当てるべきか、または何か手がかりとなるものについて、どなたか助言をいただけませんか? Re: Unable to debug i.MXRT1064 custom board. こんにちは、MayLiuさん。 ご返信ありがとうございます。 以前、ご提案いただいた設定を試しましたが、デバッグしようとすると IDEs でエラー (MI コマンドの実行に失敗しました: -target-download) が表示されました。参考までに、そのエラーのスナップショットを添付しました。 前のメッセージに戻って、現在のプログラムが実行されているアドレスをチェックしたところ、コードが ROM 領域 (アドレス 0x20E35A) にあることが示されていたことを付け加えておきます。SO、何らかの理由で、コードはアプリケーション コードに到達/起動できず、ROM 内で停止します。私の仮定は正しいでしょうか?そんなシナリオがあり得るのでしょうか? Re: Unable to debug i.MXRT1064 custom board. こんにちは@nxpsachveさん、 弊社の製品にご興味をお持ちいただき、またコミュニティをご利用いただき誠にありがとうございます。 1: 「アプリケーションを RAM にリンク」を選択して再度デバッグしてみてください。 アプリケーションが RAM から正常に実行できる場合は、ボードをシリアル ダウンローダー モードに設定し、セキュア プロビジョニング ツールを使用して UART1 または USB1 でボードをプログラムしてください。   アプリケーションの実行に失敗した場合は、オシロスコープを使用してボードの電源投入シーケンスを確認することをお勧めします。   お役に立てれば幸いです。 よろしくお願いいたします。 メイリュー Re: Unable to debug i.MXRT1064 custom board. こんにちは@nxpsachveさん、 MCUXpresso IDE は BOOT 構成を変更するとは思いません。NXP RT 上のブート動作は、ハードウェア ブート構成とブート モード ピンによって決まります。 シリアル ダウンローダー モードでターゲットを検出できるため、ROM がまだ正常に実行されていることがわかります。次のステップとして、次のことが考えられます。 チップ全体の消去を実行します。 ボードを内部ブートモードに切り替え、 デバッグのためにMCUXpresso IDEに再接続してみてください。 あるいは、MCUXpresso Secure Provisioning Tool を使用してアプリケーション イメージをプログラムすることもできます。 よろしくお願いいたします。 メイリュー Re: Unable to debug i.MXRT1064 custom board. こんにちは@nxpsachveさん、 最新情報をありがとうございます。 提供された情報に基づくと、CPU は現在、アプリケーション コードではなく、Boot ROM からのコードを実行している可能性があります。   BOOT CFG と BOOT モード ピンの設定をチェックして、デバイスがユーザー フラッシュから起動するように構成されていることを確認することをお勧めします。   ボードをシリアル ダウンローダー モードに設定し、J-Link 経由で接続して、デバッガーがターゲットを検出して通信できるかどうかを確認することもできます。   よろしくお願いいたします。 マトリウ Re: Unable to debug i.MXRT1064 custom board. こんにちは、MayLiuさん。 ご提案ありがとうございます。 MCUXpresso 内に、BOOT Conf を変更したり影響を与えたりするような設定や構成があるかどうかを確認したいのですが。IDE を除外するためです。 リンク サーバーは、シリアル ダウンロード モードのときにターゲットを検出できます。
記事全体を表示
NETC IEEE 1588 定时器软件不符合 RM 要求 在 S32ZE NETC 参考手册 " 文档标识符:S32E27NETCRM 参考手册修订版 4,2024-12-12 ",3.2.5.3.1 带漂移和误差调整的正常模式中,它声称 " 在正常运行期间,对 1588 计时器配置(例如 TMROFF_H/L)的任何更改(例如 TMR_ADD 更新除外)都需要禁用 TSN 相关功能,例如时间门调度、特定时间出发安排、直播门控和速率管制。"但是 gPTP 软件或非 NETC 设备驱动程序都不符合此规范。 GPTP_STACK RTD Re: NETC IEEE 1588 timer software does not meet the requirement of RM 我们有恩智浦的 gPTP 软件模块,对吗? 它将调用函数"EthSwt_43_NETC_CorrectPtpClk" 更新当前时间。 我说的不是"提供的有关修正定时器" 的功能。 我的问题是,当 gPTP 调用 EthSwt_43_NETC_CorrectPtpClk() 函数更新当前时间时,如何使 802.1Qbv 功能不受影响? Re: NETC IEEE 1588 timer software does not meet the requirement of RM 你好@双君竹、 ETH 驱动程序 RTD2.0.1 遵循 ASR 21-11,其中只包括一些用于时间戳的 api 函数,如 因此,我认为他们没有提供你所说的修正定时器的功能。似乎 ASR23-11 将支持有关修正计时器的功能,或者 gPTP 如果需要在 ASR21-11 中使用这些功能,则必须提出更改要求的请求。 顺祝商祺! Nhi Re: NETC IEEE 1588 timer software does not meet the requirement of RM 感谢您的关注。正如您所说,"驱动程序目前只支持从 TMR 寄存器获取当前定时器,不支持配置" ,我不明白。 用 gPTP 软件更改 OFFSET 寄存器如何?我认为 gPTP 软件肯定需要更改 OFFSET 寄存器。我的问题是,当 gPTP 软件试图更改 OFFSET 寄存器时,如何跟进 RM,以保持 TSN 功能(例如 802.1Qbv 功能)的顺利运行? Re: NETC IEEE 1588 timer software does not meet the requirement of RM 你好@双君竹、 我来回答 NETC 司机的这个问题。 -针对ZE用上市的最新版本是继RM rev 3之后的RTD 2.0.1,据我所知,下一个版本RTD 2.0.2仍遵循RM Rev 3。但是,如果有任何关于 RM 版本的更新,SW 团队会开票检查新旧 RM 之间的变化。我想他们能察觉到这种变化。 - 据我所知,直到现在,驱动程序支持的时间戳都是默认计数 TMR_CTRL[TE] = 0,而 EthEnableFreeRunningTimer 功能刚刚添加到 RTD 2.0.1,可在 1588 定时器 TMR_CTRL[TE] = 1 中工作。当前定时器将从 1588 寄存器 TMR_FRT_L/H 中获取,但这里似乎存在一个错误,因为我没有在任何地方设置 TE(详情请参见票据:ARTDCC1-593)。总之,到目前为止,驱动程序只支持从 TMR 寄存器获取当前定时器,而不支持对其进行配置。如果用户想更改 1588 寄存器配置,就会出现你所说的情况。 顺祝商祺! Nhi Re: NETC IEEE 1588 timer software does not meet the requirement of RM 你好@双君竹、 您的意思是,在更改 1588 寄存器列表之前停止 TSN 功能,对吗? 我看到当前的驱动程序不支持停止 TSN 的功能。如果要禁用 TSN 中的每个功能,似乎需要删除每个表中的条目。例如 - 费率策略:Netc_EthSwt_Ip_DeleteRatePolicerTableEntry(); - Netc_EthSwt_Ip_DeleteStreamGateControlListTableEntry(); -EthSwt_43_NETC_StopTas(); 顺祝商祺! Nhi Re: NETC IEEE 1588 timer software does not meet the requirement of RM 你好@双君竹、 在我看来,问题不仅在于启用了多少 TSN 功能,因为如果客户使用 ASR 上下文,这些功能在预编译时会通过宏启用/禁用,但也会在每个功能中启用/禁用。大家都知道,每个功能 Rate policing、流闸......都是通过下表控制的: 如果用户只是在配置工具中配置了元素,那么在禁用此功能时,SW 团队可以控制删除多少带有条目 ID 的条目。但是,如果用户通过调用函数来添加元素,那么 SW 就无法知道。但我认为用户可以在自己的应用程序中进行控制。也许我错过了一些东西,但我知道TSN将引用计时器值,因此在更改计时器配置之前将其停止并重新开始以获取新的计时器值是有意义的。我相信 SW 团队在分析该票据时会有深刻的见解。 顺祝商祺! Nhi Re: NETC IEEE 1588 timer software does not meet the requirement of RM 你好@双君竹、 如果您不再了解 ETH 驱动程序,请将 RTD 从本主题中删除,以便 gPTP 的人可以回答您的问题。 顺祝商祺! Nhi Re: NETC IEEE 1588 timer software does not meet the requirement of RM 您好, 在 gPTP 更改计时器偏移寄存器之前,我并不想禁用 TSN 功能。这是 NETC RM 的要求。 客户要求 NXP 提供符合 RM 规范的官方解决方案:如何禁用 TSN 功能,即在这种情况下,IEEE802.1Qbv客户认为这应该由恩智浦提供,因为这是硬件要求和与硬件相关的编码。 顺便说一句,我认为你的建议需要精心设计。特别是对于 802.1Qbv,如何使应用流量不受 gPTP 同步操作的影响。例如,某些流量是否可能会延迟一个 Qbv 计划周期? 谢谢! 杰夫 Re: NETC IEEE 1588 timer software does not meet the requirement of RM 您好, 是的,我还有一个问题。请帮助检查如何从以太网驱动程序的角度禁用/重新启用 802.1Qbv。并请帮助分析这种操作是否会导致 802.1Qbv 计划周期中的一个关键流量延迟? 谢谢! 杰夫 Re: NETC IEEE 1588 timer software does not meet the requirement of RM 您好, 感谢您的大力帮助。 请允许我为 AUTO 客户强调一件非常重要的事情,即当他们使用 TSN IEEE802.1Qbv 功能时,当然也需要根据 802.1Qbv 时间同步要求启用 gPTP。 他们担心 gPTP 是否会影响一个 802.1 Qbv 时隙内的关键流量。我们(恩智浦)需要澄清这一点,并提供如何做到这一点。这是一个非常专注和明确的要求。这是一个很好的例子或用例,可以让你了解情况。 是的,我们不知道客户启用了多少 TSN 功能。但是,对于每个可能使用的人,我们都需要一个解决方案。客户可以根据自己的使用情况做出正确的选择。 谢谢! 杰夫 Re: NETC IEEE 1588 timer software does not meet the requirement of RM 你好@双君竹、 在我看来,ETH 驾驶员的这一要求很难得到满足,因为其官方职能就是停止 TSN 的运行。如你所见,要禁用端口门时间表,只需要 RESET 位时间门启用 PTGSCR[ TG E] 即可。但对于某些 TSN 功能(如费率策略),该功能是根据该表中的元素启用/禁用的。但是从ETH来看,我们不知道该表中添加了条目来删除或更新元素以禁用它们,上层可以更好地处理这个问题。因此,我在之前的答复中建议调用函数删除每个表中的条目。 如果用户没有启用选项功能:速率 Policing、流闸控制列表......,可以使用函数EthSwt_43_NETC_StopTas()禁用 TSN。 总之,我创建了 ARTDCC1-607 票据,您可以关注它以获得 SW 团队的分析,以防我遗漏了什么。而且 RM Rev4 尚未适用于 RTD 版本。如果您对 ETH 这个主题没有更多的了解,请告诉我,我会把这个案例交给 gPTP,让他们继续从他们的角度回答您的问题。 顺祝商祺! Nhi Re: NETC IEEE 1588 timer software does not meet the requirement of RM 你好@双君竹、 我看到 802.1 Qbv 功能同时支持 NETC 和交换机。因此,您可以通过以下方式配置该功能: - Eth_NETC: - 端口开关: 这些功能是 用于 ETH_NETC: - Eth_43_NETC_StartTas() - Eth_43_NETC_StopTas() 用于端口交换机: -EthSwt_43_NETC_StartTas() -EthSwt_43_NETC_StopTas() 对于这个问题:" 从我的角度来看,分析这种操作是否会导致 802.1Qbv 计划周期 " 中的关键流量延迟,因为你可以看看启用/禁用此功能的 netc/portswt_ip_configportTimegateScheduling () 函数,要禁用此功能,只需要 RESET 一点但启用此功能,需要启用门禁时间并设置门禁时间表。这次可以测量。 我理解您的意思是"802.1Qbv 计划周期之一" 是指网关控制列表的执行时间应重复,对吗?如果是,则可以进行配置。 顺祝商祺! Nhi Re: NETC IEEE 1588 timer software does not meet the requirement of RM 您好, 看来你还没明白我的问题。请给我更详细的描述。假设客户有一个 Qbv 配置,它处于运行状态,参数如下: 1. 周期时间为 10ms 2. 在一个 10 毫秒的时间段内,有两个时隙,每个时隙 5 毫秒。换句话说,闸门列表中有两个条目。 3.假设在第一个时隙开放时,NETC 正在传输关键帧。此时 gPTP 开始更新当前时间,根据 RM 的要求,客户需要禁用/重新启用 802.1Qbv。 4.802.1Qbv 重新启用后,NETC 硬件可能会继续打开时隙 1,或进入门列表第 2 项,或等待新的 Qbc 计划周期。 如果硬件进入第 2 个条目,则表示 NETC 队列中的关键帧将在下一个 10 毫秒周期内发送。这可能会造成严重的延误,影响应用。 5.客户询问如何避免这种情况。换句话说,如何平稳地禁用/重新启用 Qbv,以减少对应用程序的影响。 希望这能让你明白。 谢谢! Re: NETC IEEE 1588 timer software does not meet the requirement of RM 您好, 除了我在之前的回复中提到的两个功能外,我没有看到其他启用/禁用 TAS 的方法。在我看来,当禁用时间门控制时,它的所有功能也会被禁用,如时间间隔、周期......。禁用和启用 TAS 之间的时间间隔,包括完成更新 gPTP 定时器的时间。启用 TAS 后,基准时间将根据当前时间更新。除非新的基准时间 = 下一个旧的间隔时间,否则无法满足您的要求。 我对此没有更多的了解,我也在上述票单中更新了这个问题,以便 SW 团队对您的情况提出建议。 顺祝商祺! Nhi
記事全体を表示
McuPGOOD_POLARITYControl Configuration Error Reported When EB Updates RTD 7.0.0_QLP03 This McuPGOOD_POLARITYControl configuration item is not found under this path Re: EB更新RTD 7.0.0_QLP03时报告McuPGOOD_POLARITYControl配置错误 Hi@WeiCh I'm not sure if you can download it, you can try it, if not, contact your agent or FAE for evaluation access. https://www.nxp.com/design/design-center/software/automotive-software-and-tools/real-time-drivers-rtd:AUTOMOTIVE-RTD Re: EB更新RTD 7.0.0_QLP03时报告McuPGOOD_POLARITYControl配置错误 Where can I download 30.0.0?Will 30.0.0 open a 29.0.0 project? Re: EB更新RTD 7.0.0_QLP03时报告McuPGOOD_POLARITYControl配置错误 Hi@WeiCh I see that the version of EB Tresos that this version adapts to should be 30.0.0, not the version you are using. Re: EB更新RTD 7.0.0_QLP03时报告McuPGOOD_POLARITYControl配置错误 Hi@WeiCh In the download screen there is this hint that you have to change the suffix Re: EB更新RTD 7.0.0_QLP03时报告McuPGOOD_POLARITYControl配置错误 It's already working, thanks! Re: EB更新RTD 7.0.0_QLP03时报告McuPGOOD_POLARITYControl配置错误 This is the 30.0.0 interface, which still doesn't seem to have this configuration item. Re: EB更新RTD 7.0.0_QLP03时报告McuPGOOD_POLARITYControl配置错误 Hi@WeiCh The style of your interface is not right, the style of the new version is totally different from the old one. Re: EB更新RTD 7.0.0_QLP03时报告McuPGOOD_POLARITYControl配置错误 There seems to be a bit of a problem, running setup prompts that there is no installer, you can unzip EBtresosStudio_EBtresosStudio.zip and open the app directly, but the app interface is still old: Re: EB更新RTD 7.0.0_QLP03时报告McuPGOOD_POLARITYControl配置错误 Hi@WeiCh Okay, you're welcome.
記事全体を表示
高级声明式用户界面框架 是否有适用于 i.MX RT 跨界 MCU 的高级声明式用户界面框架?我希望能用 Swift 或 JavaScript 等高级语言编写代码,然后使用类似 SwiftUI 或 React 的东西创建用户界面。 Re: High level declarative UI framework 你好@MatthewRuzzi、 感谢您关注恩智浦 MIMXRT 系列! 恩智浦正式提供 GuiGuider 工具,以 LVGL 作为底层框架,帮助客户快速开发用户界面软件。此外,SDK 还包括 emWin 和 VGLite 的示例项目。虽然目前官方并不支持高级语言的实现,但我建议探索以下方法: 1.https://doc.qt.io/QtForMCUs/qtul-zephyr-mimx1060-evk.html https://www.embeddedartists.com/wp-content/uploads/2023/06/QtMCUs_ProgramDevelopment.pdf 2https://www.nxp.com/design/design-center/training/TIP-CREATE-USER-INTERFACE-QT 3.https://docs.microej.com/en/latest/GettingStarted/gettingStartedIMXRT1170.html 4.https://github.com/lvgl/lv_micropython 5.https://www.swift.org/blog/embedded-swift-examples/ 我希望这些资源能对您的发展有所启发。 致以最诚挚的问候, Gavin Re: High level declarative UI framework 目前是否有任何项目正在开展这方面的工作?我非常希望能够使用 Swift 或 JavaScript 这样的语言。有什么办法能让我今后更有可能这样做吗?我应该在哪些地方提交或投票表决功能请求,或者在哪些地方发布此信息?
記事全体を表示
EB更新RTD 7.0.0_QLP03时报告McuPGOOD_POLARITYControl配置错误 这个McuPGOOD_POLARITYControl配置项在该路径下找不到 Re: EB更新RTD 7.0.0_QLP03时报告McuPGOOD_POLARITYControl配置错误 Hi@WeiCh 我不确定你是否可以下载,你可以尝试一下,如果不可以,请联系你的代理商或者FAE来获取评估权限。 https://www.nxp.com/design/design-center/software/automotive-software-and-tools/real-time-drivers-rtd:AUTOMOTIVE-RTD Re: EB更新RTD 7.0.0_QLP03时报告McuPGOOD_POLARITYControl配置错误 在哪可以下载30.0.0吗?30.0.0能打开29.0.0的工程吗? Re: EB更新RTD 7.0.0_QLP03时报告McuPGOOD_POLARITYControl配置错误 Hi@WeiCh 我看这个版本适配的EB Tresos版本应该是30.0.0,不是你所使用的版本。 Re: EB更新RTD 7.0.0_QLP03时报告McuPGOOD_POLARITYControl配置错误 Hi@WeiCh 你这界面的风格不对阿,新版本的风格和之前旧的完全不一样的,你的界面还是老版本的风格。 Re: EB更新RTD 7.0.0_QLP03时报告McuPGOOD_POLARITYControl配置错误 Hi@WeiCh ok,不客气 Re: EB更新RTD 7.0.0_QLP03时报告McuPGOOD_POLARITYControl配置错误 Hi@WeiCh 在下载界面有这样的提示,你要修改后缀 Re: EB更新RTD 7.0.0_QLP03时报告McuPGOOD_POLARITYControl配置错误 好像有点问题,运行setup提示没有安装包,可以解压EBtresosStudio_EBtresosStudio.zip后直接打开应用,但应用界面还是旧的: Re: EB更新RTD 7.0.0_QLP03时报告McuPGOOD_POLARITYControl配置错误 这是30.0.0的界面,好像还是没有这个配置项。 Re: EB更新RTD 7.0.0_QLP03时报告McuPGOOD_POLARITYControl配置错误 已经可以了,感谢!
記事全体を表示
RW612 MCUBoot + TF-M が起動しない こんにちは、 TF-M + MCUBoot の例を使用して、FRDM-RW612 に非常によく似たカスタム ボード セットアップをフラッシュする際に問題が発生しています。 nxp-zephyr リポジトリの最新バージョン (v4.3.0) では、チュートリアルの一部のファイルが変更されているようです。できる限り従おうとしましたが、ボードがまだ正しく起動しません。 MCUBoot ブートローダーだけをフラッシュすると、予想どおりの出力エラー「起動可能なイメージが見つかりません」が表示されます。ガイドの指示に従って PSA 暗号サンプルをフラッシュすると、ターミナルに何も出力されず、MCUBoot テキストも表示されなくなります。端末の問題だけの場合に備えて、点滅サンプルでもテストしましたが、そのCASEはボードの LED も点滅しません。 これらのサンプルは両方とも、MCUBoot なしで TF-M だけをフラッシュすると起動して実行されます ( west build -b frdm_rw612//ns samples/basic/blinky --pristine && west flash )。 このCASE、私は奇妙な癖にも気づきました。ペリフェラルとしてflexcomm3を使用する必要があるため、Zephyrコンソールを別の出力に切り替えたいと考えました。デバイス ツリーを編集すると、さまざまな問題が発生します。   1. zephyrコンソールをFlexcomm3からFlexcomm2に切り替える boards/nxp/frdm_rw612/frdm_rw612_common.dtsi に次の編集を加えました。 i2c-0エイリアスを削除しました ambient-temp0 エイリアスを削除しました chose/zephyr,console を &flexcomm2 に置き換えました flexcomm2 ノードを追加しました: &flexcomm2 { compatible = "nxp,lpc-usart"; status = "okay"; current-speed = <115200>; pinctrl-0 = <&pinmux_flexcomm2_usart>; pinctrl-names = "default"; wakeup-source; }; nxp_pmod_touch_panel_i2c、arduino_i2c、mikrobus_i2cノードを削除しました そして、 boards/nxp/frdm_rw612/frdm_rw612-pinctrl.dtsi に flexcomm2 pinctrl を追加しました: &pinctrl { pinmux_flexcomm2_usart: pinmux_flexcomm2_usart { group0 { pinmux = ; slew-rate = "normal"; bias-pull-up; }; }; }; そしてその後、FC3 をコンソールとして使用したときに動作したのとまったく同じ点滅コードをフラッシュすると、FC3 でブートローダーの出力が表示されます (下記)。ただし、FC2 では何も出力されず、LED も点滅しません。 [INF] Starting bootloader [WRN] This device was provisioned with dummy keys. This device is NOT SECURE [INF] PSA Crypto init done, sig_type: EC-P256, using builtin keys [INF] Image index: 1, Swap type: none [INF] Image index: 0, Swap type: none [INF] Bootloader chainload address offset: 0x20000 [INF] Image version: v0.0.0 [INF] Jumping to the first image slot Booting TF-M v2.2.0+g3b3595f16 [WRN] This device was provisioned with dummy keys. This device is NOT SECURE [Sec Thread] Secure image initializing! [INF][PS] Encryption alg: 0x5500100 [INF][Crypto] Provision entropy seed... [INF][Crypto] Provision entropy seed... complete. 2. ZephyrコンソールをFlexcomm3からFlexcomm14に切り替える chose/zephyr,console を &flexcomm14 に置き換えました flexcomm14 ノードを追加しました:   &flexcomm14 { compatible = "nxp,lpc-usart"; status = "disabled"; current-speed = <115200>; pinctrl-0 = <&pinmux_flexcomm14_usart>; pinctrl-names = "default"; wakeup-source; }; そして、 boards/nxp/frdm_rw612/frdm_rw612-pinctrl.dtsiにflexcomm14 pinctrlを追加しました: &pinctrl { pinmux_flexcomm14_usart: pinmux_flexcomm14_usart { group0 { pinmux = ; slew-rate = "normal"; }; }; }; これらの編集により、FC3 または FC14 に出力が表示されなくなり、LED もまったく点滅しなくなりました。 TF-M + MCUBoot で発生している問題が TF-M のみのコンソール出力の問題に関連しているかどうかはわかりませんが、念のためそれを含めておこうと思いました。私の最終目標は、起動後にファームウェアのアップデートを実行できるように MCUBoot と TF-M を用意することです。また、ペリフェラルとして Flexcomm3 を使用する必要があるため、FRDM-RW612 が使用するものとは異なるコンソール出力が必要です。 また、TF-M も MCUBoot も使用していない場合でも、ボードをフラッシュして FC14 でコンソールに印刷できることにも注意してください。これらのサブシステムを有効にした後でのみ、フラッシュ/ブートに関する問題が発生しました。 どのようなご助力も大歓迎です、ありがとうございます! Re: RW612 MCUBoot + TF-M Not Booting proj.conf をいろいろ試してみたところ、問題はフラッシュ サブシステムに関連するものであることがわかりました。 現在、TF-M なしで MCUBoot をテストしていますが、実行されるアプリと行Iで停止するアプリの違いは、最初のイメージ スロットにジャンプすることが、次の KConfig オプションの 1 つ以上であることです。   CONFIG_FLASH_FILL_BUFFER_SIZE=32 CONFIG_FLASH=y CONFIG_FLASH_MCUX_FLEXSPI_XIP_MEM="RAM" CONFIG_FLASH_INIT_PRIORITY=50 CONFIG_FLASH_HAS_DRIVER_ENABLED=y CONFIG_FLASH_HAS_EXPLICIT_ERASE=y CONFIG_FLASH_HAS_PAGE_LAYOUT=y CONFIG_FLASH_JESD216=y CONFIG_FLASH_MCUX_FLEXSPI_NOR=y CONFIG_MEMC_MCUX_FLEXSPI=y MCUBoot と NXP のフラッシュ ファイルを調べてきましたが、正しい方向に進んでいるかどうかわかりません。次の行のようになります: (( void ( * )( void )) vt ->リセット)(); MCUBoot の Zephyr main.c の do_boot() 関数は、GDB でデバッグできる最後の場所です。そのリセット「関数」が呼び出された後、PC は 0x20005840 にあり、続行/ステップ実行では何も行われず、プログラムはハングするだけです。   繰り返しになりますが、この問題をデバッグするにはどこを参照すればよいかという助言やヒントがあれば、ぜひ教えてください。ありがとうございます! Re: RW612 MCUBoot + TF-M Not Booting こんにちは、リカルドさん。元の投稿が散漫になっていたらごめんなさい。 TF-M + MCUBoot ガイドを最初から完全に開始して、問題点をリストアップすることができました。通常の開発では VSCode 用の MCUXpresso を使用しますが、ガイドでは west コマンドライン ツールを使用しているため、ここでもそれを使用しました。 TF-M + MCUBoot ガイドの問題 (nxp_zephyr タグ nxp-v4.3.0) - 「セキュア イメージの変更」の手順 6 の「ダウンストリームから TF-M をビルドしてフラッシュする」では、M_BOOT_FLASH_CONF_START は BOOT_FLASH_ACT_APP と同じである必要があると記載されています。リポジトリ内のどこにも BOOT_FLASH_ACT_APP が見つかりませんでした。何に設定されているか確認する方法がわかりません。#define M_BOOT_FLASH_CONF_START (0x18020000)を使用しました - 「セキュア イメージの変更」の手順 8 では、ガイドでは hardware_init.c の SystemInitHook に VTOR 構成を追加するように指示されていますが、そのコードはすでに存在しているようです。そのままにしておいた。 - 「非セキュア イメージの変更」セクションでは、 nxp_zephyr\Zephyr\build\tfm\api_ns\platform\partitionフォルダー内のファイルを編集するようにガイドで指示されていますが、 nxp_zephyr\Zephyr\build はデフォルトでは存在しません。この時点では、ガイドでは何も構築するように指示されていません。後でアプリをビルドした後、手順 2 ~ 6 のファイルはすでに正しい値に変更されていました。 - 「非セキュア イメージの変更」の手順 7 に、 nxp_zephyr/zsdk/boardsディレクトリがありません。これはnxp_zephyr/Zephyr/boardsであると想定しているので、そのパスで手順 8 に従いました。 - ガイドに従ってnxp_zephyr/zephyr/boards/nxp/frdm_rw612/frdm_rw612_rw612_ns.dtsを編集した後、次のビルド エラーが発生します:必要なノードラベルが見つかりません: slot0_partition 。その編集を行う代わりに、デフォルトのデバイス ツリー ファイルを使用してビルドすると、サンプルはほぼ完全にビルドされますが、最後のステップでエラーが発生します。 トレースバック(最新の呼び出しが最後): ... intelhex.AddressOverlapError: アドレス 0x18020000 でデータが重複しています 上記の例外の処理中に、別の例外が発生しました: ... intelhex.AddressOverlapError: /nxp_zephyr/zephyr/build/zephyr/tfm_s_signed.hex にマージの問題があります 私はこのエラーを無視してガイドを続行しました。 - 最後に発生した問題は、手順 3 の「バイナリのマージ」セクションで、 「エラー: このようなコマンド 'merge' はありません」というエラーが発生したことです。私にとっては同様の機能があるように見えたので、merge の代わりに「export」コマンドを使用しました。 これらの調整を行い、ガイドの指示に従ってフラッシュした後でも、次のターミナル出力が得られます。 *** Booting MCUboot v2.2.0-192-g96576b341ee1 *** *** Using Zephyr OS build nxp-v4.3.0 *** I: Starting bootloader I: Image index: 0, Swap type: perm I: Image index: 0, Swap type: perm I: Primary image: magic=bad, swap_type=0x0, copy_done=0x2, image_ok=0x2 I: Secondary image: magic=good, swap_type=0x1, copy_done=0x3, image_ok=0x1 I: Boot source: none I: Image index: 0, Swap type: perm I: Image index: 0, Swap type: perm I: Image index: 0, Swap type: perm I: Image index: 0, Swap type: perm E: Image in the primary slot is not valid! E: Unable to find bootable image ガイドの指示に対して行った調整のいずれかが問題の原因なのか、更新された Zephyr リポジトリのその他の違いなのかはわかりません。ご返信ありがとうございます。 Re: RW612 MCUBoot + TF-M Not Booting こんにちは、 あなたの調子が良いといいのですが。セットアップの詳細を教えていただけますか? VSCode で MCUXpresso を使用していますか? flexcomms に関連するすべての変更を実装する前に、投稿をフォローできるかどうかを明確にしていただけますか?(それぞれのバージョンの変更あり) よろしくお願いいたします。 リカルド Re: RW612 MCUBoot + TF-M Not Booting こんにちは@jm-streametric さん、お元気ですか。 あなたが参照しているガイド ( RW612 を使用した Zephyr MCUboot + TFM デモ) は、4.2.0 より前のバージョンの Zephyr にのみ適用されます。この場合、Zephyr v4.3.0 (NXP のダウンストリーム リポジトリ) の例をビルドしてフラッシュする手順は、FRDM-RW612 の方が簡単です。psa_crypto の例をビルドしてフラッシュするには、以下の手順を参照してください。 リポジトリから例をインポートをクリックします。 NXP のダウンストリーム リポジトリ V4.3.0 を選択します。FRDM-RW612 の TF-M サポートがメインの Zephyr リポジトリに完全には追加されていないため、これは重要です。次に、FRDM-RW612 の非セキュア バージョンを選択します。 psa_crypto の例を選択し、[インポート] ボタンをクリックします。 最後に、サンプルをビルドしてボードにフラッシュします (必要に応じてデバッグ セッションを開くこともできます)。すべてが正しく実行された場合、シリアル端末のログは次の画像のようになります。 現時点では、この手順はFRDM-RW612 ボードにのみ適用されます。RW612をカスタム ボードで使用しているため、ボードに TF-M サポートを追加するには、必要な変更を確認して行う必要があります。考慮すべき主なポイントは、使用しているフラッシュ デバイスです。したがって、この点に違いがある場合は、より大きなポートを動作させる必要がある場合があります。 Zephyr コンソールに使用される Flexcomm インスタンスの変更で発生した問題に関しては、 boards/nxp/frdm_rw612/frdm_rw612_common.dtsiファイルで直接変更しないでください。この変更はビルド時にデフォルトに書き換えられるため、代わりにfrdm_rw612.overlayファイルを使用して変更を追加してみてください。このオーバーレイは Zephyr のデフォルトのデバイス ツリー ファイルに優先され、変更が維持されます。 情報が役に立つかどうかお知らせください。 Re: RW612 MCUBoot + TF-M Not Booting こんにちは、ローマン。 ご返信ありがとうございます!あなたの指示に従って、ボード上で作業を行うことができました :)。私のカスタム ボード上のフラッシュ レイアウトは FRDM-RW612 と同じなので、幸いなことにそこで変更する必要はありません。 オーバーレイを追加するのは良い点ですが、以前はそれを試してみようとは思いませんでした。 続いて、TF-M secure + BL2 システムの FlexComm 出力を変更することは可能ですか?ペリフェラルが搭載されているため、デフォルトの Flexcomm3 インターフェイスを使用できません。現在、デバッグ出力を無音にしていますが、BL2 + S ビルドを変更して、たとえば FC3 ではなく FC14 USART に出力できる場所はありますか? ありがとう! Re: RW612 MCUBoot + TF-M Not Booting こんにちは@jm-streametric 。 Flexcomm に関するご質問について: 現在の実装では、TF-M はUSART3 を使用するように「ハードコード」されています。別の USART インスタンスに切り替える必要がある場合は、次の場所にある TF-M プラットフォーム ファイルを確認して変更します。 /modules/tee/tf-m/trusted-firmware-m/platform/ext/target/nxp/frdmrw612 まず、 platform_base_address.hを確認することをお勧めします。ファイルの場所: frdmrw612/Device/Include このファイルは、TF-M で使用される USART インスタンスを含む、プラットフォーム レベルのベース アドレスを定義します。 さらに、同じ TF-M ターゲット ディレクトリ内の project_template フォルダーには、USART の初期構成コードがあります。これらの初期化により、USART3が現在どのように設定されているか、また、別のUSARTインスタンスに切り替えるためにどこに変更を適用するかが明確になります。 この情報がお役に立てれば幸いです! Re: RW612 MCUBoot + TF-M Not Booting こんにちは@jm-streametric さん、お元気ですか。 デバイス ツリーで、Flexcomm14 を参照するノードが正しく構成され、アクティブ化されているかどうかを確認してください。次の例のように、ステータス プロパティが「okay」に設定されていることを確認します。 flexcomm14: flexcomm@126000 { status = "okay"; }; これが役に立つことを願います! Re: RW612 MCUBoot + TF-M Not Booting こんにちは、ローマン。 TF-M システムで使用される USART を切り替えようとしました。すべての定義をtarget/nxp/frdmrw612/project_template/* board.hに切り替えるとおよび pin_mux.cFC3/USART3 -> FC2/USART2 への変更は機能します。 ただし、同じ手順を実行しても、FC14/USART14 に変更すると、BL2 プログラムがハングします。bl2.elf を使って addr2line でハングしているアドレスを実行したところ、プログラムは target/nxp/frdmrw612/Native_Driver/drivers/fsl_reset.c でループしたままになっているようです。51行目。FC14 ペリフェラルのリセットは 67 行目のスイッチ CASE を使用する必要があると思うので、これは正しくないように思えますが、addr2line に問題がある可能性があります。 いずれにしても、TF-M システムを USART14 に印刷するように切り替えた場合、BL2 プログラムがハングし、Zephyr アプリが起動しなくなります。これまでにこの問題を見たことがありますか? また、なぜこの問題が発生するのかの手がかりはありますか? Re: RW612 MCUBoot + TF-M Not Booting こんにちは、ローマン。 はい、flexcomm14 ノードを「正常」ステータスに設定しました。私の質問は BL2/Secure Environment のログ記録に関するものです。これら 2 つのバイナリは別々にビルドされるため、zephyr デバイスツリーは適用されないと思いますか?
記事全体を表示
如何替换自定义板的 Yocto 电路板支持包中的 DDR 二进制文件? 你好 正在尝试替换自定义板的 Yocto 电路板支持包 中的 DDR 二进制。 新计算机已创建,配方 ddr-firmware 的目录也是在自定义元层中创建的,其中包含所需的文件。但是,为 SRC_URI 分配新值并删除配方附加中的原始值并不能阻止 Bitbake 在评估板的原始路径中搜索。不使用配方追加也不会改变本次搜索的任何内容。 似乎唯一有效的方法是掩盖原始配方并在自定义层中创建新配方。 但我不认为这是一种可取的方式。使用为自定义计算机创建的 DDR 二进制文件应该很容易做到这一点。这里可能遗漏了什么? 谢谢您! 起重机 Re: How to replace DDR binaries in Yocto BSP for the custom board? 好的,它能用。似乎与 NXP_FIRMWARE_LOCAL_DIR 中设置的文件夹不一致。但不管怎么说,它还是有用的。 还有一个问题,如何关闭自定义层 .bbappend 中的 NXP-EULA 许可证? 此致, 起重机 Re: How to replace DDR binaries in Yocto BSP for the custom board? 嗨,仙鹤 感谢您的回复。 客户的 DDR 还应该有 DDR 固件,你能否尝试参考 S32G3_Linuxbsp_44.0_user_Manual.pdf 在 Yocto 中版本电路板支持包期间添加 DDR 固件。 BR 乔伊 Re: How to replace DDR binaries in Yocto BSP for the custom board? 你好,乔伊、 感谢您的回复。 它是 S32G3,电路板支持包 是 "bsp44.0"。 此致, 起重机 Re: How to replace DDR binaries in Yocto BSP for the custom board? 嗨,起重机 感谢您与我们联系。 你使用的是哪个版本的电路板支持包? 您使用的是 S32G3 还是 S32G2 芯片? BR 乔伊 Re: How to replace DDR binaries in Yocto BSP for the custom board? 嗨,乔伊、 添加 .bbappend 时尝试过,但不起作用用于定制板。 ERROR: /home/crane/work/yocto/sources/meta-alb/meta-alb-bsp/recipes-bsp/ddr-firmware/ddr-firmware.bb: Unable to get checksum for ddr-firmware SRC_URI entry NXP-EULA: file could not be found The following paths were searched: 尝试了 .bbappend只有 SUMMARY,LICENSE ="CLOSED" 和 LIC_FILES_CHKSUM ="" ,也试过不使用 .bbappend、都得到了相同的错误信息。 这是处理自定义 DDR 二进制文件的唯一方法是掩盖恩智浦的原始配方并创建自定义配方,而不是根据原始配方添加配方附加吗? 此致, 起重机 Re: How to replace DDR binaries in Yocto BSP for the custom board? 嗨,仙鹤 请尝试修改文件夹 (fsl-auto-yocto-电路板支持包-build_s32g274ardb2/conf) 中 local.conf 文件。 accept_fsl_eula ="1" BR 乔伊 Re: How to replace DDR binaries in Yocto BSP for the custom board? 嗨,起重机 您是否在文件夹中添加了 NXP-EULA 文件? BR 乔伊 Re: How to replace DDR binaries in Yocto BSP for the custom board? 嗨,乔伊、 我试图将这个文件复制到原始配方或自定义配方中,但都不起作用。两种方法都能找到文件,但都会产生以下错误信息: ERROR: No recipes in default available for: /home/crane/work/yocto/sources/meta-crane/recipes-bsp/ddr-firmware/ddr-firmware_%.bbappend 由于我没有使用恩智浦的DDR二进制文件,我认为使用恩智浦生成的NXP-EULA没有意义。禁用检查 NXP-EULA 是感知的,对吧? 此致, 起重机 Re: How to replace DDR binaries in Yocto BSP for the custom board? 嗨,起重机 感谢您的回复。 我们应该找到问题的根源。请尝试在 Yocto 中版本 BSP44 以使用恩智浦的 DDR 固件和 NXP-EULA 文件。如果你能成功版本 BSP44,你可以尝试更换 DDR 固件,然后重新版本。 BR 乔伊
記事全体を表示
针对同步动态随机存取存储器(SDRAM)版本构建的 RT1170 调试 您好, 我正在使用 MCUXpresso 及其 SDK 为 RT1170 开发一个应用程序。 所提供的示例项目似乎都是使用 “DTC” RAM 版本的。与许多其他用户一样,我的应用程序太大了,无法容纳在那里,所以我正在尝试使用“同步动态随机存取存储器(SDRAM)”。 在尝试了论坛上其他一些帖子(尤其是https://community.nxp.com/t5/i-MX-RT/MCUXpresso-and-RT1050-download-and-debug-in-SDRAM/m-p/896979)中提出的解决方案后现在,我可以执行我的程序,如果应用程序已闪存,我还可以调试程序。 但是,如果我使用 “将应用程序链接到RAM” 进行版本和执行,那么一旦遇到断点,应用程序通常会卡在那里。 我的假设是这是因为我没有正确初始化同步动态随机存取存储器(SDRAM)。上述文章使用 “rt1050_SDRAM_init.scp 作为调试器初始化 同步动态随机存取存储器(SDRAM) 控制器的连接脚本”。如果我使用这个文件,失败也就不足为奇了。 我不知道如何调整这个脚本才能在 RT1170 上运行。有没有人这样做过,或者能提供如何生成的建议? 感谢您提供的任何帮助。 Re: RT1170 debugging when application is built for SDRAM 你好@ Jingpan 按照提供的步骤,使用 RT1170_BriefOverview_v210.pdf 中提到的修改刷新 hello world,我可以在调试模式下使用同步动态随机存取存储器(SDRAM)。 但是在这种变化之后,同步动态随机存取存储器(SDRAM)也用于存储代码。 在我的应用程序中,我希望代码存储在闪存中,而 BOARD_SDRAM 仅用于堆和堆栈部分。 我将把我的应用程序闪存到闪存中,该应用程序的堆和栈部分将使用 BOARD_SDRAM。 请指导我进行所需的更改。 Re: RT1170 debugging when application is built for SDRAM 谢谢@ Jingpan、 我只需要添加 .scp文件,结果成功了。 我已经掌握了第 5、第 6 和第 8 步,但我会试试其他步骤。 如果有帮助我还在 board.c 中做了以下更改,我认为这等同于<https://community.nxp.com/t5/i-MX-RT/MCUXpresso-and-RT1050-download-and-debug-in-SDRAM/m-p/896979>中描述的 RT1170_SDRAM_NOT_CACHED: #ifdef USE_SDRAM #ifndef RT1170_SDRAM_NOT_CACHED /* 区域 9 设置:内存为普通类型,不可共享,外部/内部回写 */ MPU->RBAR = ARM_MPU_RBAR(9, 0x80000000U); MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 0, 0, 1, 1, 0, ARM_MPU_REGION_SIZE_64MB); #else MPU->RBAR = ARM_MPU_RBAR(9, 0x80000000U); MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 1, 0, 0, 0, ARM_MPU_REGION_SIZE_64MB); #endif /* RT1170_SDRAM_NOT_CACHED */ #endif Re: RT1170 debugging when application is built for SDRAM 你好@robert_s、 此脚本适用于 RT1050/60,但不适用于 RT1170/60。您可以使用附带的脚本。除脚本文件外,您还需要执行其他步骤。 在 C/C++ 版本 > MCU 属性设置中的内存详细信息中,将 BOARD_SDRAM 移至 SRAM_DTC_M7 上方。 连接脚本使用 RT1170_connect_M7_wake_M4_SDRAM_init.scp。 在附加选项中添加 --cachelib libm7_cache.so。 如果使用 USB/以太网/SDHC,请将 DMA 缓冲区放入非缓存区。 在 MCU C 编译器> 预处理器中添加 USE_SDRAM。 在属性中选择链接到 ram->设置->受管链接器脚本 如果项目与 USB 关联,则在 MCU C 编译器> 预处理器中添加 DATA_SECTION_IS_CACHEABLE=1。 如果项目与不带 freertos 的 USB 主机相关联,则将堆放入 DTCM 或不可缓存区域 (bm) 此致, 景
記事全体を表示