Multi Source Translation Content

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Multi Source Translation Content

Discussions

Sort by:
CSEc Error I'm using CSEc with S32K144, when does it return KEY_INVAILD error at BOOT_DEFINE? I hope to get answers and have a happy day! Re: CSEc Error Hi @xiaozhi  I can't see a reason for such error when calling BOOT_DEFINE function. This function can be called even if BOOT_MAC_KEY is not provisioned yet, so it does not require a key.  Regards, Lukas
View full article
CSEC GenerateMACAddrMode 地址范围 圣诞快乐 你好 当我使用 CSEC 的 GenerateMACAddrMode 函数时,当地址值超过 0x7DFFF 时,会发生错误。这正常吗? Re: CSEC GenerateMACAddrMode address range 我的错 我的意思是无法从 512kb CSEC_DRV_GenerateMACAddrMode(CSEC_RAM_KEY,(uint8_t *)0x0007FFFC, 0x00000080, (uint8_t *)cmacout) 中取出; 但我使用 addr = 0x0007FFFC,len = 0x00000080 也没有错误,但超出范围 Re: CSEC GenerateMACAddrMode address range 你好@SaLan 这是 Addr 模式下 CMD_GENERATE_MAC 命令(也称为指针方法)的限制: 分区(即块大小)可以是 128KB、256KB 或 512KB,视衍生产品而定: 此致, Lukas
View full article
mk64 从闪存 0xE5FF8 读取数据会导致总线故障 你好, 我有一款运行 MK64FN01M 的板,与 frdm_K64 的板类似。 我确实在存储CRC的最后一个字节上存储了闪存中的设置。 对于板上的一个扇区,我在阅读该部分时出现总线故障 该代码调用了从 0xE5FF8 到 RAM 的简单 memcpy,长度为 8 字节。 该代码中的该函数之前被不同的内存部分调用过。 只有在这些位置上,代码才会崩溃。 当我把这个扇区移到其他位置时,它就能正常工作了。 是否知道为什么特定内存会出现问题? 谢谢,阿迪布 Re: mk64 read from flash 0xE5FF8 causes busfault 你好@theadib 请先擦除整个扇区,然后写入与 8 字节边界对齐的设置数据(包括 CRC)。不要对同一 8 字节短语执行部分更新。然后,继续进行读取操作。   BR 爱丽丝 Re: mk64 read from flash 0xE5FF8 causes busfault 你好,爱丽丝,感谢您的回复。 总线故障发生在读取操作期间(来自闪存位置的 memcpy)使用常规闪存地址会导致总线故障的原因 是什么? 之前没有写入操作。 是否有可能持续"阻止/保护" 闪存的读取。 我的程序在其他设备上运行正常。 有什么想法吗? 谢谢,阿迪布 Re: mk64 read from flash 0xE5FF8 causes busfault 你好@theadib 有 FSEC 寄存器。FSEC 中的高效密码学标准(SEC) 位决定了 MCU 处于安全还是不安全状态。虽然它可以控制整个 MCU,但在你的情况中,只有部分内存无法读取,所以我认为这不是原因。 有可能是上一次写入操作过程中发生了错误,因此我建议先擦除内存,然后再次读取以检查是否正常工作。   谢谢!   BR 爱丽丝   Re: mk64 read from flash 0xE5FF8 causes busfault 你好@Alice_Yang, 也许这个问题与我使用世纪佳缘 JLink 时发现的一些奇怪行为有关。 当我在 JLink 中使用 MK64FN1M0XXX12 连接到我的 MK64FN1MOVLQ12 时: 设备 mk64fn1moxxx12 如果 SWD 速度 1000 connect erase loadbin imagefile.bin 0 通常 jLink 会声称设备在擦除后受到保护。 并提出了所附的对话。 我本以为在执行擦除命令后设备不受保护且不安全。 使用 JLink 完全擦除闪存并加载新映像的首选顺序是什么? 。 预先致谢 Re: mk64 read from flash 0xE5FF8 causes busfault 您好@Alice_Yang 很抱歉打扰您...... ,我现在已经找到了根本原因,即向同一地址重复写入相同数据。 这种情况不应该发生在没有错误的代码中 😉 但是, ,第二次写入会返回错误代码 ,但随后即使读取该扇区也会导致 BUS_FAULT 陷阱。 有没有可能在一次访问导致整个程序崩溃之前检查扇区状态? 这样,我就可以再次正确擦除扇区,并将扇区置于正确的状态。 ?? 我已经查看了参考手册第 29.4.10.2 节中的 FSFE 描述闪存命令。 但我没有看到一条命令可以"测试" 程序存储器中的一个扇区。 我是不是漏掉了什么? 这样,我就能制作出更具弹性的应用程序,在重启后检查闪存状态。 预先致谢, Adib Re: mk64 read from flash 0xE5FF8 causes busfault 你好@theadib 使用 J-Link 擦除时,同一芯片有两种选择。请选择没有 “允许网络安全” 的设备名称;这样,擦除后将无法保护设备名称。 谢谢。 BR 爱丽丝 Re: mk64 read from flash 0xE5FF8 causes busfault 你好@theadib 用上市 “擦除闪存扇区” 命令后,FRFE 会擦除所选闪存,然后验证其是否已擦除。如果擦除验证失败,则 FSTAT[MGSTAT0] 位被置位。 在擦除闪存扇区操作 完成后,CCIF 标志被置位。擦除闪存扇区命令可挂起(参见 FCNFG[ERSSUSP] 位和图 29-11)。 BR 爱丽丝
View full article
SW32K3_IPCF_4.2.0_D2412はS32K328チップをサポートしていますか? S32DS 3.6.3 ベースSW32K3_IPCF_4.2.0_D2412 パッケージを使用して、S32K328 チップ上で IPCF を構成するときに、上記のような問題が発生しました。コア タイプとコア インデックスを構成できません。何が原因なのか説明していただけますか?#S32K328チップをサポートする他のIPCFソフトウェアパッケージはありますか? Re: Does the SW32K3_IPCF_4.2.0_D2412 support the S32K328 chip こんにちは、 リリースノートを見ると、S32K328 を直接サポートしていないようです。 しかし、代わりに S32K358 を使用しても問題はないと思います。 IPCF_S32K3_4.2.0_ReleaseNotes_Updated_D2502.pdf も確認しましたが、結果は同じです。唯一の違いはロックステップなので、代わりに S32K358 を使用しても問題はないと思います。 S32K328 が IPCF リリースで直接サポートされない理由については情報がありません。 よろしくお願いいたします。 ピーター Re: Does the SW32K3_IPCF_4.2.0_D2412 support the S32K328 chip S32K328 をサポートする IPCF ソフトウェア パッケージのバージョンはありますか?そうでない場合、プロジェクトが S32K324 用に完全に構成されている場合、S32K328 ベースのプロジェクトで実行できますか? Re: Does the SW32K3_IPCF_4.2.0_D2412 support the S32K328 chip こんにちは、 互換性を保つために、S32K328 の代わりに S32K358 の直接導関数を使用します。 よろしくお願いいたします。 ピーター
View full article
CAN MCX Nx4x FlexSPI ポートA とポートB を異なるデバイスで同時に使用できますか。 こんにちは、NXPさん FlexSPI を使用してハードウェアを接続し、両方のデバイスを同時にCAN使用できますか? ポートA->NORフラッシュ ポートB->PSRAM また、参考になる構成例はありますか? どうもありがとうございます MCX N Re: Can we use MCX Nx4x FlexSPI portA and portB with different device at the same time. こんにちは、ハリー。 Spark の説明によると、device_config と clk ソースをチェックする必要がありますか? 私は見た typedef 構造体 _flexspi_config { ...... #定義されている場合(FSL_FEATURE_FLEXSPI_SUPPORT_SEPERATE_RXCLKSRC_PORTB) && FSL_FEATURE_FLEXSPI_SUPPORT_SEPERATE_RXCLKSRC_PORTB flexspi_read_sample_clock_t rxSampleClockPortB; /*!< フラッシュ読み取り用のサンプルクロックsource_bの選択。*/ #endif 1.portA と PortB を使用する場合、別々の rxclksource を使用する必要がありますか? 2. FLEXSPI_SetFlashConfig() に渡される &deviceconfig をチェックする必要がありますか? Re: Can we use MCX Nx4x FlexSPI portA and portB with different device at the same time. こんにちは、ハリー。 サンプル コードでは、PortA の NOR フラッシュ ID にアクセスする方法のみが提供されており、MCX-N5XX-EVK にコネクテッドされた PSRAM を使用して PortB にアクセスするためのコードを追加しようとしています。参考までに実験結果を以下に示します。 FlexSPI 設定: ポートA->NORフラッシュ ポートB->PSRAM テストCASE1:成功 初期PortAおよびPortAフラッシュIDの読み取り(1バイト) テストCASE2: 成功 ポートBの初期値とポートBのフラッシュIDの読み取り(1バイト) テストCASE3: 失敗 最初にポートAとポートBの両方が、アドレスを使用してポートAとポートBのフラッシュID(1バイト)を個別に読み取ります。 以下に参考用のコードスニペットを示します。PortA と PortB の状況で間違いがあったか、さらに設定が必要かどうかを確認してください。 ポートAとポートBの両方のフラッシュデバイスを初期化するためのflexspi_nor_flash_initのコード変更 ポートBデバイスを読み取るためにflashXfer.deviceAddressにオフセットを追加します。 参考までに、変更されたファイルとプロジェクト全体のアーカイブを以下に示します。 Re: Can we use MCX Nx4x FlexSPI portA and portB with different device at the same time. こんにちは SDKs サンプルを参照していますが、同時に 2 つのデバイスではなく 1 つのフラッシュ デバイスにコネクテッドされています。 2 つのデバイスを同時に動作させるには、設定が足りないのではないかと思います。 参考になるサンプル構成はありますか? または、レジスタ レベルから正しい構成を実行したことをどのように確認すればよいでしょうか? よろしくお願いします。 Re: Can we use MCX Nx4x FlexSPI portA and portB with different device at the same time. こんにちは@greatshow_chen はい、NXP MCX Nx4x では、FlexSPI ポート A とポート B の両方を同時に使用して、2 つの異なるメモリ デバイスに接続CAN。 ポートA->NORフラッシュ ポートB->PSRAM 次の点を確認する必要があります。 NOR フラッシュと PSRAM は競合するピンを共有していません。 flexspi_octal_polling_transferをCAN参照します。 BR ハリー Re: Can we use MCX Nx4x FlexSPI portA and portB with different device at the same time. こんにちは、 FlexSPI を搭載した多くの NXP マイクロコントローラ (i.MX RT シリーズなど) には、2 つの独立した FlexSPI チャネル (ポート A とポート B) があります。各ポートは、異なるタイプのメモリ デバイスと通信するように構成CAN。これにより、NOR フラッシュを 1 つのポートに接続し、PSRAM を別のポートに接続できるようになります。
View full article
关于使用 RTD 进行功能安全配置的问题 你好,团队 请问 S32K314 的热电阻(MCAL/SPD)配置如何? Q1.我没有在 RTD 上找到关于带中断的 PLL LOL 的 "配置"。 哪种配置(来自带有 SPD 的 MCAL RTD)可以配置 LOL 的 RESET 或中断? Q2.对于带中断功能的低压检测 和 HVD,我没看清哪个与低压检测 和 HVD 有关。 请问哪一个是低压检测和 HVD 的中断反应,“MCU_ERROR_ISR_NOTIFICATION” 还是 “MCU_PMC_NOTIFICATION”? Q3.对于 ERM0 配置,如何配置 ERM(使用 RTD/SPD),例如下面的代码? 谢谢! RTD S32_CONFIG_TOOL S32DS Re: Question about Safety configuration using RTD 是的 用户可在 EB Tresos 的此节点中配置其用户通知,MCU_ERROR_ISR_NOTIFICATION 将在 PMC_VoltageError_IRQHandler> 中调用 ...> 然后,Mcu_Ipw_ReportPowerErrorsCallback 将调用此通知 Re: Question about Safety configuration using RTD 你好@congnguyenphu 感谢您的回复。 为了再次确认,低压检测/HVD 与 MCU_ERROR_ISR_NOTIFICATION 有关,不是吗? 谢谢! (我将关闭此票......) Re: Question about Safety configuration using RTD 你好@Luke_Chun 1.要配置 PLL LOL 的中断,Platform 模块中指向的 IRQ 必须正确。应启用 SoC_PLL_IRQn(NVIC 212)。它在参考手册和我们的头文件中提到: 但是,我检查了 RTD 代码包,我们不为这个中断提供 ISR。我在 SPD 包中也找不到。因此,用户需要为该中断处理程序实现自己的 ISR。 2。NVIC 52 参考手册中提及的带中断的低压检测 和 HVD: 在 RTD 的 MCU 集成手册中,我们提供了名为 PMC_VoltageError_IRQHandler 的 ISR 来处理该问题: 您可以在 RTD 平台中通过 IRQ"PMC_IRQn" 配置并启用它。 在 PMC_VoltageError_IRQHandler() 中,它还通过"MCU_ERROR_ISR_NOTIFICATION "宏调用MCU 配置中用户自定义的回调通知 McuErrorIsrNotification。 3.如何配置 ERM: -在 RTD 代码包中:我们在 EB Tresos/S32CT 上没有配置来帮助用户配置 ERM 寄存器的值。但 RTD 在 BaseNXP/header/S32K314_ERM.h 中提供了宏,帮助用户设置该寄存器的值: 用户可以使用这些宏作为裸机代码来设置寄存器的值。 -在 SPD 代码包中:我指的是 emcem 插件,文件 emceM_ERM.C在函数 eMcem_Erm_Init()中,以下宏用于设置 ERM[CR] 寄存器的值:erm_cr_addr32()、safetybase_reg_write32()  
View full article
汇编程序在 CodeWarrior 中不合法 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 你好   在使用 mwasmeppc.exe 编译汇编文件时,我遇到了一个问题、这是错误信息:   * 编译 s -> o * ### mwasmeppc.exe Assembler: # File: .\output\obj\cstartup.s # --------------------------------- # 88: e_and2i. # Error: ^^^^^^^^ # 当前目标处理器的指令不合法 ### mwasmeppc.exe 汇编器: # 99: sub r4,r3 # 错误: ^^^^^ # 简化助记符子的参数不足 ### mwasmeppc.exe 汇编器: # 114: e_or2i r31,0x4002 # Error: ^^^^^^ # 对于当前目标处理器,指令不合法   某些命令( e_and2i.sub e_or2i)无法识别,但该文件 cstartup.s 可与其他编译器(Greenhills、Windriver 等)配合使用。   CodeWarrior 版本: 适用于 MPC55xxMPC56xx v2.10。 MCU: XPC560XB CPU 类型为 -proc Zen   我不知道是我错过了一些编译器选项,还是我需要包含一些编译器文件?   顺祝商祺! 思佳 概述 Re: Assembler not legal in CodeWarrior 这是一个有趣的问题!这可能与 CodeWarrior 处理旧版汇编指令或项目设置的方式有关。您可以尝试查看编译器配置,检查是否正确设置了所有汇编路径。要更清楚地了解此类程序或法律文件细节,您可以访问迈阿密戴德在线案例,获取有关结构化流程和案件处理的参考式见解。有时,重温文档标准有助于有效确定缺失的配置。 Re: Assembler not legal in CodeWarrior 如果 CodeWarrior 不支持某些工具或功能(如汇编器),就会很麻烦。要获得有关相关规则和合规性的更多指导或验证,刑事法庭数据等资源有时可以提供有用的参考点。探索替代方法或支持模块可确保开发工作更加顺利。随时了解制约因素有助于防止意外错误并简化编码项目。 Re: Assembler not legal in CodeWarrior <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 嗨,思佳、 我已将"答案" 贴到您的另一个主题上。请检查。 此致, Martin Re: Assembler not legal in CodeWarrior <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 嗨,马丁、 非常感谢。 我还有一个关于汇编代码的问题https://community.nxp.com/thread/434043你能看看吗? 顺祝商祺! 思佳 Re: Assembler not legal in CodeWarrior <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 嗨,思佳、 请查看附件,我向您发送的是使用 CW 2.10 生成的一些项目的默认链接器文件。您可以将其作为链接文件的指南。 关于调试信息,这里有部分文档介绍了如何在 .elf 中添加调试信息锉刀希望能对您有所帮助。如果没有,请告诉我,我会尝试不同的解决方案。 ------------------------------------------------------------------------------- 调试控制选项 ------------------------------------------------------------------------------- -g[dwarf] # 全局;套用;生成 DWARF 1.x 调试 # 信息;与"-sym dwarf-1,full "相同 -gdwarf-2 # 全局;套用;生成 DWARF 2.x 调试 # 信息;与"-sym dwarf-2,full" 相同 -sym 关键字[,...] # 全局;指定调试选项 off # 不生成调试信息; # 默认值 on|dwarf-1 # 打开 DWARF 1.x 调试信息 dwarf-2 # 打开 DWARF 2.x 调试信息 ----------------------------------------------------------------------------------------------------- 此致, 马丁 Re: Assembler not legal in CodeWarrior <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 嗨,马丁、 我修改了 lcf 文件,现在项目可以生成地图和精灵了。 现在 lcf 文件仍然有一些错误,当我使用 Trace32 调试代码时,它找不到启动代码,我怎样才能将启动代码(__entry)定义为 0x0 地址? 另一个问题是,我只能在 Trace32 中看到汇编程序,您知道如何才能在 Trace32 中看到 c 文件吗? 顺祝商祺! 思佳 Re: Assembler not legal in CodeWarrior <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 嗨,思佳、 MAP 文件看起来不完整。在连接项目时是否有任何错误?您是否能获得 .elf文件?您只共享了一个对象文件,因此我无法尝试链接。 因此,能否请您给我回信,最后能否请您分享您想链接到一起的所有对象文件? 此致, Martin Re: Assembler not legal in CodeWarrior <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 嗨,马丁、 这些是 .o文件和地图文件。 顺祝商祺! 思佳 Re: Assembler not legal in CodeWarrior <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 嗨,思佳、 能否请您分享一下生成的地图文件?为什么您认为地图文件不正确? 能否共享您试图链接的对象文件? 此致, Martin Re: Assembler not legal in CodeWarrior <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 嗨,马丁、 我使用的是 mwldeppc。 顺祝商祺! 思佳 Re: Assembler not legal in CodeWarrior <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 嗨,思佳、 您是使用 CodeWarrior IDE 还是 mwldeppc 命令行工具进行链接? 参考资料 Martin Re: Assembler not legal in CodeWarrior <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 您好, 这些是我使用的链接选项: LINK_OPT += -proc=Zen #mcu 类型;通用 LINK_OPT += -char=unsigned #设置 "char "的符号;必须与编译器匹配。 LINK_OPT += -srec #生成扩展名为 .mot 的 S 记录文件 LINK_OPT += -map #生成地图文件 LINK_OPT += -code_merging=all,aggressive #代码合并优化 LINK_OPT += -far_near_addressing #启用远近寻址优化 LINK_OPT += -vle_enhance_merging #启用 VLE 增强代码合并优化功能 LINK_OPT += -vle_bl_opt LINK_OPT += -abi eabi LINK_OPT += -gdwarf-2 LINK_OPT += -nostdlib LINK_OPT += -m __entry 顺祝商祺! 思佳 Re: Assembler not legal in CodeWarrior <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 您好, 好的,但现在我无法生成正确的 .Map 文件,是否需要添加一些链接选项?或 .o文件不好吗? 这是生成的地图文件的一部分: __入口的链接地图 代码折叠在文件中:C:\HaoSijia\Projects\498_XPC560XD_XB\test_base\Conformance\IN\Platforms_ConTest_RamNoInit\output\obj\Platforms_ConTest_RamNoInit.o 代码折叠在文件中:C:\HaoSijia\Projects\498_XPC560XD_XB\test_base\Conformance\IN\Platforms_ConTest_RamNoInit\output\obj\main.o 代码折叠在文件中:C:\HaoSijia\Projects\498_XPC560XD_XB\test_base\Conformance\IN\Platforms_ConTest_RamNoInit\output\obj\板.o … 顺祝商祺! 思佳 Re: Assembler not legal in CodeWarrior <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 嗨,思佳、 是的,你完全可以使用自己的启动程序,而不是 CodeWarrior 启动文件。 此致, Martin Re: Assembler not legal in CodeWarrior <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 您好, 感谢您的解决方案,现在我又遇到了一个关于启动代码的问题: CodeWarrior 有自己的启动文件__start.c and __ppc_eabi_init.c、 我能用自己的启动代码代替这两个文件吗? CodeWarrior 版本:适用于 MPC55xxMPC56xx v2.10。 MCU: XPC560XB 顺祝商祺! 思佳 Re: Assembler not legal in CodeWarrior <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 嗨,思佳、 我看到了一些不一致的地方,可能是你要编译的代码中存在的问题: 1) 指令e_and2i和e_or2i是 VLE,而sub是 BookE。在使用mwasmeppc.exe 时,不可能在一个文件中编译两种指令。 2) 指令子程序必须有三个参数。 有几种解决方案: 1) 最好的办法是用 se_sub 代替 sub 指令,se_sub 是 VLE 指令,需要 2 个参数。不要忘记使用 -vle 选项编译文件。 2) 可以用 BookE 指令替换 VLE 指令,并在子指令中添加第三个参数。 看看附件,我给你发了 bookE 和 VLE 参考手册,其中详细描述了所有说明。 如果您有任何其他问题,请随时给我回信。 此致, Martin Re: Assembler not legal in CodeWarrior 当 CodeWarrior 抛出汇编程序错误时,尤其是当语法中的所有内容似乎都正确时,会令人沮丧。有时,问题会归结为配置或指令丢失,因此仔细检查项目设置会有所帮助。最近,我在研究文档准确性时遇到了里士满法律服务公司,它提醒我,可靠的参考资料在故障排除中是多么重要。希望分享这样的经验能帮助其他人更快地摆脱困境。 Re: Assembler not legal in CodeWarrior 我在尝试使用 CodeWarrior 中的汇编程序时也遇到了同样的问题,这让我非常沮丧。对于任何需要可靠法院信息的人来说,威尔公共记录都是查询备案和案件详细信息的有用资源。它使某些法律问题的解决变得更加容易,而无需依赖零散的资料来源。如果您想快速查阅官方记录,绝对值得一试。
View full article
ADC startup time for S32K3 I'm using S32K3 ADC, and my test found that it takes about 30ms from powering up to initialize the ADC, performing calibration, turning on conversion, and completing the acquisition for the first time, is this normal? How to shorten this time? Re: S32K3的ADC启动时间 Hi RTD Quality packages的ProfileReport.xlsx列了各个APIs的执行时间。 (比如...\SW32K3_S32M27x_RTD_R21-11_5.0.0 _D2410_QualityPackage\ADC\RTD_ADC_ProfileReport.xlsx) 建议检查一下具体是哪个函数的执行时间过长导致的。 另外请问Adc_Calibrate的返回结果是什么?如果超时了的话,建议修改超时设置: Best Regards, Robin ------------------------------------------------------------------------------- Note: - If this post answers your question, please click the "ACCEPT AS SOLUTION" button. Thank you! - We are following threads for 7 weeks after the last post, later replies are ignored Please open a new thread and refer to the closed one, if you have a related question at a later point in time. -------------------------------------------------------------------------------
View full article
Kinetis (../45/47/43;MCX W71/72/70) および MCX W23 電源プロファイルツール (ローカライズ機能を含む) このページは、Kinetis (KW35/KW38/KW45/KW47) および MCX Wx (MCX W71/72 および MCX W23) 電力プロファイル ツール専用です。 これにより、あなたのアプリケーション(オートモーティブ、IIoT、トラッカー/タグ、連続血糖モニタリング[CGM])の消費電力を推定し、ソリューションのバッテリー寿命を評価するのに役立ちます。 このページには、単独製品またはフルシステムアプリケーション向けの専用パワープロファイルツールを提供する4つのマーケットセグメントが含まれています:   1. オートモーティブ Kinetis(KW3x/4x)オートモーティブ用パワープロファイルツール - NXPコミュニティ KW35/36製品用のBluetooth LEをスタンドアロンで使用。 Bluetooth LEはKW37/38/39製品用のスタンドアロン対応です。 KW45/KW47製品用のBluetooth LEをスタンドアロンで使用。 スマートフォブアプリケーション(BLE/KW45;UWBレンジャー4位;SE;モーション・センサ) スマートフォブアプリケーション(BLE/KW47;UWBレンジャー5;SE;モーション・センサ) 2.IIoT Kinetis MCX Wxx(MCX W71/72 および MCX W23)IIoT用パワープロファイルツール - NXPコミュニティ Bluetooth LEは単体でMCX W71/MCX W72製品用です。 MCX W23製品のBluetooth LEをスタンドアロンで提供します。 スタンドアロン (IIoT) の MCX W71 および W72 マター製品用の 802.15.4 Matter ICD SIT & LIT および ZED。 Aliro Doorlockアプリケーション    3. オートモーティブおよび工業技術向けローカリゼーションアプリケーション(CCC CS) Kinetis MCX Wxx(KW47およびMCX W72)Bluetoothローカライゼーション用パワープロファイルツール - NXPコミュニティ 4.新しいツールが登場: Zephyr・ズボス Zephyr BLE KW45/MCX W71 または KW47/MCX W72 を使用して PCB を構築し、無線の性能と無線認証 (CE/FCC/IC) に関する情報をすべて得るには、次の重要なリンクを参照してください。 KW45(カーアクセサリ)を使ってPCBを構築する最良の方法 - NXPコミュニティ 電力および低電力アプリケーションノートについては、製品ページをご覧ください。便宜上、いくつかの直接リンクを次に示します。 MCXW71 - 電源管理ハードウェア KW45/K32W148 - 電源管理ハードウェア 異なる体験:ワンワイヤレス接続パワープロファイリングツール ワイヤレス・コネクティビティ電力プロファイリングツールをすべて一つにまとめています。 Kinetis(KW3x/4x、MCX W7xおよびMCX W23)One コネクティビティ Power Profile Tool - NXPコミュニティ 注:このツールはHTML形式で、使いやすく、以前のツール形式と比べて反応的(レイテンシなし)です。 製品: K32W0 製品: K32W1 製品: KW 34|35|36 製品: KW 37|38|39 製品: KW41Z |31Z | 21Z 製品: QN9080|SIP 製品: QN9090|30 Re: Kinetis (KW35/38/KW45 & K32W1/MCX W71) Power Profile Tools (including Localization) こんにちは、エベレット。 パスワードは、変更や競合他社のベンチマークの詳細が多すぎることを避けるために設定されています。 ご不便をおかけして申し訳ございませんが、それはCANません。 Re: Kinetis (KW35/38/KW45 & K32W1/MCX W71) Power Profile Tools (including Localization) こんにちは、christophe_menardさん。 @christophe_menardシート保護のパスワードを教えていただけますか。よろしくお願いします。 EverettRao_0-1729134009121.png Re: Kinetis (../45/47/43;MCX W71/72/70) & MCX W23 Power Profile Tools (including Localization) こんにちは 、 OneConnectivityPowerProfilingtool_SDK_26_03.zip を使用したいのですが、トロイの木馬が検出されました。 このツールの使い方。 サポートありがとうございます Re: Kinetis (../45/47/43;MCX W71/72/70) & MCX W23 Power Profile Tools (including Localization) こんにちは、 @pierre_demeyer この件を確認するため、社内のIT部門に問い合わせチケットを発行しました。 近いうちにまたご連絡します。 Re: Kinetis (../45/47/43;MCX W71/72/70) & MCX W23 Power Profile Tools (including Localization) こんにちは、 @pierre_demeyer IT認証の結果、CrowstrikeやDefenderのソフトウェアを使ってトロイの木馬ウイルスは検出されませんでした。
View full article
使用 blhost 编程/擦除 LPC54(S)0xx 闪存 注意:本文档提供了简单的描述,有关 flashloader 的详细信息可以在 SDK_2.5.0_LPCXpresso54S018\middleware\mcu-boot\doc 中的 LPC540xx Flashloader 用户指南入门.pdf 中找到 下载LPC54S0xx SDK。 编译flashloader工程,生成flashloader.bin 该项目位于sdk\boards \lpcxpresso54s018\bootloader_examples\flashloader 使用 dfu-util.exe 或 IDE 将 flashloader.bin 加载到 RAM 中。 dfu-util 可以从http://dfu-util.sourceforge.net/releases/下载 配置ISP引脚,然后复位芯片,使芯片进入USB1 DFU启动模式。 Boot mode ISP2 PIO0_6引脚 ISP1 PIO0_5引脚 ISP0 PIO0_4引脚 描述 USB1 DFU启动 低 低 高 USB DFU 类用于通过 USB1 高速端口将图像下载到 SRAM 中。 将LPC54S0xx设备USB1高速口与PC通过USB连接。以下是加载flashloader.bin的命令行: $ dfu-util.exe –D flashloader.bin   使用 blhost 编程/擦除 LPC540xxM/LPC54S0xxM 闪存 一旦下载了闪存加载程序二进制文件并在 LPC54S0xx 平台上开始执行,并且 LPC54S0xx 平台USB1(高速)和主机之间仍然保持物理 USB 连接,闪存加载程序将准备好接收命令。 blhost -u 0x1fc9,0x01a2 --获取属性 12 blhost -u 0x1fc9,0x01a2 --填充内存0x2000d000 4 0xc0000004 blhost -u 0x1fc9,0x01a2 --配置内存 0xa 0x2000d000 blhost -u 0x1fc9,0x01a2 --获取属性 25 0xa blhost -u 0x1fc9,0x01a2 -t 100000 --闪存擦除区域 0x10000000 0x100000 blhost -u 0x1fc9,0x01a2 -t 100000 --写入内存 0x10000000 xxx.bin 注: xxx.bin为需要下载到flash中的目标文件。 作者:刘浩 感谢刘浩。
View full article
AUT-N1761 自动驾驶汽车的第六感 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 为了实现自动驾驶,车辆需要准确地掌握周围的世界——就像人类驾驶员一样。汽车技术的目标是使车辆具备超越人类驾驶员感知的能力,从而能够实时做出最智能的决策。车辆传感器收集的信息不仅必须实时、准确,而且还必须能够抵御黑客攻击,这样我们才能将生命托付给它们。可靠的 ADAS 和适当的安全措施是自动驾驶汽车的关键因素。Vehicle-to-X 技术将可视范围扩展到驾驶员的视线之外,使驾驶员能够“看清”拐角处和障碍物。来自汽车网络的外部传感器信息和内部数据对于帮助消除全球道路上每年发生的 130 万起道路事故至关重要。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 为了实现自动驾驶,车辆需要准确地掌握周围的世界——就像人类驾驶员一样。汽车技术的目标是使车辆具备超越人类驾驶员感知的能力,从而能够实时做出最智能的决策。车辆传感器收集的信息不仅必须实时、准确,而且还必须能够抵御黑客攻击,这样我们才能将生命托付给它们。可靠的 ADAS 和适当的安全措施是自动驾驶汽车的关键因素。Vehicle-to-X 技术将可视范围扩展到驾驶员的视线之外,使驾驶员能够“看清”拐角处和障碍物。来自汽车网络的外部传感器信息和内部数据对于帮助消除全球道路上每年发生的 130 万起道路事故至关重要。 安全互联汽车和自动化汽车
View full article
从 S1L 更新 S1L <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 如果您的 FDI 板上已经有S1L ,您可以按照以下步骤更新到S1L的早期版本或更高版本。此过程不应用于更新块 0 中的 kickstart 加载程序。 步骤 1:启动系统至S1L提示符。准备好S1L的更新版本。 第 2 步:在S1L提示符下,键入“load term raw 0x90000000”以启动新图像的S1L中的二进制接收。在您的终端程序上,将S1L文件(即 s1l_from_kick_gnu.bin)作为二进制文件发送到开发板。 步骤 3:传输完成后,向主板发送中断以返回提示。在TeraTerm中,可以从控制菜单或按 ALT-B 发送中断。 步骤4:擦除FLASH中用于S1L存储的块。这些是块 1 至 24。要非常小心,不要擦除用于 klickstart 加载程序的块 0。可以使用“erase 1 24”命令来擦除块。 步骤 5:将加载的S1L图像写入从块 1 开始的S1L区域。S1L图像通常在 56K 到 80K 之间,因此它很容易容纳在 1 个块中。命令“write 0x90000000 64 64”将执行此操作。写入命令占用扇区(而不是块) - 扇区 64 是块 1 的起始位置。 步骤 6:重置电路板以验证S1L图像是否已更新。 整个序列如下所示。您可以通过检查 S1L 启动时的构建日期来查看正在运行的不同版本的 S1L 。 FDI3250 快速启动 v1.00 NAND闪存初始化 正在运行第 1 阶段加载器... Future Designs, Inc. DK-xTS-LPC3250 板 构建日期:2010年9月10日 10:12:22 自动启动正在进行中,按任意键停止 linux>加载术语原始 0x90000000 开始终端下载,发送中断停止 文件加载成功 Linux>擦除 1 24 操作将覆盖引导加载程序 - 确定吗?(是/否): 起始块擦除 linux>写入 0x90000000 64 64 Linux>FDI3250 Kickstart v1.00 NAND闪存初始化 正在运行第 1 阶段加载器... 使用默认系统配置 Future Designs, Inc. DK-xTS-LPC3250 板 构建日期:2010年9月13日 11:20:12 FDI3250
View full article
AUT-N1791 动手实践研讨会:使用 CNN 和其他分类算法识别交通标志 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 该练习旨在进行实践,包括使用视觉处理器在各种图片上运行 CNN 来识别交通信号(停止、转弯、让行等)。首先,我们将介绍机器学习中所使用的算法的基本概念。课程结束后,我们将使用视觉处理器运行 CNN 来识别交通标志和无交通标志。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 该练习旨在进行实践,包括使用视觉处理器在各种图片上运行 CNN 来识别交通信号(停止、转弯、让行等)。首先,我们将介绍机器学习中所使用的算法的基本概念。课程结束后,我们将使用视觉处理器运行 CNN 来识别交通标志和无交通标志。 安全互联汽车和自动化汽车
View full article
使用 LS1021A IoT 主机处理器和 MKW20 zigbee 切换色调灯泡的快速演示设置 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 使用 LS1021A 物联网主处理器和 MKW20 Zigbee 控制器快速设置开关色相灯泡。我们通过两步设置进行照明演示。第一步是使用 TWR-KW20 EVB通过 PC 工具(称为测试工具)控制色相灯泡。下一步是将 LS1021 用作主处理器,而不是PC测试工具。我们使用 KW20 USB 适配器、LS1021A 和色相灯泡。KW20 USB 适配器通过 Beekit 配置为 Zigbee 协调器,LS1021A 连接此 KW20 USB 适配器,然后 LS1021A发出开/关命令来开关色相灯泡。然后,您可以使用飞思卡尔的LS1021A 和 MKW20 系列进行快速演示。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 使用 LS1021A 物联网主处理器和 MKW20 Zigbee 控制器快速设置开关色相灯泡。我们通过两步设置进行照明演示。第一步是使用 TWR-KW20 EVB通过 PC 工具(称为测试工具)控制色相灯泡。下一步是将 LS1021 用作主处理器,而不是PC测试工具。我们使用 KW20 USB 适配器、LS1021A 和色相灯泡。KW20 USB 适配器通过 Beekit 配置为 Zigbee 协调器,LS1021A 连接此 KW20 USB 适配器,然后 LS1021A发出开/关命令来开关色相灯泡。然后,您可以使用飞思卡尔的LS1021A 和 MKW20 系列进行快速演示。
View full article
libvpuwrap 1.0.46 デコーダー テスト用の 1280x720.mjpg テスト入力 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 申し訳ありませんが、この入力ファイルを共有する場所が見つかりません。これは、i.MX6Q VPU上のFSL 3.10.17 BSPを使用したMJPGデコード結果の破損で報告したVPU JPEGデコーダーの問題を再現するためのものです​ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 申し訳ありませんが、この入力ファイルを共有する場所が見つかりません。これは、i.MX6Q VPU上のFSL 3.10.17 BSPを使用したMJPGデコード結果の破損で報告したVPU JPEGデコーダーの問題を再現するためのものです​
View full article
FRDM-KL02Z I2Cの2つを接続する際のヒント <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> このサンプルでは、2つのFRDM-KL02Zを使用してI2Cをテストします。400KHzのボーレートで作業することにより、一部のお客様は、I2C_CLKの端に障害が発生したときにI2C_SDAが掘りを生成することに気付くかもしれません。実際には、それはI2Cポートレイアウトに関連しているはずであり、問題はなぜこれが起こるのか、そしてどのように掘り下げるのかということです。 実際には、I2Cピンはオープンドレインであるため、実際には誰も高い値を駆動しません。高い値は、ライン上のプルアップ抵抗のためだけに存在します。J7に搭載されているI2C0_SCL線とI2C0_SDA線を使用してFRDM-KL02Zを2本接続する場合、基板上の慣性センサーとの接続にもこれらの線を使用し、両線に4.7Kのプルアップがあります。問題は、両方のボードのラインに4.7Kのプルアップがあるため、プルアップが意図したよりも弱いことです。そのため、お客様は、役立つ2つのボードの1つからプルアップ抵抗を取り外す必要があります。さらに、I2C バス上に負荷を追加しているデバイスが増えている場合は、4.7K プルアップをさらに強力なプルアップに置き換える必要があるかもしれません。
View full article
使用 DMA DS3.5 RTD300 的 S32K312 I2C 发送和接收示例 ******************************************************************************* 本演示应用程序的目的是展示 LPI2C-0作为主设备(MASTER)和LPI2C-1作为从设备(SLAVE),使用DMA进行发送(TX)和接收(RX)的用法,适用于S32K3xx系列MCU。 ------------------------------------------------------------------------------ * 测试硬件:S32K3X2EVB-Q172 * MCU:S32K312 * 编译器:S32DS3.5 * SDK 发布:RTD 3.0.0 * 调试器:PE micro * 目标:internal_FLASH ********************************************************************************
View full article
S32 Design Studio 3.6.0 - 主要功能 (在 “我的视频” 中查看) 这段短视频介绍了 S32 Design Studio 3.6.0 版本所引入的主要功能。 视频展示了 S32DS 3.5 版本与 3.6 版本在产品架构及版本变更方面的对比,随后简要概述了新引入的主要功能,这些功能会对所有使用该工具集新版本的用户产生影响。 Eclipse IDE 使用和设置 概述
View full article
Custom S32G399A board: No frames cross switch-facing RGMII bus in either direction Board: Custom S32G399A based module, derived from S32G-VNP-RDB3. PFE_MAC1 connected via RGMII (PE_02–PE_13) to an NXP SJA1110A switch port 2, configured as the DSA CPU port (in-tree sja1105 driver, kernel 6.x BSP43.0). Topology: - PFE_MAC0: SGMII via SerDes1 lane1, Mode 1 - PFE_MAC1: RGMII to SJA1110A port 2 (DSA CPU port) — the port in question - PFE_MAC2: SGMII via SerDes0 lane1 The S32G MACs are configured as follows: +---------+--------------+------------------+ |                    | LANE 0               | LANE 1                        | +---------+--------------+------------------+ | SERDES0    | GMAC (SGMII) | PFE_MAC2 (SGMII)  | | SERDES1      | NOT USED        | PFE_MAC0 (SGMII) | +---------+--------------+------------------+ Full U-Boot hwconfig: hwconfig=pcie0:mode=sgmii,clock=ext,fmhz=100,xpcs_mode=both;pcie1:mode=sgmii,clock=ext,fmhz=100,xpcs_mode=0 pfeng_mode=enable,sgmii,rgmii,sgmii DTS for port@2 (switch side): port@2 { reg = <2>; label = "OBC-1"; ethernet = <&pfe_netif1>; phy-mode = "rgmii"; rx-internal-delay-ps = <0>; tx-internal-delay-ps = <0>; fixed-link { speed = <1000>; full-duplex; }; }; DTS for pfe_netif1 (MAC side): &pfe_netif1 { phy-mode = "rgmii"; status = "okay"; fixed-link { speed = <1000>; full-duplex; }; }; PFE_MAC1 (pfe1) link state — confirmed up and correctly configured at the Linux/driver level: dmesg at boot: [ 5.264108] pfeng 46000000.pfe: netif name: pfe1 [ 5.274127] pfeng 46000000.pfe: netif(pfe1) linked phyif: 1 [ 5.279692] pfeng 46000000.pfe: netif(pfe1) mode: std [ 5.284853] pfeng 46000000.pfe: netif(pfe1) HIFs: count 1 map 02 [ 6.012884] pfeng 46000000.pfe pfe1 (uninitialized): Subscribe to HIF1 [ 6.019438] pfeng 46000000.pfe pfe1 (uninitialized): Host LLTX disabled [ 6.026270] pfeng 46000000.pfe pfe1 (uninitialized): Enable HIF1 [ 6.032374] pfeng 46000000.pfe pfe1 (uninitialized): setting MAC addr: 00:04:9f:be:ef:01 [ 6.040545] pfeng 46000000.pfe pfe1 (uninitialized): PTP HW addend 0x80000000, max_adj configured to 46566128 ppb [ 6.060939] pfeng 46000000.pfe pfe1 (uninitialized): Registered PTP HW clock successfully on EMAC1 [ 6.070441] pfeng 46000000.pfe pfe1: registered [ 6.207482] pfeng 46000000.pfe pfe1: configuring for fixed/rgmii link mode [ 6.214306] pfeng 46000000.pfe pfe1: Set TX clock to 125000000Hz [ 6.220158] pfeng 46000000.pfe pfe1: Link is Up - 1Gbps/Full - flow control off [ 5.257995] pfeng 46000000.pfe: EMAC0 interface mode: 4 [ 5.290707] pfeng 46000000.pfe: EMAC1 interface mode: 9 [ 5.323320] pfeng 46000000.pfe: EMAC2 interface mode: 4 [ 5.354571] pfeng 46000000.pfe: Interface selected: EMAC0: 0x4 EMAC1: 0x9 EMAC2: 0x4 [ 5.382609] pfeng 46000000.pfe: TX clock on EMAC0 for interface sgmii installed [ 5.390050] pfeng 46000000.pfe: RX clock on EMAC0 for interface sgmii installed [ 5.404998] pfeng 46000000.pfe: TX clock on EMAC1 for interface rgmii installed [ 5.419918] pfeng 46000000.pfe: Defer enabling of RX clock on EMAC1 for interface rgmii (ret: -5) [ 5.434235] pfeng 46000000.pfe: TX clock on EMAC2 for interface sgmii installed [ 5.448374] pfeng 46000000.pfe: RX clock on EMAC2 for interface sgmii installed [ 5.667058] pfeng 46000000.pfe: EMAC timestamp external mode bitmap: 0 [ 5.998447] pfeng 46000000.pfe pfe0 (uninitialized): Registered PTP HW clock successfully on EMAC0 [ 6.060939] pfeng 46000000.pfe pfe1 (uninitialized): Registered PTP HW clock successfully on EMAC1 [ 6.130296] pfeng 46000000.pfe pfe2 (uninitialized): Registered PTP HW clock successfully on EMAC2 [ 6.215040] pfeng 46000000.pfe: RX clock on EMAC1 for interface rgmii installed Live DTB confirms the kernel matches the source DTS: # cat /proc/device-tree/soc/pfe@46000000/ethernet@11/phy-mode rgmii ip a output: 6: pfe1: mtu 1536 qdisc mq state UP group default qlen 1000 link/ether 00:04:9f:be:ef:01 brd ff:ff:ff:ff:ff:ff inet6 fe80::204:9fff:febe:ef01/64 scope link All SJA1110 DSA slave ports correctly enumerated. This confirms the sja1105 DSA driver bound successfully to pfe1 as the CPU port/DSA master and parsed the static config without error. Clock tree: both TX and RX RGMII clocks enabled and attached to the correct consumer: # cat /sys/kernel/debug/clk/clk_summary | grep pfe1 pfe1_tx_mii 0 0 0 125000000 0 0 50000 Y deviceless no_connection_id pfe1_rx_mii 0 0 0 125000000 0 0 50000 Y deviceless no_connection_id pfe1_tx_rmii 0 0 0 125000000 0 0 50000 Y deviceless no_connection_id pfe1_rx_rmii 0 0 0 125000000 0 0 50000 Y deviceless no_connection_id pfe1_tx_rgmii 1 1 0 125000000 0 0 50000 Y ethernet@11 tx_rgmii pfe1_rx_rgmii 1 1 0 125000000 0 0 50000 Y ethernet@11 rx_rgmii pfe1_tx_sgmii 0 0 0 125000000 0 0 50000 Y deviceless no_connection_id pfe1_rx_sgmii 0 0 0 125000000 0 0 50000 Y deviceless no_connection_id So pfe1 is UP, LOWER_UP, correctly bound to the SJA1110 as DSA master, running in RGMII mode with both clocks enabled — this rules out pfe1 being down, unbound, or misconfigured at the Linux/driver level. The open question is specifically whether frames actually cross the physical RGMII pins between PFE_MAC1 and SJA1110 port 2. Issue: No traffic appears to cross the RGMII bus between PFE_MAC1 and SJA1110 port 2 in either direction, despite everything on both sides of that bus being independently up: Test 1 — S32G -> switch direction Setup: ip addr add 192.168.1.100/24 dev EPS-100bt1-9 ethtool -S pfe1 | grep '^ p02_' > before tcpdump -i pfe1 -e -nn -c 20 > capture.txt & arping -c 10 -I EPS-100bt1-9 192.168.1.6 ethtool -S pfe1 | grep '^ p02_' > after # arping -c 10 -I EPS-100bt1-9 192.168.1.6 ARPING 192.168.1.6 from 192.168.1.100 EPS-100bt1-9 Sent 10 probes (10 broadcast(s)) Received 0 response(s) $ cat capture.txt tcpdump: verbose output suppressed, use -v[v]... for full protocol decode listening on pfe1, link-type NULL (BSD loopback), snapshot length 262144 bytes 18:08:36.352535 AF Unknown (4294967295), length 64: 0x0000: ffff 0004 9fbe ef01 dadb 0c09 0806 0001 ................ 0x0010: 0800 0604 0001 0004 9fbe ef01 c0a8 0164 ...............d 0x0020: ffff ffff ffff c0a8 0106 0000 0000 0000 ................ 0x0030: 0000 0000 0000 0000 0000 0000 ............ [... 9 more identical ARP frames, all correctly DSA-tagged (dadb 0c09) and well-formed, plus one unrelated IPv6 background frame interleaved ...] # diff before after --- before +++ after @@ -1,4 +1,4 @@ - p02_: 1 + p02_: 0 p02_n_runt: 0 p02_n_soferr: 0 p02_n_alignerr: 0 # grep n_rxfrm before after before: p02_n_rxfrm: 0 after: p02_n_rxfrm: 0 Test 2 — switch -> S32G direction Setup Partner board is a separate SJA1105 switch based board. # ping -c 10 -I t1-6 192.168.1.100 (run on a separate SJA1105/1110-family switch board connected to our port 9 / 100BASE-T1 / EPS-100bt1-9) # diff before after (ethtool -S EPS-100bt1-9) - n_rxfrm: 0 + n_rxfrm: 9 <- port 9 physically received 9 frames from the wire # diff before after - p02_n_txfrm: 0 + p02_n_txfrm: 9 <- switch fabric forwarded all 9 toward the CPU port # tcpdump -i pfe1 -e -nn -c 20 (same window) listening on pfe1, link-type NULL (BSD loopback), snapshot length 262144 bytes [-- nothing captured --] Port 9 received 9 real frames; the fabric forwarded all 9 toward port 2 — but nothing arrived at pfe1. So the SJA1110's own fabric counters show all 9 frames successfully forwarded from port 9 to port 2's egress. But tcpdump -i pfe1 -e -nn on the S32G during this exact test shows NOTHING received. So the DSA/software layer on the S32G side believes it's sending (case 1). The switch's internal fabric believes it's sending toward the CPU port (case 2). Neither side has any confirmation that the other actually received anything across the physical RGMII bus. Every layer adjacent to this bus works individually; the bus itself has no confirmed successful crossing in either direction. What's been ruled out so far: - pfeng_mode / hwconfig (xpcs_mode) — confirmed correct; EMAC1 mode is RGMII (0x9), not SGMII (it was previously misconfigured as SGMII due to xpcs_mode=both on SerDes1 forcing PFE_MAC1's XPCS into SGMII; corrected to xpcs_mode=0 since PFE_MAC0 alone only needs XPCS0) - PFE_MAC1 TX/RX clock enablement — confirmed enabled at the correct rate (125MHz) in clk_summary - DSA tagging and CPU port binding — confirmed working (port netdevs exist, frames get tagged with the correct destination port in the DSA header) - SJA1110 internal fabric/forwarding — confirmed working between two other ports (9 and 2) using real external traffic - BASE-T1 link partner — confirmed passing real frames into the switch (port 9 n_rxfrm increments from genuine wire traffic) What hasn't been ruled out / open questions: - Whether 1000 Mbps RGMII with zero internal delay on both MAC and switch sides (rx/tx-internal-delay-ps=0, plain "rgmii" not "rgmii-id") is compatible without delay added by board trace length — have not yet tried forcing the link down to 100 Mbps as a timing-margin test 1. Is rx/tx-internal-delay-ps=0 on both ends at 1000 Mbps RGMII expected to work, or does this combination typically require delay compensation unless the PCB explicitly accounts for it? 2. Am I missing any other configuration? Happy to share full register dumps, if required. Appreciate any pointers before we probe the PE_02-13 bus with a logic analyzer (limited probe access due to board layout, so it is not so convenient currently. Thanks. Re: Custom S32G399A board: No frames cross switch-facing RGMII bus in either direction Hi @Joey_z @db16122 I am attaching the relevant sections of the schematics here. The connection flow is as follows: We use PE_02 to PE_13 on the S32G3 chip shown in s32g3_pfe_mac1_connections.png for the PFE_MAC1. They go to a board to board connector (shown in Board_to_board_connector.png) that routes these signals to  a different board that has the switch. The switch connections are shown in SJA1110_A.png and SJA1110_B.png. So the connection is PE_xx pins -> board connectors -> switch (SJA1110) Please let me know if you have any questions. I have also raised a support ticket ( #00990408) with the same details.  Re: Custom S32G399A board: No frames cross switch-facing RGMII bus in either direction Hi,pcentauri92 Thank you for your reply. Please provide me with the schematic diagrams related to your ETH, particularly the ones for PFE_MCA1 and SJA1110 sections. You can create an internal support system case. In the information description, @Joey, then provide your schematic diagram information. Refer to this website: https://support.nxp.com BR Joey Re: Custom S32G399A board: No frames cross switch-facing RGMII bus in either direction Hi @Joey_z , Thank you for the response. The module in question here is a custom design that uses the S32G399A chip along with the NXP SJA1110A ethernet switch. We based this design on the S32G-VNP-RDB3 development platform but we made quite a few changes from the base design. The PFE_MAC1 using RGMII is one of those changes.  I am also attaching the dts file override where we change the PFE_MAC1 mode and pinmux here. PFE_MAC1 mode configuration: /* pfe_mdio1 is already disabled in the base config in s32gxxxa-rdb.dtsi */ &pfe_mdio1 { /* occupied by GMAC0 */ status = "disabled"; }; /* * pfe_netif1 = PFE_MAC1 — management port to Switch-A port 2. * Overrides the base "sgmii" stub in s32gxxxa-rdb.dtsi. * Plain "rgmii" (no -id/-txid) since both MAC and switch add zero delay. * No phy-handle: the link partner is the SJA1110A switch, described as a * fixed-link on switch port@2. MDIO is not needed for link management here. */ &pfe_netif1 { phy-mode = "rgmii"; status = "okay"; fixed-link { speed = <1000>; full-duplex; }; }; PFE_MAC1 pinmux: /* * PFE_MAC1 RGMII pinmux — management port to Switch-A. * * All RX pad SSS values confirmed from S32G3 IOMUX spreadsheet. * TX path: output pads only, no IMCR needed. * RX path: input pads + IMCR registers to route pads into PFE_MAC1. * * Note: PE_07 (TXD3) uses FUNC3, not FUNC2. Similarly PE_08 (RX_CLK) output uses FUNC3; its IMCR (CR#859) uses FUNC2. */ pfe1rgmii_pins: pfe1rgmii_pins { /* TX outputs: PE_02=TX_CLK, PE_03=TX_EN, PE_04=TXD0, PE_05=TXD1, PE_06=TXD2 PE_07 (TXD3) */ pfe1rgmii_grp0 { pinmux = , /* PE_02: PFE_MAC1_TX_CLK */ , /* PE_03: PFE_MAC1_TX_EN */ , /* PE_04: PFE_MAC1_TXD0 */ , /* PE_05: PFE_MAC1_TXD1 */ , /* PE_06: PFE_MAC1_TXD2 */ ; /* PE_07: PFE_MAC1_TXD3 */ output-enable; slew-rate = ; }; /* RX inputs — pads set to FUNC0 (input mode); routing into PFE_MAC1 is handled by the IMCR entries in pfe1rgmii_grp2 below. NXP input mux pattern: pad=FUNC0 + IMCR=FUNC2 */ pfe1rgmii_grp1 { pinmux = , /* PE_08: input */ , /* PE_09: input */ , /* PE_10: input */ , /* PE_11: input */ , /* PE_12: input */ ; /* PE_13: input */ input-enable; slew-rate = ; }; /* IMCR input mux — selects which pad drives each PFE_MAC1 RX signal. CR#866 routes PE_02 (TX_CLK pad) back into PFE_MAC1_TX_CLK_I; required even for RGMII TX because the MAC samples its own TX_CLK internally. All entries at FUNC2 per S32G3 IOMUX spreadsheet. */ pfe1rgmii_grp2 { pinmux = , /* CR#866: PFE_MAC1_TX_CLK_I ← PE_02 */ , /* CR#859: PFE_MAC1_RX_CLK_I ← PE_08 */ , /* CR#865: PFE_MAC1_RXDV_I ← PE_09 */ , /* CR#861: PFE_MAC1_RXD_I[0] ← PE_10 */ , /* CR#862: PFE_MAC1_RXD_I[1] ← PE_11 */ , /* CR#863: PFE_MAC1_RXD_I[2] ← PE_12 */ ; /* CR#864: PFE_MAC1_RXD_I[3] ← PE_13 */ }; }; Please let me know if you need any other information.    Re: Custom S32G399A board: No frames cross switch-facing RGMII bus in either direction any schematics sharing from hardware side for RGMII bus between PFE_MAC1 and SJA1110 port 2 ? Re: Custom S32G399A board: No frames cross switch-facing RGMII bus in either direction Hi,pcentauri92 Thank you for your detail information According to my understanding, there seems to be a problem with the communication when using PFE_MAC1 RGMAII and Port 2 of SJA1110A on your development board. Is that correct? The default configuration of S32G-VNP-RDB3 is that PFE_MAC0/1 operates in SGMII mode and is connected to SJA1110. On your development board, why did you consider using RGMII mode? It is recommended to modify the corresponding software configuration. BR Joey
View full article
i.MX 95 SPSDK によるセキュアブート (日本語ブログ) はじめに i.MX 95 でのセキュアブートに使用する署名付きのコンテナ・イメージを Secure Provisioning SDK (SPSDK) で作成し、起動する手順です。 i.MX 95 では、セキュアブートのデジタル署名アルゴリズムとして、クラシックなRSA暗号や楕円曲線デジタル署名暗号 (ECDSA)に加えて、耐量子暗号 (PQC)の ML-DSA もサポートされています。 ここでは、ECDSA と PQC ML-DSA 両方の署名認証を行うHybrid boot での実現例を見ていきます。 セキュアブート・プロセス(概念図) 署名付きイメージの作成 SRKH : Super Root Key Hash i.MX 95 AHAB (Advanced High Accuracy Boot) セキュアブート・フロー 本記事は、i.MX 95 向けのLinux BSP を一度ビルド済みの前提で紹介します。 ビルド方法については以下の記事をご参照ください。 ビルドするターゲットを、i.MX 95 のマシン名とする必要がありますが、同様の方法になります。  [入門] Yocto Linux BSPのビルド方法 - i.MX FRDMボード編 (日本語ブログ) [入門] Yocto Linux BSPのビルド方法 - i.MX 8M Plus編 今回動作確認に使用した環境 ハードウェア:開発ボード i.MX 95 19x19 LPDDR5 EVK ソフトウェア:Linux BSP Version L6.18.2-1.0.0 ツール:SPSDK version 3.9.0, Linux 版 eMMC/SDブートであれば、FRDM i.MX 95開発ボード(FRDM-IMX95 / LPDDR4X対応)でも同様の手順で実施することができます。 目次 1. Linux BSP での準備 2. SPSDK のインストール 3. 鍵の作成 4. YAMLファイルの準備 5. ワークスペースの準備 6. 署名付きイメージの作成  7. 署名付きイメージの導入 8. SRKH (Super Root Key Hash) eFuse のプログラム 9. ライフサイクルを OEM Closed に更新 10. ELE イベントの確認 11. ブートローダの直接署名   eMMC/SDブートとFlexSPI NORブートでは、準備手順や実行するコマンドが一部異なります。そのため、確認したいブートデバイスに応じた手順を実施してください。 1. Linux BSP での準備 1.1 ブートローダ FlexSPI NOR ブート BSP デフォルトでのブートローダは、eMMC/SD ブート用となっています。 FlexSPI NOR ブートの場合には、 / /conf/local.conf ファイルに下記を追記しておきます。 UBOOT_CONFIG = "fspi" eMMC / SD / FlexSPI NOR ブート共通 u-boot の  CONFIG_AHAB_BOOT  を有効にしてビルドしたブートローダを使用します。 $ cd $ source setup-environment $ bitbake u-boot-imx -c cleansstate $ bitbake u-boot-imx -c configure $ bitbake u-boot-imx -c devshell 別のシェルが開きますので、u-boot コンフィグレーションを変更します。 # make O=../../build/ / menuconfig O= で指定するビルド・ディレクトリのパスは、実際の環境に合わせます。 ../../build/ /.config で、 CONFIG_AHAB_BOOT=y  となっていることを確認し、元のシェルに戻ります。 # exit 元のシェルで、再ビルドを行います。 $ bitbake u-boot-imx -c compile -f $ bitbake imx-boot 1.2 Linux カーネルとデバイスツリー BSP でビルドされたバイナリをそのまま利用します。 ビルドされたバイナリは、BSP の  /tmp/deploy/images/ / に作成されています。 2. SPSDK のインストール SPSDK Installation Guide に従い、Python 仮想環境 venv を準備してインストールします。 インストール後、バージョン情報やヘルプ表示ができるかを確認します。 (venv) $ spsdk --version (venv) $ spsdk --help PQCプラグインも追加します。 (venv) $ pip install spsdk-pqc 3. 鍵の作成 ECDSA SECP384 の秘密鍵/公開鍵を、4ペア作成します。 (venv) $ mkdir -p keys/secp384r1 (venv) $ nxpcrypto -v key generate -k secp384r1 -o keys/secp384r1/srk0_secp384r1.pem (venv) $ nxpcrypto -v key generate -k secp384r1 -o keys/secp384r1/srk1_secp384r1.pem (venv) $ nxpcrypto -v key generate -k secp384r1 -o keys/secp384r1/srk2_secp384r1.pem (venv) $ nxpcrypto -v key generate -k secp384r1 -o keys/secp384r1/srk3_secp384r1.pem PQC ML-DSA の秘密鍵/公開鍵も、4ペア作成します。 (venv) $ mkdir keys/mldsa65 (venv) $ nxpcrypto -v key generate -k mldsa65 -o keys/mldsa65/srk0_mldsa65.pem (venv) $ nxpcrypto -v key generate -k mldsa65 -o keys/mldsa65/srk1_mldsa65.pem (venv) $ nxpcrypto -v key generate -k mldsa65 -o keys/mldsa65/srk2_mldsa65.pem (venv) $ nxpcrypto -v key generate -k mldsa65 -o keys/mldsa65/srk3_mldsa65.pem i.MX 95 内蔵eFuse に公開鍵のハッシュ Super Root Key Hash (SRKH) を書いたあと、イメージをビルドしなおした時は、その公開鍵とペアとなる秘密鍵で署名する必要があるので、作成したすべての鍵は保存しておきます。 秘密鍵は、第三者に開示しないようにします。 4. YAMLファイルの準備 SPSDK では、YAMLファイルに、コンテナヘッダ設定や、秘密鍵、公開鍵および、署名付きイメージを構成するバイナリファイルのパスを指定します。 あわせて、今回の動作確認で使用したYAMLファイルの例もご参照ください。 YAMLファイルでのコンテナヘッダ設定や、鍵を指定する項目は、次のようになっています。 コンテナヘッダ YAMLキー 内容 srk_set SRK Set used_srk_id SRK Selection srk_revoke_mask SRK Revoke Mask gdet_runtime_behavior GDET enablement check_all_signatures Check all signatures fastboot Fast Boot fuse_version Fuse Version sw_version SW Version コンテナヘッダの各フィールドは、i.MX 95 Reference Manual の、『Container header details』に記載されています。 鍵の指定 YAMLキー 内容 signer クラシック 秘密鍵 signer_#2 PQC 秘密鍵 srk_table クラシック 公開鍵テーブル srk_table_#2 PQC 公開鍵テーブル すべてのYAMLファイルで同じ鍵を指定します。 4.1 ブートローダ用YAML ファイル YAMLファイルのテンプレートを作成し、spl.yaml と uboot.yaml を準備します。 (venv) $ nxpimage ahab get-template -f mimx9596 -o ahab_template.yaml (venv) $ cp ahab_template.yaml spl.yaml (venv) $ cp ahab_template.yaml uboot.yaml spl.yaml i.MX 95 内蔵SRAM にロードされ、DRAM 初期化トレーニングなどを実施する部分までのファイルを指定します。 YAML キー 内容 binary_container ELE ブート・ファームウエア(マスク・レビジョン専用のバイナリ) lpddr_imem LPDDR4X or 5 初期化ファームウエア lpddr_imem_qb LPDDR4X or 5 初期化ファームウエア lpddr_dmem LPDDR4X or 5 初期化データ lpddr_dmem_qb LPDDR4X or 5 初期化データ oei_ddr OEI system_manager System Manager spl U-boot SPL cortex_m7_app (Option) M7 image image_path (Option) FCB copy image uboot.yaml U-boot SPL でDRAMにロードされる部分のファイルを指定します。 YAML キー 内容 atf ARM Trusted Firmware uboot U-boot tee (Option) OP-TEE OS (Option) 4.2 FCB の取り出し - FlexSPI NOR ブートのみ FlexSPI NOR ブート用のYAMLファイルでは、FCB (FlexSPI Configuration Block)も指定します。そのため、FlexSPI NOR ブート向けにビルドした通常の署名なしブートローダ (flash.bin) から、SPSDK コマンドにて、FCB を取り出しておきます。 i.MX 95 内蔵eFuse のFlexSPI_NOR_FCB_Offset (デフォルト 0x400) にFCB が配置されています。そのオフセットから 512 バイト分を取り出し、 fcb.bin を作成します。 (venv) $ nxpimage utils binary-image extract -b flash.bin -a 0x400 -s 0x200 -o fcb.bin 4.3 OSコンテナ用YAML ファイル YAMLファイルのテンプレートから、os_cntr.yaml を準備します。 (venv) $ cp ahab_template.yaml os_cntr.yaml os_cntr.yaml では、キー image_path で、Linux カーネルと使用するデバイスツリーのパスをセットし、その他必要なパラメータも設定します。 4.4 デジタル署名アルゴリズムの選択 i.MX 95 内蔵eFuse やコンテナヘッダのFlags で選択することになります。 eFuse コンテナヘッダの Flags フィールド コンテナヘッダの Flags フィールドにある "Bit 15: Check all signature" = 0x1 とすることで、eFuse のELE_BOOT_CRYPTO 設定によらず、コンテナ内にあるすべての署名を認証します。 コンテナヘッダの Flags フィールドの "Check all signature"は、YAML キー "check_all_signature" で指定します。 5. ワークスペースの準備 SPSDK でワークスペースを作成し、必要な鍵ファイル、YAML ファイル およびバイナリファイルを配置します。 5.1 ワークスペースの作成 (venv) $ nxpimage bootable-image get-templates -f mimx9596 -o workspace 5.2 鍵ファイル 鍵の作成で作ったkeys フォルダごと持ってきます。 5.3 YAML ファイル例 動作確認に使用したYAMLファイルを、imx95-spsdk-yaml-examples.tar.gz に添付しています。 5.4 バイナリファイル Yocto Linux BSP からバイナリファイルを持ってくる場合、 ブートローダを構成するバイナリ $ bitbake -e imx-boot | grep ^S= により表示されるパスの、 iMX95/ にあるバイナリからコピーします。 Linux カーネル / /tmp/deploy/images/ /Image-- - - .bin を コピーします。 デバイスツリー / /tmp/deploy/images/ /にあるdtb で、使用するもの1つコピーします。 YAMLファイルの例 を使用する場合、 ・Linux カーネルは、Image ・デバイスツリーは、imx95.dtb という名前で、それぞれ配置します。 5.5 eMMC / SD ブート 下記のようなファイル構成となります。 YAMLファイルの例を使用する場合、spl.yaml は、DRAMタイプにより、emmc_sd/spl-lpddr4x.yaml または spl-lpddr5.yaml から名前を変更して配置します。 上記では、ELE ブート・ファームウエア は、RevC 品 (B0マスク)用の mx95b0-ahab-container.img となっています。 5.6 FlexSPI NOR ブート 下記のようなファイル構成となります。fcb.binも必要です。 YAMLファイルの例を使用する場合、fspi_nor/から、bootable_image_fspi_nor.yaml をコピーしてきます。 また、spl_fspi_nor-lpddr5.yaml を spl.yaml に名前を変更し配置します。 上記では、ELE ブート・ファームウエア は、RevC 品 (B0マスク)用の mx95b0-ahab-container.img となっています。 6. 署名付きイメージの作成 署名付きブートローダと署名付き OS コンテナのイメージを、 SPSDK で作成します。 ワークスペースの準備 で作成されたディレクトリに移動して作業します。 (venv) $ cd workspace/imx_boot_flash_all/imx95-19x19-lpddr5-evk/ 6.1 署名付きブートローダ 鍵ファイルとバイナリファイルを指定する spl.yaml と uboot.yaml を、bootable_image.yaml から呼び出します。 署名付きブートローダ signed_flash.bin と、SRKH eFuse プログラム用のスクリプト (*.bcf) が作成されます。 eMMC / SD ブート (venv) $ nxpimage -v bootable-image export --config bootable_image.yaml -o output/signed_flash.bin 下記のような情報が、表示されます。 FlexSPI NOR ブート (venv) $ nxpimage -v bootable-image export --config bootable_image_fspi_nor.yaml -o output/signed_flash.bin 下記のような情報が、表示されます。 eMMC/SDとの違いとして、FCB が先頭についているのが分かります。 イメージの検証を行うことができます。 // eMMC / SD ブート (venv) $ nxpimage -v bootable-image verify -f mimx9596 -b output/signed_flash.bin -m serial_downloader // FlexSPI NOR ブート (venv) $ nxpimage -v bootable-image verify -f mimx9596 -b output/signed_flash.bin -m flexspi_nor 6.2 署名付きOSコンテナ os_cntr.yaml の内容で、署名付き OS コンテナのイメージを作成します。 (venv) $ nxpimage -v ahab export -c os_cntr.yaml 下記のような情報が、表示されます。 イメージの検証を行うことができます。 (venv) $ nxpimage -v bootable-image verify -f mimx9596 -b output/os_cntr_signed.bin -m serial_downloader 7. 署名付きイメージの導入 作成した署名付きブートローダおよび署名付きOSコンテナを導入する方法です。 7.1 署名付きブートローダ i.MX95 ボードのブートデバイスに、signed_flash.bin を書き込みます。 ボードのデバッグ・ポートとシリアル・ダウンロード・ポートを、PC に接続します。 u-boot が起動する場合には fastboot モードにします。 u-boot=> fastboot 0 もしくは、BOOT_MODE を シリアル・ダウンロード・モード として起動しておきます。 SPSDKで書き込みます。 // eMMC (venv) $ nxpuuu write -b emmc -f mimx9596 output/signed_flash.bin // SD (venv) $ nxpuuu write -b sd -f mimx9596 output/signed_flash.bin // FlexSPI NOR (venv) $ nxpuuu write -b qspi -f mimx9596 output/signed_flash.bin SPSDK の nxpuuu コマンドではなく、通常の uuu または u-boot コマンドを使用して書き込むことも可能です。 7.2 署名付きOSコンテナ あらかじめBSP イメージが書き込んであるeMMC もしくはSDカード の boot パーティションに、os_cntr_signed.bin を入れます。 u-boot コマンドで、i.MX95 の接続されたeMMC または SDカードを、USBストレージとしてみせることで、PCにマウントさせます。 シリアル・ダウンロード・ポートをPC に接続しておく必要があります。 // eMMC u-boot=> ums mmc 0 // SDカード u-boot=> ums mmc 1 PC にマウントされた boot パーティションに 、os_cntr_signed.bin をコピーしたあと、u-boot で Ctrl-C を押します。 もしくは、別の手段で os_cntr_signed.bin を、boot パーティションに入れておきます。 署名付きOSコンテナの起動時、下記のような表示が出ます。 CONFIG_AHAB_BOOT  を有効にした u-boot では、通常のLinux Image (署名なし)ではなく、 os_cntr_signed.bin (署名付き)が使用されます。 7.3 動作確認 この段階では、i.MX95 のライフサイクルの状態は、OEM Open のため、u-boot や Linux が起動しますが、KEY HASH の検証失敗が、ELE イベントで検出されます。 8. SRKH (Super Root Key Hash) eFuse のプログラム 8.1 eFuse 書き込み i.MX 95 SRKH eFuse に、公開鍵のハッシュ値を書き込みます。 一度書き込むと元に戻せません。 書き込んだデバイスで、署名付きブートローダや署名付きOS コンテナを更新するときは、書き込んだ SRKH のもととなる公開鍵のペアである秘密鍵を使い署名します。 別の鍵ペアを使う場合には、現在のSRKH をRevoke し、4組作成しておいた鍵ペアで未使用のものを使用します。 i.MX 95 ボードのシリアル・ダウンロード・ポートをPCに接続し、 u-boot はあらかじめ fastboot モードにしておきます。 u-boot=> fastboot 0 署名付きイメージの作成で作られたSRKH eFuse のプログラミング用スクリプト(*.bcf) を使い、 SPSDK で書き込みます。 SRKH eFuse のプログラミング用スクリプトには、 i.MX 95 eFuse の word index が記載されています。 // OEM_SRKH (venv) $ nxpele -f mimx9596 batch output/ahab_oem0_srk0_hash_nxpele.bcf // OEM_PQC_SRKH (venv) $ nxpele -f mimx9596 batch output/ahab_oem0_srk1_hash_nxpele.bcf 8.2 eFuse 値の確認 SPSDK の nxpele コマンドで、 eFuse のword index を指定しリードして、値を確認することができます。 // OEM_SRKH[31:0] word index = 128 (venv) $ nxpele -f mimx9596 read-common-fuse -i 128 // OEM_PQC_SRKH[511:480] word index = 463 (venv) nxpele -f mimx9596 read-common-fuse -i 463 など SPSDK の代わりに、U-boot コマンド もしくは System Manager モニタのコマンドで、eFuse にリード・ライトアクセスすることもできます。 U-boot u-boot=> fuse read u-boot=> fuse prog System-Manager >$ fuse.r >$ fuse.w 8.3 動作確認 この段階では、i.MX 95 のライフサイクルの状態は、OEM Openですが、SRKH プログラム済みのため、改ざんがなければ、ELEイベントは検出されません。 改ざんがあっても、その部分が動作に影響しなければ、OEM Openのため起動しますが、認証の失敗が ELE イベントで検出されます。 9. ライフサイクルを OEM Closed に更新 i.MX 95 出荷直後のライフサイクルは、OEM Open です。 デバッグ終了後に、i.MX 95 のライフサイクルを OEM Closed に変更します。 OEM Closed にしたあとの留意点 OEM Openには戻せません。 CONFIG_AHAB_BOOT=y とした u-boot を含んだブートローダで起動すると、署名の無いイメージや、不正な署名付きイメージは起動できなくなります。 CONFIG_AHAB_BOOT=y としていない u-boot を含んだブートローダでは、署名なし Linux Image で起動できてしまいますので、必ず署名付きOS コンテナ os_cntr_signed.bin で起動させるため、 CONFIG_AHAB_BOOT=y とした u-boot を含んだブートローダを使用します。 動作確認後、署名なしのLinux Image やデバイスツリーは、boot パーティションから削除します。 9.1 SPSDK i.MX 95 ボードのシリアル・ダウンロード・ポートはPCと接続し、u-boot は、あらかじめfastboot モードにしておきます。 u-boot=> fastboot 0 SPSDK でライフサイクルを更新します。 (venv) $ nxpele -f mimx9596 forward-lifecycle-update -l OEM_CLOSED Forward Lifecycle update ends successfully. (venv) $ 9.2 U-boot u-boot=> ahab_close OEM Closed とした後、 uuu で BSP イメージ (wic ファイル) を書き込む場合にも、署名付きブートローダを使用する必要があります。 10. ELE イベントの確認 ELE (Edgelock Secure Enclave) は、i.MX 95 の内蔵ブロックで、セキュアブート時のコンテナ・イメージの認証を行います。 SPSDK および U-boot、System Manager コマンドで、ELE の状態を確認することができます。 10.1 SPSDK シリアル・ダウンロード・ポートとPCを接続し、U-boot でfastboot モードにしてから行います。 u-boot=> fastboot 0 SPSDK でELE イベントを取得します。 (venv) $ nxpele -f mimx9596 get-events 10.2 U-boot CONFIG_AHAB_BOOT=y  としたU-boot で使用できるコマンドです。 デバイスのライフサイクルにより、OEM Open または OEM closed も表示されます。 u-boot=> ahab_status 10.3 System Manager >$ ele events 10.4 表示例 ELE イベント(SRKH 値の不一致)が検出されたとき SPSDK U-boot (OEM open時) System Manager ELE イベント検出がないとき SPSDK U-boot (OEM close後) System Manager   11. ブートローダの直接署名 既存の署名なしブートローダのバイナリに、 SPSDK で直接署名を追加することも可能です。 この場合、SPSDK がブートローダ・バイナリのコンテナから構成を解釈します。 YAML ファイルで、各イメージごとの細かい設定は指定できませんが、コンテナヘッダの設定と秘密鍵および公開鍵のパスを指定するのみで、署名付きブートローダを作成することができます。 11.1 テンプレートの作成 (venv) $ nxpimage ahab get-template -f mimx9596 -o ahab_sign.yaml --sign (venv) $ cp ahab_sign.yaml sign.yaml 11.2 YAML ファイル sign.yaml に、コンテナヘッダの設定と秘密鍵および公開鍵のパスを指定します。 YAMLファイルの例 を使用する場合、 direct_signing/sign.yaml をコピーしておきます。 11.3 署名の追加 既存のブートローダのバイナリ flash.bin に署名処理を行います。 // eMMC / SD (venv) $ nxpimage ahab sign -c sign.yaml -b flash.bin -o output/flash_directsign.bin -fs output // FlexSPI NOR (venv) $ nxpimage ahab sign -c sign.yaml -b flash.bin -o output/flash_directsign.bin -fs output -m flexspi_nor output/flash_directsign.bin と、SRKH eFuse のプログラミング用スクリプト output/*.bcf が作成されます。 おわりに SoC 起動イメージの保護を実現するため、i.MX 95 セキュアブートに使用する署名付きイメージを、SPSDK を使って作成し、起動するまでの流れを紹介しました。今回はi.MX 95 AHAB で新たに追加されたPQCを利用する手順例で示しました。 ========================= 本投稿の「Comment」欄にコメントをいただいても、現在返信に対応しておりません。 お手数をおかけしますが、お問い合わせの際には「NXPへの技術質問 - 問い合わせ方法 (日本語ブログ)」をご参照ください。 (既に弊社NXP代理店、もしくはNXPとお付き合いのある方は、直接担当者へご質問いただいてもかまいません。) i.MX95 でのセキュアブートに使用する署名付きのコンテナ・イメージを Secure Provisioning SDK (SPSDK) で作成し、起動する手順をハンズオン形式で学べる内容となっています。 楕円曲線デジタル署名暗号 (ECDSA)と、耐量子暗号 (PQC) ML-DSA 両方の署名認証を行うHybrid boot での実現例を紹介します。 (作業時間:半日 *一度i.MX 95向けの Linux BSP のビルドが完了している前提) i.MX Processors Security 日本語ブログ
View full article