Multi Source Translation Content

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

Multi Source Translation Content

讨论

排序依据:
S32K3:关于 AC_load_on_Job_Start 1. 根据参考手册,我们需要启用 AC_load_on_Job_Start,以避免 RWW 问题。 但当我按下图启用它时,Fls_ACWriteSize 和 Fls_ACWriteRomStart 仍未定义(与 Fls_ACEraseSize 和 Fls_ACEraseRomStart 相同)。 Jojo_Hu_0-1750821620784.jpeg Jojo_Hu_1-1750821642119.jpeg Jojo_Hu_3-1750821740692.png 请问如何解决这个问题? 2.如果禁用了 AC_load_on_Job_Start,并且写入和擦除都处于异步模式,那么在数据闪存写入/擦除的同时,代码闪存块是否可以写入/擦除? 期待您的支持,谢谢! Re: S32K3: about AC_load_on_Job_Start 您好, 应用程序和引导加载程序的内存分布如下。 如果我们想在启动加载程序运行时擦除和写入应用程序,并且已启用启动时的 Ac 加载,那么我们是否需要配置 PreTaskHook 中第二张图片中提到的内核 MPU? Jojo_Hu_0-1757918173892.png Jojo_Hu_1-1757918311233.png Re: S32K3: about AC_load_on_Job_Start 是,C40_Ip_AccessCode 被复制到 RAM 中。 Re: S32K3: about AC_load_on_Job_Start ROM 中代码的哪些部分将放在 RAM 的这个地址上? 该功能 ? Jojo_Hu_0-1751978216903.png Re: S32K3: about AC_load_on_Job_Start 在我的测试代码中,我只是在配置器中初始化了这些地址,所以它指向的是未使用的 RAM: lukaszadrapa_0-1751955715691.png Re: S32K3: about AC_load_on_Job_Start 我该如何定义这些变量? Jojo_Hu_0-1751540048260.png Re: S32K3: about AC_load_on_Job_Start 我在这个版本中进行了快速测试。如果要擦除的扇区与 Fls 代码位于同一闪存块中,我可以看到代码如期被复制到 RAM 中,扇区被成功擦除。不知道你那边怎么了... Re: S32K3: about AC_load_on_Job_Start @lukaszadrapa 针对问题 1、 期待您的大力支持。谢谢。 Re: S32K3: about AC_load_on_Job_Start 你好 为 1: SW32K3_S32M27x_RTD_4.4_4.0.0_P20_D2403 Re: S32K3: about AC_load_on_Job_Start 你好@Jojoo_Hu 1.这是哪个 RTD 版本? 2.闪存块之间支持 "边读边写"。例如,在对数据闪存进行编程或擦除时,代码可以从代码闪存运行。请注意,一次只能执行一个编程或擦除操作。 此致, Lukas
查看全文
S32G2 上的 LLCE CAN 通信问题 - 发送/接收报文时偶尔出现故障 在开发过程中,LLCE CAN 模块遇到了一些问题: ​设备详情:​ 定制设计的硬件 CPU 型号:S32G274 RTD 版本:4.0.2 LLCE 版本: 1.0.8 ​问题 1.​ 一个通道能正确接收信息,但无法发送信息。只有重新启动后才能恢复正常运行。 使用 Lauterbach 调试时,函数 Can_43_LLCE_SendWritecmd 返回 CAN_BUSY。 zhuyz_0-1757388260565.png 通过强行修改 Can_au16TransmitHwObjectCen[x] 的值为非零值进行的进一步测试表明, Can_Llce_write 函数也返回 CAN_BUSY。 zhuyz_1-1757388297640.png ​问题 2.​ 一个通道在发送和接收信息时都出现故障。需要重新启动才能恢复。 以下是通过 Can_Llce_ProcessErrorNotification 获得的错误信息: error->eNotifId:2 zhuyz_2-1757388353913.png error->ErrorInfo->eModuleId:102 zhuyz_3-1757388418696.png error->ErrorInfo->eErrorCode:7 zhuyz_4-1757388533189.png 我们希望得到解决这些问题的指导。谢谢! Re: LLCE CAN Communication Issue on S32G2 – Occasional Failures in Sending/Receiving Messages 嗨,zhuyz 感谢您的回复。 建议优先进行单通道测试,并尽可能延长向通道发送帧的时间间隔。 错误信息表示接收端已达到最大硬件对象数,即报文缓冲区已满,无法接收新报文。您可以尝试增加帧时间间隔并添加缓冲区进行测试。 Joey_z_1-1757928745870.png BR 乔伊 Re: LLCE CAN Communication Issue on S32G2 – Occasional Failures in Sending/Receiving Messages 你好,Joey_z ,感谢您的跟进。 您可能没有看清楚我的问题--主要问题是出现问题后,我再也无法通过这个通道接收/发送信息,而不仅仅是偶尔掉帧。 根据我通过劳特巴赫获得的信息,我怀疑 LLCE 本身存在问题,而不是外部因素造成的。能否请您再次回顾一下我最初的问题? Re: LLCE CAN Communication Issue on S32G2 – Occasional Failures in Sending/Receiving Messages hi,zhuyz 感谢您的回复。 请尝试用这种方法测试您的问题。 1.尝试降低 CAN 负载,增加 CAN 帧的时间间隔,检查丢帧现象是否得到缓解。 2.尽量保持测试方法简单,优先考虑单通道测试和只发送或接收帧的测试。例如,首先测试有问题通道的发送功能。 3.你们的 CAN 测试设备是什么?请确保测试设备可靠。 希望这能帮到你。 BR 乔伊 Re: LLCE CAN Communication Issue on S32G2 – Occasional Failures in Sending/Receiving Messages 你好,Joey_z, 我没有用它来路由 CAN 帧,我只是用它来发送和接收 CAN 帧。 关于您提到的 CAN 环回模式,我前面提到的问题 1 就是用这种方法检测到的。 你的回答让我有点困惑。我希望您能提供一些故障排除方法和可能的原因。 因为对我来说,LLCE 是一个黑盒子,我目前没有能力继续排除故障。 Re: LLCE CAN Communication Issue on S32G2 – Occasional Failures in Sending/Receiving Messages 嗨,zhuyz 感谢您提供的信息。 路由 CAN 帧 "是指 LLCE 中的 CAN2CAN/CAN2ETH/ETH2CAN 功能。您使用过吗? 如果您只是使用 LLCE 发送和接收 CAN 帧,我建议您可以尝试使用 CAN 环回演示进行测试。您需要修改关联客户板的代码。 Joey_z_0-1757475237096.png 关于问题发生的概率相对较低,而且不是每次都能重现。 如果要进行接收帧然后在 CAN 信道中发送的测试,建议考虑接收和发送之间的间隔时间。 BR 乔伊 Re: LLCE CAN Communication Issue on S32G2 – Occasional Failures in Sending/Receiving Messages 你好,Joey_z ,感谢您的回复。 我没有使用 LLCE CAN 演示测试这个特定通道,因为在我的案例中,问题并不总是与固定通道相关联。此外,该问题出现的概率相对较低,而且并非每次都能重现。 关于问题 1,我正在使用它收发 CAN 报文。我不太清楚你说的 "路由 CAN 帧 "是什么意思。 所有 20 个通道都在使用,而且都在 M7-0 内核上运行。 Re: LLCE CAN Communication Issue on S32G2 – Occasional Failures in Sending/Receiving Messages hi,zhuyz 感谢您与我们合作。 您是否使用过 Can_Llce_DS_Can2Can_S32G274A_M7 的 LLCE CAN 演示来测试问题通道? 关于问题 1,您是用它来路由 CAN 帧还是只发送报文? 您使用的是哪个频道?您只在 S32G 上使用了 M 内核? BR 乔伊
查看全文
RTL8211F 千兆位以太网使用中断模式缩短启动时间 你好 我在 yocto 6.1.22 上使用 imx93-evk-11x11版本。 在测试启动时间时,发现网络发现时间过长,具体如下: [ 2.040890][ T179] imx-dwmac 428a0000.ethernet eth0: 注册 MEM_TYPE_PAGE_POOL RxQ-0 [ 2.134466][ T179] imx-dwmac 428a0000.ethernet eth0: PHY [stmmac-1:00] 驱动程序 [RTL8211F 千兆以太网] (irq=POLL) [ 2.142421][ T179] imx-dwmac 428a0000.ethernet eth0: 未找到任何功能安全支持 [ 2.142451][ T179] imx-dwmac 428a0000.ethernet eth0: 支持 IEEE 1588-2008 高级时间戳 [ 2.142648][ T179] imx-dwmac 428a0000.ethernet eth0: 注册的 PTP 时钟 [ 2.151880][ T179] imx-dwmac 428a0000.ethernet eth0: FPE 工作队列启动 [ 2.151899][ T179] imx-dwmac 428a0000.ethernet eth0: 配置 phy/rgmii-id 链接模式 [ 2.178732][ T179] 8021q: 将 VLAN 0 添加到设备 eth0 上的 HW 过滤器 [ 5.249135][ T9] imx-dwmac 428a0000.ethernet eth0: 链接已启动 - 1Gbps/Full - 流量控制 rx/tx 差不多用 3 高效密码学标准(SEC) 的时间来发现网络。 修改树文件如下 ranYang_0-1760612473701.png ranYang_1-1760612502791.png 但 dmesg 打印 [ 2.024875][ T172] imx-dwmac 428a0000.ethernet eth0: Register MEM_TYPE_PAGE_POOL RxQ-0 [ 2.039447][ T25] audit: type=1334 audit(1677838060.032:4):prog-id=7 op=LOAD [ 2.039752][ T25] audit: type=1334 audit(1677838060.032:5):prog-id=8 op=Load [2.11475] [T172] imx-dwmac 428a0000.ethernet eth0:PHY [stmmac-1:00] 驱动程序 [RTL8211F 千兆以太网] (irq=98) [2.126706] [T172] imx-dwmac 428a0000.ethernet eth0:未找到 功能安全支持 [2.126736] [T172] imx-dwmac 428a0000.ethernet ethernet eth0 mac 428a0000.ethernet eth0:支持 IEEE 1588-2008 高级时间戳 [2.126984] [T172] imx-dwmac 428a0000.ethernet eth0:已注册的 PTP 时钟 [2.138550] [T172] imx-dwmac 428a0000.ethernet ethernet eth0:imx-dwmac 428a0000.ethernet ethernet eth0:imx-dwmac 428a0000.ethernet ethernet eth0:imx-dwmac 428a0000.ethernet ethernet eth0 eth0:为 phy/ 进行配置 rgmii-id 链接模式 [2.167072] [T172] 8021q:在设备 eth0 上的硬件过滤器中添加 VLAN 0 eth0 状态如下: ethtool eth0 eth0 的设置: 支持的端口:[ TP MII ] 支持的链接模式: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full 支持暂停帧使用:对称只接收 支持自动协商:是 支持 FEC 模式:未报告 广告链接模式: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full 广告暂停帧使用:对称只接收 广告宣传的自动协商:是 宣传的 FEC 模式:未报告 速度:未知! 双工:未知!(255) 自动协商:开 主从配置文件:首选从 主从状态:未知 端口:双绞线 PHYAD:0 收发器:外部 MDI-X:未知 支持唤醒:ug 唤醒:d 当前信息级别:0x0000003f (63) drv probe link timer ifdown ifup 检测到链接:无 有人遇到过类似问题吗? Linux Re: RTL8211F Gigabit Ethernet use interrupt mode reduce startup time 你好@然阳 现在似乎是谈判时间。 你可以尝试在设备树中添加固定链路属性。 或者修改驱动程序,避免使用 imx_dwmac_fix_speed。 顺祝商祺! 萨拉斯 Re: RTL8211F Gigabit Ethernet use interrupt mode reduce startup time 您好: 中断响应是足够的,但由于千兆位 phy 的握手,启动时间并没有减少。具体如下       ranYang_0-1761455128411.png 我想在内核 dwmac 的驱动程序阶段对/lib/systemd/systemd networkd 执行网络升级操作。完成 fs 文件系统后,我就可以直接使用网络了。不按顺序,导致 phy 握手时间长达约 3 秒。 以前有这样做的例子吗? Re: RTL8211F Gigabit Ethernet use interrupt mode reduce startup time 你好@然阳 希望你一切顺利。 我只想问一个问题。 您可以重新配置 SW1006 吗? Manuel_Salas_0-1761017014415.png 请仔细检查 SW 是否配置正确。 顺祝商祺! 萨拉斯
查看全文
LINFlexD UART Rx FIFO 软复位 你好 我正在尝试使用 TX 和 RX FIFO 缓冲器将 LINFlexD_9 设置为 UART 模式。TX FIFO 工作正常,但是当我启用 RX FIFO 退出初始化模式(LINCR1 [INIT] = 0)时,会导致软复位。 这些是将 LINCR1[INIT] 设置为 0 之前的寄存器值。 smp9_0-1761154305537.png smp9_1-1761154324634.png smp9_2-1761154344468.png 您知道发生了什么事吗? Re: LINFlexD UART Rx FIFO sofreset 你好@smp9、 对不起,我的回复晚了。您只需选择Watch 寄存器中的所有寄存器,然后以逗号分隔数据的形式复制即可。不过,由于 LIN 的登记册很少,您可以通过以下方法进行比较: 在进入正常模式之前,我在这里对程序进行了加密: alejandro_e_0-1761343395436.png 调用堆栈如下 alejandro_e_1-1761343406721.png 登记情况如下 UARTCR 0x00000027 LINSR 0x00002000 LINOCR 0x0000 FFFF UARTPTO 0x00000FFF BDRL 0x00000000 DMARXE 0x00000000 LINTOCR 0x00000E2C LINFBRR 0x0000000B LINCR1 0x00000080 BDRM 0x00000000 LINESR 0x00000000 LINCR2 0x00006000 UARTCTO 0x000009FE UARTSR 0x00000048 LINCFR 0x00000000 BIDR 0x00000000 DMATXE 0x00000000 LINTCSR 0x00000200 GCR 0x00000000 里纳 0x00000000 LINIBRR 0x00000015 如果您发现任何重大差异,请告诉我 Re: LINFlexD UART Rx FIFO sofreset 你好@alejandro_e、 我尝试同时写入 SLEEP 和 WRITE 位,但问题依然存在。 我附上了使用 "监视寄存器"> "导出 "转储的寄存器值,因为 "内存"> "导出 "对这些地址不起作用。 谢谢。 Re: LINFlexD UART Rx FIFO sofreset 你好@smp9、 感谢您再次与我们联系。我猜你还在使用 S32E2。我查看了 RTD 的操作方法,似乎需要同时写入 SLEEP 和 INIT 位: alejandro_e_0-1761186480759.png 您是以这种方式进行配置的吗? 如果问题不在于此,您能否共享在向 LINCR1[INIT] 写 0 之前对 LLCE 寄存器的完整转储?地址范围 0x42980000 - 0x4298005C 因此,我可以举例说明。 谢谢  Re: LINFlexD UART Rx FIFO sofreset 你要退出启动 ROM 了吗?我在启动 S32E 评估板时遇到了这个问题。如果无法启动其他启动源,HSE 处理器中的启动 ROM 将进入串行启动模式,它会访问 LINFLEX 9 尝试从 UART 加载启动序列。这种行为似乎与尝试初始化 RX FIFO 相冲突并导致软复位。一旦你退出启动 ROM(通过启动有效的启动源,如 EMMC 或 QSPI),启动 ROM 就不会尝试持续访问 LINFLEX 9,启用 RX FIFO 也不会再导致这种软复位。
查看全文
I2C 问题:使用 I2C3 (Yocto BSP) 在 i.mx8MP Phytech 板上未检测到 RRC2040 SMBus 电池 (0x0B) 你好,恩智浦社区、 我正在开发一款运行基于 Yocto 的 Linux 映像的 i.MX8MP Phytech 评估板, 我正在尝试通过 I²C 连接 RRC2040 SM Bus 智能电池组。 硬件设置: -板: Phytech i.mx8MP 评估板 -电池:RRC2040(SMBus 智能电池) -I²C 端口:I²C3(通过外部接头连接)-预期 SMBus 地址:0x0B -用于表示荷电状态 (RSOC) 的命令:0x0D 软件环境: -适用于 i.mx8MP 的 Yocto 电路板支持包(未修改) -带有 `/dev/i2c-3` 设备节点可用的 Linux 内核 -使用 `i2cdetect -y 3` 来探测总线 问题: 地址为 0x0B 的电池未出现在 `i2cdetect` 扫描中。 可以正确检测到电路板上的其他 I²C 设备。 即使以根用户身份运行,0x0B 也没有响应。 测试代码: 我还使用 `i2c-dev` 和 `i2c_smbus_read_word_data(fd, 0x0D)`测试了一个最小的 C++ 程序: cpp #include #include #include #include #include #include extern"C" { #include } int main () { const char* dev = " /dev/i2c-3 "; int fd = 打开(dev,O_RDWR);i octl(fd,I2C_SLAVE,0x0B);int res = i2c_smbus_read_word_data(fd,0x0D);//RSOC 命令 std:: cou t < < " 结果:" < < < < std:: endl;} kartikjva_1-1762178530944.png 因此,我尝试了其他 i2c 端口,如 /dev/i2c-0 和 /dev/i2c-1,但都不起作用。 我的硬件连接是正确的。 Re: I2C ISSUE :RRC2040 SMBus battery (0x0B) not detected on i.MX8MP Phytech board using I2C3 (Yocto 你好, 你的测试结果证明总线工作正常,电池组也能正常工作,你有关于如何连接的简单示意图吗? 您是否检查过电池组是否需要驱动程序才能正常工作? 如果板可能遇到任何硬件问题,我建议联系 phytec。 致以最崇高的敬意/问候, Aldo。 Re: I2C ISSUE :RRC2040 SMBus battery (0x0B) not detected on i.MX8MP Phytech board using I2C3 (Yocto 我们测试了另一个传感器,即 DS3231,在 Phytec i.MX8MP 板上可以正确检测到其 I²C 地址。 我们还在其他平台(如 Arduino、STM32 和 Raspberry Pi)上对电池组进行了测试,以验证其工作正常。但是,在 Phytec i.MX8MP 板上未检测到它。 此外,我们确认使用的上拉电阻为 10kΩ。 Re: I2C ISSUE :RRC2040 SMBus battery (0x0B) not detected on i.MX8MP Phytech board using I2C3 (Yocto 您好, 这可能是电池组造成的,可能需要一些额外的连接,我建议先检查一下。 另外,如果可能的话,我建议尝试连接另一个 I2C 设备,以确保 I2C 通信正常运行。 致以最崇高的敬意/问候, Aldo。
查看全文
小さな非セキュアパーティションとセキュアパーティションを持つmcuboot用のファームウェアを生成する こんにちは、 このテストには frdm_rw612 ボードを使用しています。私の IDE は、MCUxpresso プラグインを備えた vscode です。私はファームウェアを「mcuboot 対応」になるようにコンパイルしようとしています。つまり、それを使用して OTA を実行できるようにしたいと考えています。 まず、このチュートリアルに従いました: https://community.nxp.com/t5/Zephyr-Project-Knowledge-Base/Zephyr-app-with-MCUboot-in-VS-Code/ta-p/2089541 期待通りに動作しています。現在のパーティション構成は、boards\nxp\frdm_rw612\frdm_rw612_common.dtsi ファイルで確認したとおりです。 partitions { compatible = "fixed-partitions"; #address-cells = <1>; #size-cells = <1>; /* * Partition sizes must be aligned * to the flash security sub-region size of 128KB. */ boot_partition: partition@0 { label = "mcuboot"; reg = <0x00000000 DT_SIZE_K(128)>; }; slot0_partition: partition@20000 { label = "image-0"; reg = <0x00020000 DT_SIZE_K(640)>; }; slot0_ns_partition: partition@C0000 { label = "image-0-non-secure"; reg = <0x000C0000 DT_SIZE_M(3)>; }; slot1_partition: partition@3C0000 { label = "image-1"; reg = <0x003C0000 DT_SIZE_K(640)>; }; slot1_ns_partition: partition@460000 { label = "image-1-non-secure"; reg = <0x00460000 DT_SIZE_M(3)>; }; storage_partition: partition@760000 { label = "storage"; reg = <0x00760000 (DT_SIZE_M(57) - DT_SIZE_K(384))>; }; }; 私の理解では、hello-world の例は非常に小さいSO、小さな (640kB) セキュア パーティション内に収まります。 残念ながら、現在のファームウェア (Wi-Fi、Bluetooth など) で同じことを実行すると、パーティションがオーバーロードされるというメッセージが表示され、コンパイルできません。 [...]/arm-zephyr-eabi/bin/ld.bfd.exe: zephyr\zephyr_pre0.elf section `rodata' will not fit in region `FLASH' [...]/arm-zephyr-eabi/bin/ld.bfd.exe: region `FLASH' overflowed by 1682828 bytes 総括する: mcuboot をコンパイルしてフラッシュCAN。また、hello-world の例を正しくフラッシュすることもCAN (UART からこの hello-world アプリを正しくロードできることを確認できます)。一方、「大きな」ファームウェアをコンパイルすることはできません。 メインファームウェアが配置される非セキュア領域にのみジャンプする、最小限のセキュアパーティションを持つイメージを生成するにはどうすればよいでしょうか? FUTUREこの安全なパーティションを使用する予定なので、現在のパーティション構造を維持したいと考えています。 ありがとうございました。 Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは@_arthur_ さん、お元気ですか。 パーティションのサイズを変更する場合は、パーティションの場合と同様にオーバーレイ ファイルで行うことができますが、MCUboot が対象のパーティション内のイメージを認識できるように構造を維持する必要があります。 さらに、フラッシュ パーティションを共有して使用する場合、これは TF-M スタックで使用することを意図しており、TF-M スタックでも MCUboot をセキュア ブートローダーとして使用して、安全な環境でイメージを検証およびロードすることになるため、注意してください。 保護されたストレージの詳細については、Zephyr リファレンス ドキュメントの「Secure Storage」を参照してください。 Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition 少しは進歩しました。短期的な解決策として、frdm_rw612_common.dtsi ファイル内の slotx_partition を slotx_ns_partition と反転し、より大きなセキュア パーティションをコンパイルしてCAN使用します。 オーバーレイ ファイルでこれを変更すると、コンパイルはCANますが、実行時に mcuboot はイメージにジャンプできなくなります。mcuboot が生成されると、現在のプロジェクトではオーバーレイ ファイルが使用されないと思われます。 とにかく、セキュアなパーティションと非セキュアなパーティションの違いがよく分かりません。ファームウェア全体をセキュアパーティションに格納することには、何か欠点がありますか? このプロジェクトに PSA_protected_storage を追加する方法がまだわかりません。この機能を追加すると、どのパーティションがこの機能に使用されますか? Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは、ローマン。 問題はあなたのサンプルと同じです。フラッシュ サイズ 640kB (デフォルトのセキュア パーティション サイズ) を超えるとすぐに、コンパイル時に次のエラーが発生します。 領域「FLASH」が15872バイトオーバーフローしました このsmp_svrサンプルにBTとUDPのサポートを追加すると、エラーが表示されます。 SO、私のこれまでの質問はすべて、私の問題を理解し解決するために残っています。 メインファームウェアが配置される非セキュア領域にのみジャンプする、最小限のセキュアパーティションを持つイメージを生成するにはどうすればよいでしょうか? これら両方のパーティションを処理するファームウェアを生成するにはどうすればよいでしょうか? psa_protected_storage を使用する場合、暗号化されたデータはどこに保存されますか?この機能を使いたいです。 さらに、ファイル用のカスタムの不揮発性パーティションが必要になりますが、これは common.dtsi のパーティション テーブル定義の現在の storage_partition ですか? Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは@_arthur_ 。 MCUboot を使用して OTA を実行する必要がある場合は、「smp_svr」サンプルを使用することをお勧めします。このサンプルの主な目的は、MCUmgr プロトコルで使用するファームウェアの更新を行い、Bluetooth、UDP、UART などを介して更新を可能にすることです。このサンプルは MCUboot と連携して、適切に署名されたバイナリを確認し、MCU に更新します。 サンプルをテストするには、ファームウェアのアップデートを行うために MCUmgr クライアントをダウンロードする必要があり、最初に MCUboot を個別にビルドしてフラッシュし、次に smp_svr サンプルの prj.conf ファイルに必要なマクロを追加して smp_svr サンプルをビルドしてフラッシュする必要があります (これは、使用する OTA トランスポートによって異なります)。これが完了すると、システムは MCUmgr クライアントと適切に通信して、アップロードされたイメージのリストを確認し、新しいイメージをロードできるようになります。 MCUboot の新しい有効なイメージをロードするには、ロードするサンプルの prj.conf ファイルに次の構成を追加することをお勧めします。 CONFIG_HEAP_MEM_POOL_SIZE=2048 次のようにすると、サンプルをビルディングするだけで、MCUboot の有効な署名付きイメージを生成できます。 CONFIG_MCUBOOT_SIGNATURE_KEY_FILE=" /root-rsa-2048.pem" CONFIG_MCUBOOT_GENERATE_CONFIRMED_IMAGE=y CONFIG_BOOTLOADER_MCUBOOT=y これがあなたにとって有効であり、あなたの要件を満たしているかどうかを教えてください。 Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こちらの投稿を読みました: https://community.nxp.com/t5/Wi-Fi-Bluetooth-802-15-4/Zephyr-MCUBoot-TFM-Demo-using-RW612/ta-p/2047528 tfm 構造をより深く理解するために、「psa_protected_storage」サンプルもダウンロードしましたが、イメージをどのようにパーティション分割するかはまだよくわかりません。 たとえば、psa_protected_storage の場合、暗号化されたデータを保存するために使用されるパーティションはどれですか?それは「storage_partition」にありますか? 上記の投稿では、fw_storage パーティションについて言及しています。このパーティションはありませんが、Wi-Fi は使用できます。 最新のドキュメントはどこにありますか?何か特別なことをしようとしているわけではなく、mcuboot を使用して OTA を実行できるようにしたいだけですが、その方法を理解するための正しいドキュメントを見つけるのに苦労しています。 ご回答をよろしくお願いします。 アーサー Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは、ローマン。 正直に言うと、分かりません。最初の投稿で述べたように、frdm_rw612 パーティション分散が推奨される方法であると思われるため、それに従うことにしました。 まだプロトタイプなので、現時点では安全な機能は使用していませんが、間もなく製品版に取り組む予定であり、後で問題になるような選択を今日はしたくありません。 FRDM_RW612 には、640kB のセキュア パーティションと 3MB の非セキュア パーティションがあります。 現在のアプリケーションのサイズは 2.3 MB です (最適化はまったく行われていません)。 これら両方のパーティションを処理するファームウェアを生成するにはどうすればよいでしょうか? Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは@_arthur_ さん、お元気ですか。 ご希望のパーティション配分をご確認ください。小さくて安全でないパーティションと大きくて安全なパーティションですか、それともその逆ですか?さらに、アプリケーションのサイズも共有していただけますか? いずれのCASEでも、各パーティション サイズ 128kB の配置を考慮して、オーバーレイ ファイルを使用してパーティション サイズを変更できるはずです。 Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition 親愛なるローマンへ 私の質問に答えてくれないので、完全に理解するのは困難です。 「ただし、構造を維持する必要があります」と言うとき、最初にセキュアなパーティションがあり、その後に非セキュアなパーティションがあることを意味しますか? このプロジェクトに PSA_protected_storage を追加する方法がまだわかりません。この機能を追加すると、どのパーティションがこの機能に使用されますか? メインファームウェアが配置される非セキュア領域にのみジャンプする、最小限のセキュアパーティションを持つイメージを生成するにはどうすればよいでしょうか? これら両方のパーティションを処理するファームウェアを生成するにはどうすればよいでしょうか? Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは、ローマン。 ありがとう、よく理解できました。 このリンクはエンジニアリング チームによって作成されたものですか?https://community.nxp.com/t5/Wi-Fi-Bluetooth-802-15-4/Zephyr-MCUBoot-TFM-Demo-using-RW612/ta-p/2047528 それでも SDK をこのように変更する必要がありますか?「非セキュア イメージの変更」セクションで説明されているように、非セキュア イメージを変更できないためです。nxp_zephyr\zephyr\に「build」フォルダが存在しません さらに、frdm_rw612_rw612_ns.dts ファイルには、frdm_rw612_common.dtsi ですでに構成されているすべてのパーティションを削除する行があります。パーティション構造を維持するというアイデアには従いません。 とにかく、非セキュアボードを使用すると、ストレージパーティションを使用しているためコンパイルされず、/delete-node/行でストレージパーティションが存在しなくなります。 &w25q512jvfiq { /delete-node/ partitions; partitions { compatible = "fixed-partitions"; #address-cells = <1>; #size-cells = <1>; slot0_ns_partition: partition@080C0000 { label = "image-0-non-secure"; reg = <0x080C0000 DT_SIZE_M(3)>; }; /* This partition is reserved for connectivity firmwares storage * and shouldn't be moved. */ fw_storage: partition@400000 { label = "fw_storage"; reg = <0x400000 0x280000>; read-only; }; }; }; 「開発は独自で行う必要がある」とおっしゃるのは、TF-M を公式にサポートしていないということですか?それで、SDK を手動で変更する必要があるのですか? Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは@_arthur_ 。 はい、そのガイドは当社のエンジニアリングチームによってZephyrバージョン4.0.0で使用するために作成されました。ただし、おっしゃるとおり、それ以降のバージョン (現時点では 4.2.0 および 4.3.0) では、ガイドに示されている TFM の例に BL2 統合 (セキュア ブートローダとしての MCUboot) がデフォルトで含まれているため、このガイドは必要ありません。したがって、バージョン 4.2.0 ダウンストリームおよびアップストリーム、および 4.3.0 では、この機能はすでにサポートされています。 これで疑問が解消されることを願っています。 Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは、ローマン。 わかりました。理解が深まりました。 frdm_rw612_rw612_ns.dts ファイルでこれを削除すると、tfm を使用してファームウェアをコンパイルできます。 &w25q512jvfiq { /delete-node/ partitions; partitions { compatible = "fixed-partitions"; #address-cells = <1>; #size-cells = <1>; slot0_ns_partition: partition@080C0000 { label = "image-0-non-secure"; reg = <0x080C0000 DT_SIZE_M(3)>; }; /* This partition is reserved for connectivity firmwares storage * and shouldn't be moved. */ fw_storage: partition@400000 { label = "fw_storage"; reg = <0x400000 0x280000>; read-only; }; }; }; パーティション ノードを削除する目的がわかりません。 とにかく、「tfm_merged.hex」をフラッシュすると、次のような出力が得られます: [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+g9a6c6f958 [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. bl2 は正常に起動しているように見えますが、その後何も起こりません。安全でないファームウェアが起動しません。 ファイル zephyr_ns_signed.hex もフラッシュしようとしましたが、結果は同じでした。 私がそう思うのは間違っているだろうか boot_partitionはbl2(mcuboot)があるパーティションです slot0_partitionはtfm(psa)のパーティションです slot0_ns_partitionはファームウェアのパーティションです   この安全でない構成は、sysbuild を有効にして mcuboot をビルドすることと互換性がないことを確認しますか?ここで説明されているように: https://community.nxp.com/t5/Zephyr-Project-Knowledge-Base/Zephyr-app-with-MCUboot-in-VS-Code/ta-p/2089541 Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは@_arthur_ 。 TF-MとBL2を使ってアプリケーションをビルドしてフラッシュする際に、どのような手順を踏んでいるのか教えていただけますか?MCUbootのビルドにはsysbuildを使用していますか? さらに、パーティションはおっしゃるとおり、セキュア パーティションは TF-M のセキュア サービスをホストするためのもので、非セキュア パーティションは非セキュア アプリケーション用になります。 Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition sysbuild の場合: tfm用に変更したプロジェクトでsysbuildを有効にし、このCmake Extra Args SB_CONFIG_BOOTLOADER_MCUBOOT='y'を追加します。 「純粋なビルド」をすると、さまざまなものがコンパイルされます 最後にこのメッセージが表示される image.py: sign the payload image.py: sign the payload Usage: imgtool.py sign [OPTIONS] INFILE OUTFILE Try 'imgtool.py sign -h' for help. Error: Image size (0x1ed91c) + trailer (0x1b0) exceeds requested size 0xa0000 image.py: sign the payload Batch file failed at line 12 with errorcode 2 Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは、ローマン。 sysbuild を使用するとさらに悪くなります。これは、hello_world の例 (つまり、mcuboot もパーティション分割も使用しない) から作成した現在のプロジェクト (Wifi、Bluetooth、イーサネット などの多くの機能がすでに実装されている) で行っていることです。 デバッグ構成では、ボードを frdm_rw612 から frdm_rw612/rw612/ns に変更します。そして、DTC_OVERLAY_FILE='boards/frdm_rw612.overlay' を明示的に設定します(現在のプロジェクトで使用しているオーバーレイファイルと同じものを保持するため)。 prj.confに以下の内容を追加します 前回のメッセージでお伝えした内容をfrdm_rw612_rw612_ns.dtsファイルから削除します プロジェクトを右クリックして「選択したターゲットをフラッシュ」し、tfm_merged.hexを選択します。 prj.confに追加する内容 CONFIG_BUILD_WITH_TFM=y CONFIG_WIFI_NXP=y CONFIG_NXP_RW610=y CONFIG_ETH_DRIVER=y # stack size CONFIG_SHELL_STACK_SIZE=6144 CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048 CONFIG_NET_MGMT_EVENT_STACK_SIZE=4608 CONFIG_NET_TCP_WORKQ_STACK_SIZE=2048 CONFIG_MAIN_STACK_SIZE=4096 CONFIG_IDLE_STACK_SIZE=1024 コンソールに表示される内容: [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+g9a6c6f958 [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. 出力結果から判断すると、すでにブートローダーが存在するため、sysbuild を有効にしませんでした。 何が間違っているのか教えていただけますか? ご協力の程、よろしくお願い申し上げます。 Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは、ローマン。 私が何を間違っているのか教えてもらえますか?今週ファームウェアを公開するためには、解決策を見つけることが私にとって非常に重要です。 ご協力いただきありがとうございます Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは@_arthur_ 、遅くなってごめんなさい。 BL2 を搭載した TF-M で基本ファームウェアを生成してみましたが、正常に動作しています。frdm_rw612_rw612_ns.dts ファイルから、ご指摘のセクションを削除する理由は理解できますが、このオーバーレイはボードの非セキュア「バージョン」で TF-M が使用するパーティション構造を設定するものであるため、この手順は必須です。これを削除すると、互換性のない構造が生成され、アプリケーションが MCUboot の既知のアドレスにロードされない可能性があります。 プロジェクトで生成された dts ファイルを共有していただけますか?それとも、dts のパーティション セクションのスクリーンショットでしょうか?プロジェクト内の次のパスに配置する必要があります: debug/zephyr/zephyr.dts ご辛抱いただきありがとうございます。 Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは、ローマン。 申し訳ありませんが、まだ同じ質問があります。 1. sysbuild を有効にする (および SB_CONFIG_BOOTLOADER_MCUBOOT="y" を設定する) 必要がありますか? 2. prj.conf に追加している内容は正しいですか? 3. すべてがコンパイルされたら何をフラッシュする必要がありますか? パーティション ノードの削除を維持する必要があると言われています。次に、このシナリオにおける私の問題点は次のとおりです。 現在のファームウェアでは、common.dtsi で定義された storage_partition を使用しています。非セキュア構成を使用すると、すべてのパーティションが削除されるため、storage_partition が定義されなくなり、コードをコンパイルできなくなります。4. この非セキュア構成で storage_partition を使用するにはどうすればよいですか? common.dtsi で定義された同じパーティション構造を維持する必要があると明示的に述べられました。5. では、なぜ fw_storage パーティションは 0x400000 に配置されているのでしょうか?common.dtsi 構造を調べてみると、これは slot1_partition にあります。 6. ところで、この fw_storage パーティションとは何でしょうか?なぜ「標準」の安全な構成ではないのですか? あまり時間がないのは承知していますが、私の 6 つの質問にご回答ください。それが私の理解を深め、自立するのに役立ちます。 storage_partition と Wifi/BLE コネクティビティを使用して標準ファームウェアをコンパイルおよびフラッシュするための、ステップバイステップの TF-M と BL2 の例を共有していただければ完璧です。ありがとう PS: 現状では意味をなさないため、DTS のパーティション セクションは共有しませんでした。 Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは@_arthur_ 。 sysbuild を有効にする (および SB_CONFIG_BOOTLOADER_MCUBOOT="y" を設定する) 必要がありますか? いいえ、TF-M ビルド システムにはデフォルトで MCUboot が含まれているため、sysbuild を使用する必要はありません。 prj.conf に追加している内容は正しいですか? はい、観察してみると、ボードの非セキュア バージョン用のプロジェクトを作成するときに、「CONFIG_BUILD_WITH_TFM」がデフォルトで設定されます。 すべてがコンパイルされたら何をフラッシュする必要がありますか? それは状況によりますが、TF-M ビルド システム Zephyr ドキュメントのスクリーンショットには、生成された各ファイルのユーティリティに関する詳細な説明があります。 RomanVR_0-1766013775436.png ただし、初めて使用する場合、MCUboot ブートローダ、TF-M セキュア イメージ、および非セキュア アプリケーションのマージを含む tfm_merged.hex ファイルをフラッシュする必要があることに注意してください。 この安全でない構成でストレージ パーティションを使用するにはどうすればよいですか? TF-M 構成のフラッシュ レイアウトではこのストレージ用のスペースが予約されているため、ユーザーは TF-M が提供する安全なストレージ サービスを使用することが予想されます。 ところで、この fw_storage とは何でしょうか? fw_storage パーティションは、Wi-Fi、BLE、および 802.15.4 ファームウェア ストレージ用に予約されています。 この情報があなたの開発に役立つことを願っています。ご辛抱いただきありがとうございます。 Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは、ローマン。 明日ファームウェアを公開しなければならないのですが、返信を期待できますか?それとも、まだあなたの側で準備ができていないので、プラン B を見つける必要がありますか? ご回答をよろしくお願いします。 アーサー Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは、ローマン。 フィードバックありがとうございます。パーティション構造に関する質問には回答しませんでした 5. では、なぜ fw_storage パーティションは 0x400000 に配置されているのでしょうか?common.dtsi 構造を調べてみると、これは slot1_partition にあります。 1.この fw_storage は重要と思われますが、なぜ「セキュア」構成で言及されないのでしょうか? 2. このパーティションに必要なファームウェアを配置するには、何か特別な操作を行う必要がありますか? Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは@_arthur_ さん、お元気ですか。 ご質問にお答えすると、Wifi ファームウェアは自動的にロードされるものと予想されます。ただし、この問題については社内で確認中です。 ご辛抱いただきありがとうございます。 Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは、ローマン。 コンパイルしてフラッシュしてみました(tfm_merged.hex)基本サンプル用。zephyr/samples/hello_world を使用すると次のようになります: [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+g9a6c6f958 [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. *** Booting Zephyr OS build nxp-v4.1.0-23883-g5fbcfde7cfc2 *** Hello World! frdm_rw612/rw612/ns SO、すべてが期待どおりに機能しているようです。 ただし、zephyr/samples/net/wifi/shell のような WiFi を使用する例を使用すると、ファームウェア (WiFi と BLE を使用) と同じ出力が得られます。 [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+g9a6c6f958 [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. したがって、問題の根本的な原因は Wi-Fi にあり、ファームウェア パーティションに関する私の質問に関連している可能性があります。Wifi と tf-m を使用してサンプルをコンパイルする手順を共有していただけますか? Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは@_arthur_ 。 ホリデーシーズンのため、返答にかかるおおよその時間をお伝えすることはできませんが、何か分かり次第お知らせいたします。 ありがとう。 Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは、ローマン。 ご協力いただきありがとうございます。到着予定時間はどれくらいですか?数日ですか、それとも数週間ですか? Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは@_arthur_ さん、ありがとうございます。あなたにとっても 2026 年が幸せな年になりますように! このマターに関して社内チームからの返答をまだ待っていますので、返答が届き次第お知らせします。 Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは、ローマン。 2026年もNXPとあなたの成功を祈っています このトピックに関して何かニュースはありますか? ありがとうございました。 アーサー Re: Generate a firmware for mcuboot with a small non secure partition and a secure partition こんにちは、 @_arthur_ さん。この件についてお待たせして申し訳ありません。 ZephyrのWi-Fi ShellサンプルをTF-Mでビルドした際に、アプリケーションが正しく起動しないという問題が発生していた件について、prj.confファイルに以下の設定を追加してみてください。 # General CONFIG_HEAP_MEM_POOL_SIZE=122880 # TF-M S CONFIG_TFM_BL2=y CONFIG_BUILD_WITH_TFM=y CONFIG_TFM_PROFILE_TYPE_NOT_SET=y # Update the flash base address of ns image CONFIG_FLASH_BASE_ADDRESS=0x80C0000 # TF-M IPC CONFIG_TFM_IPC=y CONFIG_TFM_ISOLATION_LEVEL=2 # TF-M NS CONFIG_HWINFO=y # Networking (TF-M NS) CONFIG_NETWORKING=y CONFIG_NET_L2_ETHERNET=y CONFIG_NET_SOCKETS=y CONFIG_NET_DHCPV4=y CONFIG_NET_IPV4=y CONFIG_NET_TCP=y CONFIG_DNS_RESOLVER=y CONFIG_ETH_DRIVER=n CONFIG_WIFI=y # NXP Networking (TF-M NS) CONFIG_WIFI_NXP=y CONFIG_NXP_RW610=y CONFIG_NET_MGMT_EVENT_QUEUE_SIZE=20 CONFIG_NET_BUF_DATA_SIZE=1744 CONFIG_NET_SOCKETS_POLL_MAX=12 CONFIG_ZVFS_OPEN_MAX=30 CONFIG_PSA_CRYPTO_ENABLE_ALL=y これらの設定により、シェルアプリケーションが正常に起動するはずです。しかしながら、現在社内チームで確認中の動作として、「wifi scan」コマンドを使用するとアプリケーションがハードフォルト状態になるという問題があります。したがって、「wifi scan」の代わりに「nxp_wifi scan」コマンドを使用して、近くのネットワークをスキャンしてください。ただし、以下に示すように、デフォルトの「wifi connect…」コマンドを使用すれば、ネットワークに接続できるはずです。 RomanVR_0-1778007625891.png これがあなたにとって有効かどうか教えてください。
查看全文
SWO 数据跟踪功能(在 MCXA156 上) 你好,恩智浦社区、 我一直在试验 MCXA156 控制器及其相应的开发板的调试功能。 我的设置 (FRDM-MCXA156) 以及定制板中的 MCXA156。 MCUXpresso IDE v25.6 [内部版本 136] [2025-06-27] MCU Link pro 调试器 到目前为止,通过恩智浦 Expresso SDK 中的各种示例,我能够满足大部分调试需求。(断点、数据监视点、ITM 打印重定向、中断跟踪等)。 不知何故,我只能在 SWO 上使用 Data Watch Trace/Stream。我想我误解了 MXCA156 调试功能的功能。 据我所知,MCXA156 支持 ITM 和 DWT。 有了它,就可以添加读/写数据编译器,并通过 SWO 引脚流出/跟踪相应的数据。在我的设置中,我似乎无法使用"SWO Data" 窗口,即使所有其他跟踪功能似乎都能正常工作。 我的设置是否正确,还是 MCUXpresso IDE 还不支持我的使用情况? 顺祝商祺! 亚历克斯 Re: SWO Data Trace functionallity (on MCXA156) 你好@AlexRu 要使用 SWO,您可以按照提供的步骤指南进行操作。 硬件要求: 确保芯片的 SWO 引脚连接到调试器的 SWO 接口。 (这是 FRDM-MCXN947 板)。 Alice_Yang_0-1764234995466.png 软件配置: 创建新项目时,选择 "重定向 printf/scanf 至 ITM",将 printf/scanf 输出重定向至 ITM。 Alice_Yang_1-1764235038209.png 2.配置跟踪时钟: Alice_Yang_2-1764235054451.png CLOCK_AttachClk(kTRACE_DIV_to_TRACE); /*!将 TRACE 切换到 TRACE_DIV */ /*!安装分频器 */ clock_setclkdiv (kclock_divtraceCLK,3U); /*!将 TRACECLKDIV 分频器设置为值 3 */ 3.在 MCUXpresso IDE 中配置 ITM 控制台视图: 打开 SWO ITM 控制台。 在 IDE 设置和代码中配置相应的核心时钟和跟踪时钟 。 Alice_Yang_4-1764235140283.png Alice_Yang_5-1764235162015.png Alice_Yang_6-1764235196129.png Alice_Yang_7-1764235214710.png Alice_Yang_8-1764235219324.png 4.查看输出结果。 Alice_Yang_9-1764235228270.png 有关 SWO 和 DWT 使用的详细信息,请参阅MCUXpresso_IDE_25.06_Instruction_Trace_Guide.pdf 。您可以在 MCUXpresso IDE 安装路径下找到该指南。 BR 爱丽丝   Re: SWO Data Trace functionallity (on MCXA156) 嗨,爱丽丝、 非常感谢你对如何设置 SWO 跟踪的详细可视化说明。 就我而言,我已经验证了 SWO 引脚(MXCA-156 PCB)与我的 MCU-Link Pro 调试探针的电连接。您提到的 PDF 文件确实提供了更详细的信息,扩展了我的知识面。尽管如此,这并不能真正解释/反驳我对使用 DWT 的假设。 在我的设置中,我已经在"SWO Interrupts" 窗口中看到了中断返回和中断入口点的数据:(这是我的 SW 的实时数据!有意义的数据和正确的时间信息)。 AlexRu_0-1764332623019.png 有了这些信息,我验证了我通过SWO引脚的电连接是否正常,跟踪时钟已启用,频率符合我的SWO Trace Config中的预期。 我错过了什么(或者我这边可能有误会?)是通过数据观察比较器 (DWT) 将数据追踪到窗口 " SWO Data " 中的 SWO 跟踪引脚的功能。 在启用"play" 按钮后,我没有收到任何跟踪信息: AlexRu_1-1764333027216.png 我甚至证实,在我的 MXCA156 配置中,数据监视点仅限于 2 个比较器,因此 IDE 似乎能够设置它们并警告设置的数据观察点过多(我故意这样做是为了检查其合理性): AlexRu_2-1764333135738.png 所以我的问题是是集成开发环境支持这种调试方法,还是我理解错了,DWT 完全不提供这种数据跟踪功能? Re: SWO Data Trace functionallity (on MCXA156) 你好@AlexRu 感谢您的回复。 请告诉我您想使用 DWT 观察哪些数据? 另外,请共享一个可以重现该问题的项目,并提供一段视频,展示您所采取的所有步骤。 我将利用这些信息来重现和检查我这边的问题。 谢谢! BR 爱丽丝 Re: SWO Data Trace functionallity (on MCXA156) 你好@Alice_Yang、 我确实根据 SDK 示例(LED Blinky)为 FRDM-MCXN236 演示板准备了一个极简主义项目。(demo_apps -> LED_BLINKY_PERIPHERAL) MCXN236 板设置显示的效果似乎与我之前使用的 MCXA156 板相同。我只是想在另一个板确认这种行为。 引脚配置设置 P0_2 -> 输出 SWO(本例中为默认值) 启用 TRACECLK 和 TRACECLKDIV (1),因为本例使用 BOARD_BootClockFRO12M() 添加了以下代码,以查看 glocal ram 变量的一些操作: volatile uint32_t debug_cnt = 0; void SysTick_Handler(void) { /* Toggle pin connected to LED */ GPIO_PortToggle(BOARD_LED_GPIO, 1u << BOARD_LED_GPIO_PIN); debug_cnt++; //<- added for demonstration purpose } 附件:包含演示项目和调试视频的压缩包。 您可以看到"SWO Data" 没有显示任何跟踪数据。全局变量窗口显示在 ~1 秒的 SysTick_Handler 周期内 debug_cnt 的增量。" SWO Interrupts " 还能可靠地显示 systick_Handler () 的进入和退出,因此 SWO 跟踪的电连接似乎可以正常工作。 如果我能提供更多信息以缩小问题范围,请告诉我。 如果您能确认我所期望的用 DWT 追踪全局/静态 RAM 变量是否可行,我也将非常高兴。或者是我理解错了。 Re: SWO Data Trace functionallity (on MCXA156) 你好@AlexRu 我在自己这边做了测试。这无法实时输出变量的值。它只能在暂停调试时检查变量的值。 Alice_Yang_0-1765449677747.png BR 爱丽丝 Re: SWO Data Trace functionallity (on MCXA156) 嗨,爱丽丝,谢谢你的努力。这样看来,MCUXpresso 目前不支持"数据跟踪" 调试。可以在将来的版本中申请这个吗? 从我这个局外人的角度来看,似乎并不缺少使其发挥作用的因素。SWO 中断似乎可以正常工作,并可扩展到高级调试功能。 SWO 数据跟踪可进一步扩展恩智浦 Xpresso 工具链中的调试功能。 问候 Alex Re: SWO Data Trace functionallity (on MCXA156) 你好@AlexRu 谢谢您的答复。我会将此请求转发给 MCUXpresso 开发团队,并随时向您通报最新进展。谢谢。   BR 爱丽丝 Re: SWO Data Trace functionallity (on MCXA156) 你好@Alice_Yang @AlexRu 我目前正在使用FRDM-MCXA156开发板,在调试过程中遇到了SWO(串行线输出)问题。 虽然应用程序调试成功,但我无法在SWO 跟踪窗口中接收任何数据,包括: SWO 数据 SWO概况 SWO中断跟踪 ITM控制台 为了排查问题,我已经核实了以下内容: 使用配置工具已正确配置SWO 引脚。 TRACE 时钟已启用并配置为96 MHz ,与 MCU 内核时钟匹配(MCXA156 运行频率为 96 MHz)。 该项目正在使用LinkServer和板载MCU-Link探针进行调试。 尽管进行了这些配置,但在调试过程中所有 SWO 跟踪窗口仍然为空。 为了方便参考,我附上了SWO 跟踪配置、 SWO 数据、 SWO 配置文件和SWO 中断跟踪窗口的截图。 对于可能导致此问题的原因,或者在FRDM-MCXA156上启用 SWO 跟踪是否需要任何额外的配置步骤,我非常感谢您能提供任何指导或建议。 感谢您抽出时间提供帮助。
查看全文
GHS 多路调试器 - 微控制器 POR 之后无法恢复 你好,我正在使用 GHS 多调试器和 Renasas E1 调试器。每当关闭微控制器电源并重新打开时,调试器窗口都会卡住。我需要恢复调试。请提供解决方案。是否可以在不重新刷新软件的情况下恢复会话? Re: GHS Multi debugger - Not resuming after Microcontroller POR 你好@danielmartynek, ,我使用的是 Renesas RH850 - RH850/C1M-A2 谢谢 Re: GHS Multi debugger - Not resuming after Microcontroller POR 嗨,@Lokesh_0109、 请注明 MCU 部件、 谢谢
查看全文
S32G RDB3(M7コア)のSJA1110ポート1へのGMAC0 SGMIIリンクの設定方法 S32G399A-RDB3 評価ボードを使用しており、GMAC0 と SJA1110 イーサネット スイッチのポート 1 の間に SGMII リンクを確立したいと考えています。 SDKs で提供される RTD の例 (例: GMAC_Example_0) は、外部 PHY にコネクテッドするために GMAC0 を RGMII モードで構成する方法のみを示していますが、ポート 1 の SGMII 経由でコネクテッドされる SJA1110 スイッチと通信するために GMAC0 を SGMII モードで構成する方法は示されていません。 Cortex-M7 コアをターゲットにし、FreeRTOS + lwip + RTD を使用しています。 GMAC0が外部PHYでRGMIIモードで正常に動作することは既に確認済みであり、また、GMAC0 SGMIIリンクのSJA1110への動作はA53上でも確認済みであるが、我々のターゲットはM7コアである。 ご指導ありがとうございます。 Re: How to configure GMAC0 SGMII link to SJA1110 Port1 on S32G RDB3 (M7 core) ありがとう、この情報は役に立ちます。M7でGMACをSGMIIに設定する方法を理解することができました。 Re: How to configure GMAC0 SGMII link to SJA1110 Port1 on S32G RDB3 (M7 core) こんにちは@Terry_Huang 、 M7 の SGMII で GMAC を構成する例はありませんが、次のリファレンスをCAN。 u-boot ソース コード: u-boot は hwconfig の値に応じて SerDes モジュールを構成します。BSP マニュアルでCAN確認できます (例: BSP44)。 alejandro_e_0-1753395433010.png alejandro_e_1-1753395446948.png 文字列が解析されレジスタが設定されると、次のソース コードをCAN確認できます。 serdes_hwconfig.c hwconfig_fixups.c 文字列がどのように解析され、構成が行われるかがわかりますが、u-boot にはかなりの数の SW レイヤーがあるため、これはかなり複雑になる可能性があります。 hwconfig を上記のいずれかの値に設定できます。質問に関連する部分は、serdes0 構成と SW の位置です。 hwconfig 変数が設定されたら、ボードをリセットして u-boot で停止し、md コマンドを使用して関連するレジスタを読み取ります。例: => setenv hwconfig "serdes0:mode=xpcs0&xpcs1,clock=ext,fmhz=100;xpcs0_0:speed=1G,an=0;xpcs0_1:speed=1G,an=0;serdes1:mode=xpcs0&xpcs1,clock=ext,fmhz=125;xpcs1_1:speed=1G" => saveenv Saving Environment to MMC... Writing to MMC(0)... OK => reset ... => printenv hwconfig hwconfig=serdes0:mode=xpcs0&xpcs1,clock=ext,fmhz=100;xpcs0_0:speed=1G,an=0;xpcs0_1:speed=1G,an=0;serdes1:mode=xpcs0&xpcs1,clock=ext,fmhz=125;xpcs1_1:speed=1G => md.l 0x4007C000 20 4007c000: 00000000 00000000 000000e7 00000001 ................ 4007c010: ffffffff 1fffffff 00007fff 00000000 ................ 4007c020: 00000000 00000000 00000000 00000000 ................ 4007c030: 00000000 00000000 00000000 00000000 ................ 4007c040: 00000000 00000000 00000000 00000000 ................ 4007c050: 00000000 00000000 00000000 00000000 ................ 4007c060: 00000000 00000000 00000000 00000000 ................ 4007c070: 00000000 00000000 00000000 00000000 ................ サンプルでは、hwconfig を設定し、変更を保存し、ボードをリセットして、GMAC の最初のレジスタ (このCASEは 20) を出力しました。xpcs コマンドを使用することもCANます。例: => xpcs xpcs - Utility command for SGMMI control Usage: xpcs list List all registered XPCS modules xpcs transit <1000M|2500M> Change serdes mode xpcs ss <10M|100M|1000M|2500M> Change speed and serdes mode when required xpcs an Auto-negotiation control xpcs an_auto Auto-negotiation control with automatic speed change xpcs lo PMA loopback enable/disable xpcs dump Dump XPCS indirect registers is obtained using 'xpcs list' command => xpcs list Registered XPCS instances: | ID | SerDes instance | XPCS | | 0 | serdes@40480000 | 1 | | 1 | serdes@40480000 | 0 | | 2 | serdes@44180000 | 1 | | 3 | serdes@44180000 | 0 | これは、S32G3 リファレンスマニュアル [ページ 2759、S32G3 リファレンスマニュアル、Rev. 4、02/2024] に従っています。 alejandro_e_2-1753396519663.png ご覧のとおり、モード 1 と 3 は GMAC を使用した SGMII をサポートしています。 各モジュールのレジスタに関する詳細については、 GMACリファレンス マニュアルとSerDesリファレンス マニュアルも参照してください。 S32G3リファレンスマニュアルの関連セクション: 第47章 ギガビットイーサネットメディアアクセスコントローラ(GMAC) 47.1.4SGMIIモードでGMACを実行するための前提条件 2 4.7.2.2.4 イーサネット(GMAC_0)SGMII設定(これはクロッキングに関連します) この情報の目的は、M7 から GMAC モジュールを構成するためのベースとして使用できるようにすることです。 他にご質問がございましたらお知らせください
查看全文
s 启动失败过渡 你好, 当 sBoot 返回 E_NOT_OK 时,是否有任何配置可以转换到 “功能安全启动”? 目前,模式选择器位于引导加载程序中。而 sBoot 正在应用中。 如何实现过渡?是通过配置吗?或者有没有可用的 sBoot API? 在《功能安全手册》中,它被称为硬件过渡。 金贵宾 Re: sBoot Failure Transition 你好,@Irshad2225 抱歉,回复晚了。 1。当 sBoot 返回 E_NOT_OK 时,是否有任何配置可以转换到 “功能安全启动”? [A]:所述转换是一种抽象流程,没有实现明确的配置。 2. 如何实现过渡?是通过任何配置?或任何可用的 sBoot API? [A]:你可以触发 RESET 或更改代码流(例如更改 PC 指针)来完成过渡,但没有 sBoot API 可用。 BR 切宁 Re: sBoot Failure Transition 你好,@Irshad2225 谢谢您的帖子。 我正在研究您的问题,请问您指的是下图吗? chenyin_h_0-1753348864372.png BR 切宁
查看全文
How to Retrieve Error Frame CAN ID and Payload in FlexCAN (S32G) Hi, I'm using FlexCAN on the S32G platform. Currently, when FlexCAN receives an error frame interrupt, it creates a CAN frame and fills the CAN ID and payload with values from the error register. However, I'm unable to determine which specific CAN frame caused the bus error. In CANoe, we can see the error frame with the correct CAN ID and payload in the trace window. Is there a way to retrieve the error frame's CAN ID and payload programmatically, similar to CANoe? I’d appreciate any guidance on this. Thanks in advance! S32G2  Re: How to Retrieve Error Frame CAN ID and Payload in FlexCAN (S32G) hi,ventury Thank you for your reply. Why do you want to get the error frame? The error frame will be abandoned in the normal usage scenarios. If the protocol level frame occurs error, the S32G can get the frame and operate it.  For flexcan, the relevant states register will be changed when S32G receive the error frame. I think you should consider the kind of error frame. such as, it is the error of CRC on one frame, you can try to check the memory for the frame ID and payload.  Hope it can help you. BR Joey Re: How to Retrieve Error Frame CAN ID and Payload in FlexCAN (S32G) Hi Joey, Yes, that is correct. Could you provide some advice on this? Thank you. BR, Ventury Re: How to Retrieve Error Frame CAN ID and Payload in FlexCAN (S32G) hi,ventury Thank you for your reply. Do you mean that when you are using the Flexcan of S32G, you can detect CAN error frames, but you cannot know the ID and payload of this error frame? BR Joey Re: How to Retrieve Error Frame CAN ID and Payload in FlexCAN (S32G) Hi Joey, Thanks for your response. Here are the details you requested: Core Type: Using A-core with Linux, kernel version 5.15.119-rt65+ RTD Version: I'm not sure how to check the RTD version in this setup ID Filter: No ID filter configuration is currently applied Additional information: I'm using the Linux SocketCAN framework (can-raw) Error frame capture is enabled using: uint32_t errMask = 0xffffffff; setsockopt(can_fd, SOL_CAN_RAW, CAN_RAW_ERR_FILTER, &errMask, sizeof(errMask)); From examining the FlexCAN driver code (flexcan_irq_bus_err function), I can see that error frames are generated using values from the error registers, but I'm not getting the actual CAN ID and payload of the frame that caused the error. I'd appreciate any guidance on how to retrieve the original offending frame information. BR ventury Re: How to Retrieve Error Frame CAN ID and Payload in FlexCAN (S32G) hi,ventury Thank you for contacting us. are you using M or A core for FlexCAN? Which version of RTD are you using? Do you have an ID filter for CAN frame? BR Joey
查看全文
有关 MCF5253 和 USBDM-JMXX-CF 的帮助 大家好 我是嵌入式系统的新手,如果能就我在 MCF5253 中遇到的启动循环问题提供任何帮助或建议,我将不胜感激 系统详细信息: MCF5253 同步动态随机存取存储器(SDRAM):MT48LC4M16A2 闪存:M25P32 为了排除启动环路故障,我购买了一个 USBDM-JMXX-CF 接口,通过 BDM 连接到 MCF5253。我的目标是找出系统在启动过程中停滞的原因。 工具& 版本: - USBDM-JMXX-CF(软件版本 4.12) - USBDM_4_12_1_340_Win.msi - CodeWarrior 10.7 BDM 连接引脚: -BKPT -DSCLK -DSI -DSO RSTIO ->至 MCF5253 的 rst 引脚 -PST0-4 -GND -VDD_BDM 当我尝试连接 CodeWarrior 10.7 时,连接失败并出现以下错误: :启动 MCF5253_Console_RAM_USBDM 时出错 ColdFire GDI 协议适配器:无法连接。未知或不支持的设备。 我还使用独立组网 (SA) USBDM 应用程序测试了通信。下面是内存转储尝试的输出结果: usbdm 内存转储 : 创建空闪存映像... 接口选项:CFVx, , speed = 250 使用内存空间 = 读取内存块[0x20000000, 0x20000010, 1]... 完成 如果您有任何见解或建议,特别是关于以下几点的见解或建议,我将不胜感激: 1。有人使用 USBDM-JMXX-CF 成功连接到 MCF5253 吗? 2。CodeWarrior 10.7 是否与此设置兼容,还是存在已知问题? 3.启用 BDM 通信是否需要特定的配置步骤? 4。关于在 ColdFire 处理器上调试启动循环有什么一般建议吗? 提前感谢您的帮助和支持! Re: Help with MCF5253 and USBDM-JMXX-CF 非常感谢您! 顺祝商祺! Re: Help with MCF5253 and USBDM-JMXX-CF 你好 抱歉,回复晚了。 用于 MCU 的 CodeWarrior(Eclipse IDE)支持 OSBDM 调试器工具。 Hui_Ma_0-1754442232113.png 有关 OSBDM 的文件有两份,详情请参考以下链接: AN4331:启用 OSBDM 动态链接库 OSBDM-JM60 用户指南 您还可以在 P&E 网站上找到 OSBDM 的基本信息: https://www.pemicro.com/osbdm/osbdm_description.cfm 同时,P&E 已停止对 OSBDM 的支持。 我们建议使用 P& E Multilink 调试探头 。 感谢您的关注。 顺祝商祺! Mike
查看全文
关于 imx8mm 单核心 dtsi 的一点困惑 我正在做一个类似的项目,所以我需要彻底弄清楚这个问题。我有点搞不清楚谁是对的,因为我看到恩智浦工程师的答案似乎完全错了,但标注为正确的答案却不是恩智浦工程师的。那么,谁的答案是正确的呢?我们倾向于相信恩智浦的工程师更熟悉他们的代码。 https://community.nxp.com/t5/i-MX-Processors/dtsi-for-imx8mm-single-core/td-p/2165973 i.MX 8M | i.MX 8M Mini | i.MX 8M Nano Re: A little confused about dtsi for imx8mm single core 另外,我还想知道解释。 Re: A little confused about dtsi for imx8mm single core 推荐的方法是从 Linux 设备树中删除相应的节点。 虽然 U-Boot 可以检测芯片型号及其可用功能,但禁用设备树中的节点可确保 Linux 内核不会尝试访问不支持的元器件。这尤其重要,因为帖子中提到的源与U-启动有关,而不是与内核有关。 Re: A little confused about dtsi for imx8mm single core @Chavira请解释一下你说的话。 I have provided the appropriate recommendations tailored to your specific case. Regarding the BSP, it is functioning as expected. 1>> U-Boot does not modify the Linux Device Tree at runtime. Once the Linux kernel is loaded, U-Boot no longer has control over the Device Tree. It seems there's some confusion here. The Linux device tree and the U-Boot device tree are two distinct entities, each serving different purposes in the boot process. The document you're referring to specifically modifies the U-Boot device tree, not the one used by the Linux kernel. Please double check your references, the U-Boot device tree is not the same as the Linux device tree, and changes made to one do not automatically apply to the other. Re: A little confused about dtsi for imx8mm single core 嗨,@hogole、 我已根据您的具体情况提出了适当的建议。 关于电路板支持包,它正在按预期运行。 请注意,社区对所有成员开放,欢迎他们根据自己的经验做出贡献。欢迎您修改和调整社区开发的解决方案,以更好地满足您的需求。 如果您在使用我们的电路板支持包时遇到任何问题,请随时在论坛中打开新话题,以便我们进一步为您提供帮助。 致以最崇高的敬意, Chavira Re: A little confused about dtsi for imx8mm single core @Chavira 我们已经部署了许多 8MM 产品,并且该代码已经存在了很长时间,一直支持最新的电路板支持包。如果在运行时基于 8MM 熔丝 自动修改设备树时出现问题,那么我们需要考虑升级我们当前的产品。这是一个非常困难的决定,既费时又费钱。 因此,我们需要一个明确的答案:恩智浦BSP版本中的这部分电路板支持包代码是否存在潜在问题?为什么在基于熔丝自动配置 Linux 设备树核心数的情况下,仍然需要在编译时修改 Linux 设备树吗? https://github.com/nxp-imx/uboot-imx/blob/lf-5.10.72-2.2.3/arch/arm/mach-imx/imx8m/soc.c static int disable_cpu_nodes(void *blob, u32 disabled_cores) { static const char * const nodes_path[] = { "/cpus/cpu@1", "/cpus/cpu@2", "/cpus/cpu@3", }; u32 i = 0; int rc; int nodeoff; if (disabled_cores > 3) return -EINVAL; i = 3 - disabled_cores; for (; i < 3; i++) { nodeoff = fdt_path_offset(blob, nodes_path[i]); if (nodeoff < 0) continue; /* Not found, skip it */ debug("Found %s node\n", nodes_path[i]); rc = fdt_del_node(blob, nodeoff); if (rc < 0) { printf("Unable to delete node %s, err=%s\n", nodes_path[i], fdt_strerror(rc)); } else { printf("Delete node %s\n", nodes_path[i]); } } Re: A little confused about dtsi for imx8mm single core @Chavira 这是你的建议: 请仔细检查您的参考资料,U-Boot 设备树与 Linux 设备树不同,对其中一个设备树所做的更改不会自动应用于另一个。 现在我仔细检查参考并使用不同的颜色来突出显示: u-启动 运行时修改 Linux 设备树 (dtb) u-boot 启动时修改 Linux 设备树 (dtb) https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/u-boot-runtime-modify-Linux-device-tree-dtb/ta-p/1347212 Re: A little confused about dtsi for imx8mm single core @Chavira 从一开始到现在,我们一直在讨论 u-boot 如何修改 Linux 设备树,并且从未讨论过 u-boot 本身的设备树。 以下代码还使用 u-boot 来修改 Linux 设备树。 https://github.com/nxp-imx/uboot-imx/blob/lf-5.10.72-2.2.3/arch/arm/mach-imx/imx8m/soc.c static int disable_cpu_nodes(void *blob, u32 disabled_cores) { static const char * const nodes_path[] = { "/cpus/cpu@1", "/cpus/cpu@2", "/cpus/cpu@3", }; u32 i = 0; int rc; int nodeoff; if (disabled_cores > 3) return -EINVAL; i = 3 - disabled_cores; for (; i < 3; i++) { nodeoff = fdt_path_offset(blob, nodes_path[i]); if (nodeoff < 0) continue; /* Not found, skip it */ debug("Found %s node\n", nodes_path[i]); rc = fdt_del_node(blob, nodeoff); if (rc < 0) { printf("Unable to delete node %s, err=%s\n", nodes_path[i], fdt_strerror(rc)); } else { printf("Delete node %s\n", nodes_path[i]); } } 我再次强调,我从未讨论过u-boot的设备树。 Re: A little confused about dtsi for imx8mm single core @Chavira 我们讨论的是 u-boot 修改 Linux 设备树,而不是修改 u-boot 设备树。 而且 https://github.com/nxp-imx/uboot-imx/blob/lf-5.10.72-2.2.3/arch/arm/mach-imx/imx8m/soc.c 的代码与 启动 fdt 命令的作用相同。 在 u- 启动 运行时修改 Linux 设备树 (dtb) 是使用 u- 启动 命令修改 Linux 设备树。 https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/u-boot-runtime-modify-Linux-device-tree-dtb/ta-p/1347212 从第 8 页到第 11 页,可以清楚地看到 u-boot 修改 Linux 设备树并启动到 Linux。 s.png Re: A little confused about dtsi for imx8mm single core 嗨,@hogole、 看来这里有些混乱。 Linux 设备树和 U-Boot 引导设备树是两个不同的实体,每个实体在启动过程中都有不同的用途。你所指的文档专门修改了 U-Boot 引导设备树,而不是 Linux 内核使用的设备树。 请仔细检查您的参考,U-Boot 设备树与 Linux 设备树不同,对其中一个设备树所做的更改不会自动应用于另一个。 Re: A little confused about dtsi for imx8mm single core 有几点我仍然感到困惑。 Chavira,这是你的回复: 1>> U-启动 在运行时不会修改 Linux 设备树。 一旦加载 Linux 内核,U-Boot 就无法再控制设备树了。 你确定 u-boot 无法修改 Linux 设备树吗? a. u-boot 有 fdt 命令可以修改 Linux 设备树。 您的同事也有这方面的文件。 以下是文档: u-boot 运行时修改 Linux 设备树 (dtb) https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/u-boot-runtime-modify-Linux-device-tree-dtb/ta-p/1347212 b. arch/Arm/mach-imx/imx8m/soc.c 使用与 u-boot 启动 fdt 命令相同的 API。 c. u-boot 不应该准备 Linux 运行时环境吗?任何操作,包括修改 Linux 设备树,都必须在 Linux 启动之前进行。 在 u-boot 加载了 Linux 设备之后,但是 Linux 还没有启动,它不能修改 Linux 设备树吗? 最简单的问题是:"disable_cpu_nodes" API 函数是在 Linux 启动之前还是之后执行的? 我们确实需要恩智浦澄清这些问题,因为这与我们实际运行的项目相关。 能否请您查看一下源代码? https://github.com/nxp-imx/uboot-imx/blob/lf-5.10.72-2.2.3/arch/arm/mach-imx/imx8m/soc.c const nodes_path 这里不是 Linux 设备树节点? static int disable_cpu_nodes(void *blob, u32 disabled_cores) { static const char * const nodes_path[] = { "/cpus/cpu@1", "/cpus/cpu@2", "/cpus/cpu@3", }; u32 i = 0; int rc; int nodeoff; if (disabled_cores > 3) return -EINVAL; i = 3 - disabled_cores; for (; i < 3; i++) { nodeoff = fdt_path_offset(blob, nodes_path[i]); if (nodeoff < 0) continue; /* Not found, skip it */ debug("Found %s node\n", nodes_path[i]); rc = fdt_del_node(blob, nodeoff); if (rc < 0) { printf("Unable to delete node %s, err=%s\n", nodes_path[i], fdt_strerror(rc)); } else { printf("Delete node %s\n", nodes_path[i]); } } Re: A little confused about dtsi for imx8mm single core 你好@hogole、 1>> U-Boot 在运行时不会修改 Linux 设备树。 一旦加载 Linux 内核,U-Boot 就无法再控制设备树了。 2>> U-启动 检测 SoC 模型以避免使用不可用的资源,例如缺少 CPU 内核、GPU、NPU 等。此检测有助于防止系统在启动期间出现不稳定。 3 > > Linux 设备树对 U-Boot 的源代码或行为没有影响。 每个环境都独立使用自己的设备树。 4 > > t无需修改 U-启动 的源代码即可调整 Linux 使用的内核数量。 U-Boot 充当系统的引导加载程序,包括自动检测机制,以避免使用不可用的外围设备,这有助于防止 SoC 在启动期间出现故障。但是,一旦加载了 Linux 内核,它就完全依赖于设备树来了解哪些硬件资源可用。 如果设备树声明了 4 个 CPU 内核,但硬件只有 1 或 2 个,Linux 将尝试在不存在的内核上初始化和安排任务。这种不匹配可能导致内核慌乱或系统崩溃等严重问题。因此,在启动 Linux 之前,必须确保设备树准确反映实际的硬件配置。 核心配置应直接在传递给 Linux 内核的设备树中处理。 Re: A little confused about dtsi for imx8mm single core 我保存了该页面的快照,以防止像以前那样,回复意外消失。 Re: A little confused about dtsi for imx8mm single core @Chavira 1.此问题涉及 U-Boot 在运行时修改 Linux 设备树。你提到的启动过程似乎与我们目前正在讨论的话题没有直接关系,对吗? 2。如果 U-Boot 启动代码已经在运行时根据熔丝指示的内核数量自动更新 Linux 设备树,那么为什么还需要在编译时修改设备树呢? 3.如果我们在编译时修改Linux设备树,这会干扰U-Boot根据熔丝设置对核心数量的运行时调整吗? 4。既然恩智浦发布的电路板支持包中的U-Boot代码已经包含了根据熔丝指示的内核数量在运行时自动更新Linux设备树的逻辑,那么为什么恩智浦支持工程师从一开始就没有向我们提及这一点呢? 这是否意味着 U-启动 代码的这一部分可能存在问题? Re: A little confused about dtsi for imx8mm single core 今天有更新吗?问题的原因找到了吗?为什么我的回复不见了?可以恢复吗? Re: A little confused about dtsi for imx8mm single core 我的帖子怎么不见了?社区管理员能否检查一下问题出在哪里? Re: A little confused about dtsi for imx8mm single core 谢谢 Re: A little confused about dtsi for imx8mm single core 嗨,@hogole、 负责检测芯片型号的 U-启动 代码运行正常,没有任何错误。因此,我们不建议对 U-启动 进行任何修改,因为这些修改是不必要的。 不过,Linux 内核是独立运行的,为确保配置正确,我们建议移除已知无法运行的 CPU 节点。这有助于防止系统出现潜在的错误行为或不稳定性。 在这种情况下,两种方法都是有效的。 请参考以下方框图以了解启动过程: Chavira_0-1760544836053.png 顺祝商祺! 查维拉 Re: A little confused about dtsi for imx8mm single core 你的回答让我更加困惑。你是说 BSP 中自动检测内核数量的代码是错误的吗?您的意思是我需要修改 DTS 文件以移除核心节点吗? 如果电路板支持包中自动检测内核数量的代码是正确的,恩智浦工程师为什么会建议修改DTS文件以删除核心节点? 哪一个是正确的? Re: A little confused about dtsi for imx8mm single core 嗨,@hogole、 推荐的方法是从设备树中删除相应的节点。 虽然 U-Boot 可以检测芯片型号及其可用功能,但禁用设备树中的节点可确保 Linux 内核不会尝试访问不支持的元器件。这尤其重要,因为帖子中提到的源与U-启动有关,而不是与内核有关。 请注意,这是一个公共社区,欢迎大家分享自己的经验。不过,我们强烈建议您遵循官方建议,以确保稳定性和兼容性。 致以最崇高的敬意, Chavira Re: A little confused about dtsi for imx8mm single core 一周过去了。恩智浦能否考虑回答我的疑问,以便我对目前正在进行的 iMX8MM 项目充满信心?我们需要恩智浦的专业支持。 Re: A little confused about dtsi for imx8mm single core 我相信这个社区的很多人都会同意我的观点。我们都相信恩智浦工程师的回答。如果让我们投票,绝大多数人肯定会考虑恩智浦工程师的答案。 Re: A little confused about dtsi for imx8mm single core 另外,我还想知道解释。 Re: A little confused about dtsi for imx8mm single core 另外,我还想知道解释。 Re: A little confused about dtsi for imx8mm single core 另外,我还想知道解释。 Re: A little confused about dtsi for imx8mm single core 另外,我还想知道解释。 Re: A little confused about dtsi for imx8mm single core 另外,我还想知道解释。 Re: A little confused about dtsi for imx8mm single core 另外,我还想知道解释。 Re: A little confused about dtsi for imx8mm single core 另外,我还想知道解释。 Re: A little confused about dtsi for imx8mm single core 另外,我还想知道解释。 Re: A little confused about dtsi for imx8mm single core 另外,我还想知道解释。 Re: A little confused about dtsi for imx8mm single core 另外,我还想知道解释。 Re: A little confused about dtsi for imx8mm single core 另外,我还想知道解释。 Re: A little confused about dtsi for imx8mm single core 另外,我还想知道解释。 Re: A little confused about dtsi for imx8mm single core 另外,我还想知道解释。 Re: A little confused about dtsi for imx8mm single core 另外,我还想知道解释。 Re: A little confused about dtsi for imx8mm single core 另外,我还想知道解释。 Re: A little confused about dtsi for imx8mm single core 另外,我还想知道解释。 Re: A little confused about dtsi for imx8mm single core 另外,我还想知道解释。 Re: A little confused about dtsi for imx8mm single core 另外,我还想知道解释。 Re: A little confused about dtsi for imx8mm single core 另外,我还想知道解释。 Re: A little confused about dtsi for imx8mm single core 另外,我还想知道解释。 Re: A little confused about dtsi for imx8mm single core 另外,我还想知道解释。 Re: A little confused about dtsi for imx8mm single core 另外,我还想知道解释。 Re: A little confused about dtsi for imx8mm single core 另外,我还想知道解释。 Re: A little confused about dtsi for imx8mm single core 另外,我还想知道解释。 Re: A little confused about dtsi for imx8mm single core 另外,我还想知道解释。 Re: A little confused about dtsi for imx8mm single core 另外,我还想知道解释。 Re: A little confused about dtsi for imx8mm single core 另外,我还想知道解释。 Re: A little confused about dtsi for imx8mm single core 另外,我还想知道解释。 Re: A little confused about dtsi for imx8mm single core 另外,我还想知道解释。 Re: A little confused about dtsi for imx8mm single core 另外,我还想知道解释。 Re: A little confused about dtsi for imx8mm single core 另外,我还想知道解释。 Re: A little confused about dtsi for imx8mm single core 另外,我还想知道解释。 Re: A little confused about dtsi for imx8mm single core 另外,我还想知道解释。 Re: A little confused about dtsi for imx8mm single core 另外,我还想知道解释。 Re: A little confused about dtsi for imx8mm single core 另外,我还想知道解释。 Re: A little confused about dtsi for imx8mm single core 另外,我还想知道解释。 Re: A little confused about dtsi for imx8mm single core 最终的解释是什么? Re: A little confused about dtsi for imx8mm single core 最终的解释是什么? Re: A little confused about dtsi for imx8mm single core 最终的解释是什么? Re: A little confused about dtsi for imx8mm single core 最后的结论是什么?
查看全文
查询 RC522 的卡检测 IRQ 您好, 我正在使用 RC522 RFID 模块,有一个关于卡片检测中断的问题。 当我开发 SL030 时,有专用的卡片检测中断可用。 我注意到 RC522 开发板有一个 IRQ 引脚,根据数据表,可以使用 comirQreg 寄存器(地址 0x04)将不同的中断源路由到这个引脚。 不过,在查看了可用的中断源后,我没有找到专门用于卡片检测的中断源。你能否确认 RC522 是否支持专用的卡检测 IRQ,或者是否必须通过轮询检测卡的存在? 感谢您的支持。 Re: Query on Card Detection IRQ for RC522 您好,先生, 不幸的是,没有版本功能可以做到这一点。 我们知道这是一个很棒的功能。因此,它是内置的或最新的NFC前端设备。 Re: Query on Card Detection IRQ for RC522 你好 谢谢您的答复。我想澄清一下关于 MFRC522 的问题。 我知道IRQ引脚可以由数据传输、计时器事件和其他与通信相关的信号等事件触发信号,如数据表表18所列。 我的问题是:是否有可能使用 MFRC522 上任何可用的 IRQ 源推断出卡的存在,而不是发送 ATQ 命令进行轮询? 换句话说,即使没有专用的卡检测中断,能否以任何方式可靠地使用现有的 IRQ 触发信号来检测新卡何时进入读卡器现场,从而使卡检测可以由事件驱动,而不是持续轮询卡? Re: Query on Card Detection IRQ for RC522 您好,先生, 非常感谢您对我们的产品感兴趣。 不建议将 MFRC522 用于新设计,因此,我们的建议是探索使用 CLRC663 plus 系列 IC 的可能性。 关于您试图读取的标签,请记住 SL2 和 SL3 分别是ICODE或UCODE产品。ICODE 是 ISO15693 标签,MFRC522 无法读取,因为这款读卡器 IC 只能与 nTag 和 MIFARE 卡接口。可能是 MFRC 实际上没有与标签通信。   可用的 IRQ 引脚用于与主机进行实际数据交换。如表 18 所示。这些事件可以触发信号 IRQ 引脚。如果你正在寻找卡片检测引脚,我的建议是改用 CLRC663,它具有电源卡检测功能,当卡靠近读卡器天线时,它会唤醒,天线的失谐会将 IRQ 发送到主机。   如果您需要我提供更多信息,请随时告诉我。
查看全文
物联网 (IoT) 和 IMM 传感器产品 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 传感器是使您的产品在市场上脱颖而出的关键,并增加了情境感知、篡改检测、强大的用户界面和智能唤醒功能。本课程将逐步介绍物联网和 IMM 市场中的所有领先应用,并为您的产品提供传感器工具箱工具的演示。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 传感器是使您的产品在市场上脱颖而出的关键,并增加了情境感知、篡改检测、强大的用户界面和智能唤醒功能。本课程将逐步介绍物联网和 IMM 市场中的所有领先应用,并为您的产品提供传感器工具箱工具的演示。
查看全文
eIQ Time Series Studioトレーニング:FRDM-MCXN947で時系列MLモデルを構築して実行する 機械学習(ML)がデータの発生源に近づく傾向が続いているのを受け、NXPのeIQ Time Series Studio(TSS)は、開発者がNXPマイクロコントローラに時系列モデルを直接ビルドし、トレーニングして展開するための強力で直感的な環境となります。 この2部構成の実践的トレーニング・シリーズは、FRDM-MCXN947開発ボードとML Vibro Sens Clickセンサ・ボードを使用した、データのインポートからモデルの展開に至る一連のワークフローについて説明する開発者向け教材です。 ラボ1:事前収集データによる分類 トレーニングの最初の部分では、ファンの状態の分類に関する例を交えて、eIQ Time Series Studioの基礎について学びます。以下は学習内容です。 TSSでサンプル・プロジェクトを試してみる。 3軸加速度センサから時系列データをインポートしてラベリングする。 分類モデルをトレーニングして、ファンの4つの状態(オン、オフ、詰まり、摩擦)を検出する。 混乱行列とエミュレーションを使用してモデルのパフォーマンスを評価する。 MCUXpresso IDEを使用してモデルをFRDM-MCXN947開発ボードに展開する。 このラボは、事前に収集されたデータを使用して迅速に開始し、モデル作成とデプロイメントのエンド・ツー・エンドのワークフローを理解するのに理想的です。 ラボ2:実際のセンサ・データによる異常検知 トレーニングの第2部では、ラボ1を土台にして、リアルタイム・データの収集と異常検知の方法について説明します。ML Vibro Sens Clickボードを使用して加速度センサ・データを収集し、そのデータでモデルをトレーニングして異常な振動を検出します。 以下は主な手順です。 TSSでデータ・ロギング・ユーティリティを使用して実際のセンサ・データを収集する。 データ運用ユーティリティを使用してデータセットをクリーンアップし、準備を整える。 カスタムデータを用いた異常検知モデルのトレーニング 。 FRDM-MCXN947ボードでシリアルターミナルインターフェースを使用してモデルを導入しテストする 。 このラボは、開発者独自の環境とセンサ設定に合わせたモデルの構築方法を示すもので、予知保全、振動モニタリング、インダストリアル異常検知などの用途に最適です。 eIQ Time Series Studioを選ぶ理由 NXPのeIQ Time Series Studioは、より広範なeIQツールキットの一部であり、時系列データアプリケーション専用に設計されています。それにより可能になるのは: 加速度センサなどのセンサから、時系列データセットをインポートし、ラベリングする。 組み込みシステム向けに最適化された古典的なMLアルゴリズムを使用してモデルをトレーニングする。 表示されないデータでモデルをテストし、パフォーマンスを検証する。 MCUXpresso IDEまたはVS Codeを使用して、NXPマイクロコントローラにシームレスにモデルを展開する。 トレーニング要件 ハードウェアセットアップ:FRDM-MCXN947ボードとML Vibro Sens Click、FXLS8974CF加速度センサを使用します。 ソフトウェア・ツール:eIQ Toolkit 1.15.1、MCUXpresso IDE v24、およびMCUXpresso SDK 25.03 for FRDM-MCXN947。 まとめ このトレーニングでは、FRDM-MCXN947で時系列データ用機械学習モデルをビルドするための実践的でアクセスしやすい方法を学びます。初心者から、実データでカスタム・モデルをビルドしてインダストリアル装置のモニタリング、異常検知、予知保全ソリューションの構築といった用途で使うなどさまざまな目的で、eIQ Time Series Studioはアイデアを実現するためのツールと知識を提供します。 NXPのeIQ Time Series Studioを使用して、時系列データ用の機械学習モデルをビルド・展開する方法を学びましょう。この2部構成のトレーニングでは、FRDM-MCXN947開発ボードでのファンの状態の分類方法と異常をリアルタイムに検知する方法を取りあげます。 FRDM-MCXN FRDMトレーニング ハンズオン・トレーニング MCU
查看全文
Green Hills:安全集成驾驶舱的安全虚拟机管理程序 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 在过去的 10 年里,Green Hills 观察到汽车制造商和一级客户从传统的动力系统、安全气囊和制动 ECU 领域扩展到图形丰富的仪表板、开源操作系统和安全的联网汽车。一项主要要求是 ECU 整合,同时保持 ASIL 安全性完好无损。这要求运行时架构能够在同一单核上(或跨 SMP 的多个核上)安全可靠地运行客户操作系统 Linux 或 Android,同时运行仪表盘、网关、V2X 和 ADAS 等安全或安全关键型应用程序。在这里,我们将仔细研究客户的痛点和目标,并总结各种行业解决方案,包括 INTEGRITY Multivisor 安全管理程序。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 在过去的 10 年里,Green Hills 观察到汽车制造商和一级客户从传统的动力系统、安全气囊和制动 ECU 领域扩展到图形丰富的仪表板、开源操作系统和安全的联网汽车。一项主要要求是 ECU 整合,同时保持 ASIL 安全性完好无损。这要求运行时架构能够在同一单核上(或跨 SMP 的多个核上)安全可靠地运行客户操作系统 Linux 或 Android,同时运行仪表盘、网关、V2X 和 ADAS 等安全或安全关键型应用程序。在这里,我们将仔细研究客户的痛点和目标,并总结各种行业解决方案,包括 INTEGRITY Multivisor 安全管理程序。
查看全文
示例 MPC5744P PMC SW 触发自检 GHS614 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ******************************************************************************** * 详细说明: * 本例演示了 PMC SW 触发的自检配置和执行 * ---------------------------------------------------------------------------------------------- * 测试硬件:MPC57xx * 掩模组:1N15P 和 0N15P * 目标:internal_FLASH * Fsys: 200 MHz PLL,带 40 MHz 晶振参考 * ******************************************************************************** 修订历史: 1.0 2016年4月4日 b21190(Vlna Peter)初始版本 1.1 2017 年 4 月 20 日 b21190(Vlna Peter)添加了软件 PMC 自检 ********************************************************************************************/ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ******************************************************************************** * 详细说明: * 本例演示了 PMC SW 触发的自检配置和执行 * ---------------------------------------------------------------------------------------------- * 测试硬件:MPC57xx * 掩模组:1N15P 和 0N15P * 目标:internal_FLASH * Fsys: 200 MHz PLL,带 40 MHz 晶振参考 * ******************************************************************************** 修订历史: 1.0 2016年4月4日 b21190(Vlna Peter)初始版本 1.1 2017 年 4 月 20 日 b21190(Vlna Peter)添加了软件 PMC 自检 ********************************************************************************************/
查看全文
中国Automotive_Connects汽车电源管理解决方案 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 汽车架构的演变和混合动力化程度的提高要求电源管理也随之演变,以适应应用和环境的变化。在本次会议期间,您将了解市场动态的概况。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 汽车架构的演变和混合动力化程度的提高要求电源管理也随之演变,以适应应用和环境的变化。在本次会议期间,您将了解市场动态的概况。
查看全文
电钻异常检测 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 使用了一些 Rapid IoT 的传感器- 陀螺仪/加速度计/磁力计 快速物联网经过训练,可在发生超出范围的情况时发出警报 同样的异常检测原理也适用于其他垂直行业,例如家庭和楼宇自动化的温度、湿度、空气质量 感谢 Theophile LeRoy 整理此文 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 使用了一些 Rapid IoT 的传感器- 陀螺仪/加速度计/磁力计 快速物联网经过训练,可在发生超出范围的情况时发出警报 同样的异常检测原理也适用于其他垂直行业,例如家庭和楼宇自动化的温度、湿度、空气质量 感谢 Theophile LeRoy 整理此文 应用视频 Hexiwear 快速物联网 回复:异常检测 - 用于电钻 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 我认为 GUI 是用 C++ 完成的。 可以训练2种模型:SVM(支持向量模型)或GMM(高斯混合模型)。这个演示中没有 NN。 异常检测完全在 Rapiot Iot 上运行(包括训练),串行总线将数据流传输到 PC,这仅用作轻松显示和配置参数的一种方式。 我们正在完成不需要任何 PC 的程序的另一个版本 - 演示视频将很快发布...在嵌入式世界展示期间。 回复:异常检测 - 用于电钻 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 凉爽的! 但我对于如何做到这一点有很多疑问...... 显示的 GUI 是在 Matlab 中完成的吗?训练了什么样的模型?它是神经网络还是其他什么东西? 我猜测模型和异常检测在 PC 上运行,而快速物联网仅用于传输数据? 回复:异常检测 - 用于电钻 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 你好,Sudhir,尚未最终确定或可用 - 我们已用小型直流电动机替换了钻头。 请继续关注——您计划用该应用程序做什么? 回复:异常检测 - 用于电钻 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 这是一个非常酷的应用程序,我在 2019 年 CES 上看到了 i.MX 处理器的现场演示。该应用程序可以下载吗?
查看全文