Multi Source Translation Content

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

Multi Source Translation Content

讨论

排序依据:
在不烧断熔丝的情况下测试 IMXRT1024 上的 HAB 功能 我使用了未签名的 LED 闪烁代码,并实现了 HAB 审计 API(报告状态和报告事件)。EVK板开路,熔丝未烧断。 无符号镜像(CSF=0)- HAB 失败,共发生 4 个事件 签名图像 - HAB 通过 0 事件 所以我假设即使板处于打开状态,HAB 认证也会运行,因此我可以看到事件。 但是现在我使用了相同的 IVT (CSF=0) 项目固件,并实施了相同的 HAB 审计,但这次是 未签名图像 - HAB 通过,事件数为 0 LED闪烁日志(未签名) : RVT 标头位于 0x2002c0:标签=0xdd 长度=0x038 参数=0x43 HAB:RVT 版本 = 0x 40305 HAB:report_status() = 0x33(HAB_FAILURE) HAB:配置 = 0xf0(HAB_CFG_OPEN) HAB:状态 = 0x66(HAB_STATE_NONSECURE) HAB:事件[0],8 字节 HAB:hdr:标签=0xdb 长度=0x08 参数=0x43 HAB:状态=0x33(HAB_FAILURE) 原因=0x22(HAB_INV_ADDRESS) 上下文=0xa(HAB_CTX_AUTHENTICATE) 引擎=0x0(HAB_ENG_ANY) HAB:原始数据:db 0 8 43 33 22 a 0 HAB:事件[1],20 字节 HAB:hdr:标签=0xdb 长度=0x014 参数=0x43 HAB:状态=0x33(HAB_FAILURE) 原因=0xc(HAB_INV_ASSERTION) 上下文=0xa0(HAB_CTX_ASSERT) 引擎=0x0(HAB_ENG_ANY) HAB:原始数据:db 0 14 43 33 c a0 0 0 0 0 0 60 0 10 0 0 0 0 20 HAB:事件[2],20 字节 HAB:hdr:标签=0xdb 长度=0x014 参数=0x43 HAB:状态=0x33(HAB_FAILURE) 原因=0xc(HAB_INV_ASSERTION) 上下文=0xa0(HAB_CTX_ASSERT) 引擎=0x0(HAB_ENG_ANY) HAB:原始数据:db 0 14 43 33 c a0 0 0 0 0 0 60 0 10 20 0 0 0 1 HAB:事件[3],20 字节 HAB:hdr:标签=0xdb 长度=0x014 参数=0x43 HAB:状态=0x33(HAB_FAILURE) 原因=0xc(HAB_INV_ASSERTION) 上下文=0xa0(HAB_CTX_ASSERT) 引擎=0x0(HAB_ENG_ANY) HAB:原始数据:db 0 14 43 33 c a0 0 0 0 0 0 60 0 20 0 0 0 0 4 HAB:结果 = 4 个事件已记录 -- 请参阅上面的解码字段,但 我的项目固件(未签名) HAB:RVT 标头位于 0x002002c0 HAB:标签=0xdd 长度=0x0038 参数=0x43 HAB:RVT已找到且有效 HAB:RVT 版本 = 0x00040305 HAB:report_status() = 0xf0 HAB:配置 = 0xf0 HAB:状态 = 0x66 HAB:正在查询审计事件... HAB:report_event(idx=0) 返回 0x33(无事件或查询) HAB:结果 = 通过(未记录任何审计事件) 为什么会有差异 Re: Test HAB on IMXRT1024 without burning fuses 你好@Abhay2080 , 感谢您的联系!请问能否提供包含LED 闪烁代码的 SDK 版本以及用于构建镜像的 SPT 版本? 感谢您的耐心等待! 祝你有美好的一天, 坎 ------------------------------------------------------------------------------- 笔记: - 如果此回复解答了您的问题,请点击“标记为正确答案”按钮。谢谢你! - 我们会持续关注帖子,从最后一条回复发出后持续7周,之后的回复将被忽略。 如果您之后有相关问题,请另开新帖并引用已关闭的帖子。 ------------------------------------------------------------------------------- Re: Test HAB on IMXRT1024 without burning fuses 这是 SDK 版本 - SDK_25_06_00_MIMXRT1024xxxxx SPT 版本 - 26.06 MCU xpresso - v25.6.136 如果使用 MCU Xpresso 编译,则 LED 闪烁灯的未签名镜像;如果使用 SPT 和 CST 4.0 编译,则生成的是已签名镜像。 Re: Test HAB on IMXRT1024 without burning fuses 你好@Abhay2080 , 感谢您提供的信息和详细日志——这是一个很棒的观察,区别归根结底在于一件事: IVT 中的 CSF 指针是零还是非零。 HABv4 如何决定进行身份验证 在 i.MX RT10xx 上,启动 ROM 会检查 IVT 的 CSF 字段,然后再决定是否尝试进行身份验证: 如果 CSF = 0x00000000 (null):HAB完全跳过身份验证——不记录任何事件,并且 report_status() 返回 0xf0 (HAB_SUCCESS)。从网络安全意义上讲,这并非“通行证”;从未尝试进行身份验证。 如果 CSF = non-zero (指向 CSF 区域):HAB尝试进行身份验证——如果签名缺失或无效,则会记录失败事件,并且 report_status() 返回 0x33 (HAB_FAILURE)。在开放式电路板上,这不会阻止启动。 为什么您的 LED 指示灯(未签名)显示 4 个故障事件 您的 LED 闪烁二进制文件由 MCUXpresso IDE 构建,然后通过 SPT(安全配置工具)处理以创建可启动映像。即使对于“无符号”版本类型,SPT 的可引导映像管道也会将非零 CSF 指针写入IVT,并在映像中保留一个 CSF 区域。启动 ROM 检测到非零指针,尝试进行身份验证,但未找到有效的签名数据,并记录了以下 4 个事件: 事件 0 ( HAB_INV_ADDRESS / HAB_CTX_AUTHENTICATE 😞 HAB 尝试查找用于身份验证的图像,但遇到了无效地址——这与空/短截线 CSF 区域一致。 事件 1–3 ( HAB_INV_ASSERTION / HAB_CTX_ASSERT 😞 由于没有真正的脑脊液数据,HAB 对图像区域的内部断言检查失败了。 为什么您的项目固件(未签名)显示 0 个事件 您的项目固件直接通过 MCUXpresso IDE 编译,而没有经过 SPT 的可启动映像生成步骤。生成的二进制文件中,IVT 的CSF 指针确实为空。启动 ROM 检测到 CSF = 0 ,完全跳过身份验证,HAB 报告干净。日志中 report_event(idx=0) 返回的 0x33 表示“此索引处没有事件”(即,查询本身返回 HAB_FAILURE,因为没有存储任何内容),而不是 HAB 检测到了故障。 快速验证方法 检查两个二进制文件在字节偏移量 +0x18 处的 IVT(CSF 字段): SPT内置LED闪烁:非零值(例如, 0x60006xxx 或类似的闪存地址) 您的项目固件: 0x00000000 要使用您的项目固件正确测试 HAB 审计 您需要通过 SPT(或 elftosb/nxpimage)构建可引导映像,以便将 CSF 区域嵌入映像中——即使对于未签名的构建也是如此。这样可以确保启动 ROM 尝试进行身份验证并生成 HAB 事件。只有这样,您的 HAB 审计代码才能捕获用于测试目的的有意义的数据。 总而言之,你最初的假设是正确的,即 HAB 认证是在开放的板上运行的——但仅当 IVT 中存在非零的 CSF 指针时才如此。您观察到的项目固件的行为是预期的,也是正确的。 希望这能有所帮助!如果您还有其他问题,请与我们联系。   祝你有美好的一天, 坎 ------------------------------------------------------------------------------- 笔记: - 如果此回复解答了您的问题,请点击“标记为正确答案”按钮。谢谢你! - 我们会持续关注帖子,从最后一条回复发出后持续7周,之后的回复将被忽略。 如果您之后有相关问题,请另开新帖并引用已关闭的帖子。 ------------------------------------------------------------------------------- Re: Test HAB on IMXRT1024 without burning fuses 是的,Kan_Li,你提到的解释是正确的,但正确的场景是—— LED 闪烁(无符号)-> 此二进制文件仅通过 MCU xpresso IDE 生成(未通过 SPT 处理)。大小 - 30KB 即使我比较了 LED 闪烁(无符号)和我的项目(无符号)的 IVT,它们的 IVT 也完全相同(CSF=0)。大小 64KB 参见十六进制比较 左侧是 LED 闪烁灯,右侧是我的项目固件。 另外,请问在不烧断熔丝的情况下测试HAB的正确方法是什么? Abhay2080_0-1788931301704.pngAbhay2080_0-1788931301704.pngAbhay2080_0-1788931301704.png Re: Test HAB on IMXRT1024 without burning fuses 你好@Abhay2080 , 感谢您提供的十六进制对比图——这让情况变得清晰多了。你说得对,这两个二进制文件都具有相同的 IVT,CSF=0。真正的根本原因在于启动数据 size 字段,而不是 CSF 指针。 十六进制转储显示的内容 查看文件偏移量 0x1020 处的启动数据结构(在 IVT 中由 boot_data 指向): 字段 LED闪烁灯 项目固件 start (0x1020) 0x60000000 0x60000000 size (0x1024) 0x00004000 = 16 KB 0x00000400 = 1 KB plugin (0x1028) 0x00000000 0x00000000 IVT 中的两个 CSF 场均为 0x00000000 — 已确认相同。 为什么有害藻华的行为会有所不同 HAB 库的 authenticate_image() 使用启动数据区域( start 到 start + size )来确定映像范围,然后再尝试进行身份验证。关键在于, IVT 本身位于闪存偏移量 0x1000 (= 从基址算起 4096 字节) 。HAB 检查 IVT 是否位于已声明的启动数据区域内: LED 闪烁— 启动数据声明 16 KB ( 0x4000 )。偏移量 0x1000 (4096) 处的 IVT 位于 [0x60000000, 0x60004000) 内。HAB 找到 IVT,尝试 authenticate_image() ,遇到 CSF=0 → 记录 HAB_INV_ADDRESS + 3 个断言失败 → report_status() = HAB_FAILURE 。 项目固件— 启动数据仅声明 1 KB ( 0x400 )。偏移量 0x1000 (4096) 处的 IVT 位于 [0x60000000, 0x60000400) 之外。HAB 无法在声明的区域内找到有效的 IVT →完全跳过身份验证 → report_status() = HAB_SUCCESS ,0 个事件。 总结一下:你的项目固件中的 1 KB 启动数据大小太小了——IVT 超出了该边界,因此 HAB 永远不会触及它。 请注意,启动数据的大小与实际二进制文件的大小(分别为 30 KB 和 64 KB)不符。这两个镜像的启动数据都是由 IDE 直接生成的,而不是通过正规的启动镜像生成器生成的。尺寸误差的程度决定了有害藻华是否会发生。 根本原因 如果直接从 MCUXpresso IDE 编译而不经过 SPT 或 elftosb,则生成的二进制文件没有用于 HAB 评估的正确格式的启动数据结构。 size 字段最终被设置为一个可能包含也可能不包含 IVT 的值,从而导致 HAB 审核结果不可预测。 不烧断熔丝测试HAB的正确方法 在开放板中,可靠的方法是: 通过 SPT 或 elftosb 构建——这将正确填充启动数据( start 、 size ,涵盖从基础到 CSF/代码末尾的整个映像)、FCB、IVT,以及可选的 CSF 块。切勿使用原始的 IDE 编译的 .bin 测试 HAB – 启动数据将不可靠。 使用未签名映像进行测试(CSF=0,正确的启动数据) — HAB 将尝试进行身份验证,找不到 CSF,并记录 HAB_INV_ADDRESS + 断言失败。 report_status() = HAB_FAILURE 。这证实了 HAB 运行正常,并且您的审计代码有效。这与你的 LED 闪烁 + SPT 测试结果完全一致。 使用签名镜像进行测试(CSF 有效,正确的启动数据) — 构建一个正确签名的镜像通过 SPT 或 CST 4.0 使用您的密钥。在 Open 板上,HAB 使用嵌入式 SRK/CSF 对映像进行认证。如果签名有效 → report_status() = HAB_SUCCESS ,0 个事件。如果签名错误或缺失 → 发生故障事件。在两种情况下,Open 板上的启动过程都会继续进行。 在烧毁熔丝之前进行置信度检查——只有在 Open 板上看到带有签名映像的 HAB_SUCCESS 后,才能继续烧毁 SRK 哈希熔丝。这样可以安全地验证整个身份验证链。 推荐测试顺序(全部在 Open 板上进行): Step 1: SPT -> Build unsigned image -> Flash -> Run HAB audit Expected: HAB_FAILURE, 4 events (HAB is running, audit code is correct) Step 2: SPT/CST -> Build signed image -> Flash -> Run HAB audit Expected: HAB_SUCCESS, 0 events (signing + authentication working end-to-end) Step 3: Corrupt the signed image or swap keys -> Flash -> Run HAB audit Expected: HAB_FAILURE, events logged (confirms rejection logic) Step 4: Burn fuses (SRK hash) -> confirm Step 2 still passes on Closed board 希望这能彻底解释清楚二者的区别。关键在于,在测试 HAB 时,始终使用 SPT/elftosb 构建可启动映像,而绝不能使用原始 IDE 二进制文件。 祝你有美好的一天, 坎 ------------------------------------------------------------------------------- 笔记: - 如果此回复解答了您的问题,请点击“标记为正确答案”按钮。谢谢你! - 我们会持续关注帖子,从最后一条回复发出后持续7周,之后的回复将被忽略。 如果您之后有相关问题,请另开新帖并引用已关闭的帖子。 -------------------------------------------------------------------------------
查看全文
i.MX RT1064 - PEmicro Connection Assistant エラーおよび起動設定の予期しない変更 こんにちは、 i.MX RT1064コントローラーを使い、MCUXpresso IDEのPEmicro Multilinkインターフェースを通じてデバッグやフラッシュを行っています。 ターゲットへの接続を試みる際に、添付の「PEmicro Connection Assistant」エラーが発生することがあります。この問題はランダムに発生するようです。特定のソフトウェア活動、コード変更、ハードウェアイベント情報で継続的にトリガーされるものは特定していません。 私が観察したのは、このエラーが起こると、コントローラーの 起動設定が予期せず変更されているように見えることです。この状態では、デバイスのフラッシュやデバッグを行うことができません。唯一回復できた方法は、起動設定を元の設定(内部フラッシュモード)に戻すことで、その後はフラッシュやデバッグが正常に動作します。 追加情報: MCU:i.MX RT1064 デバッグプローブ: PEmicro Multilink Universal Rev E IDE:MCUXpresso IDE 同様の問題に遭遇した方はいらっしゃいますか? 以下の点についてご助言いただければ幸いです。 なぜ起動設定が予期せず変わるのでしょうか。 デバッガやアプリケーションコードがブート設定に影響を与える既知のシナリオがあるかどうか。 これを防ぐための推奨方法。 CAN 手動変更なしでソフトウェアで起動設定を変更することはできますか 参考までに、エラーメッセージのスクリーンショットを添付しました。 よろしくお願いします。 i.MXRT 106x Re: i.MX RT1064 - PEmicro Connection Assistant Error and Boot Configuration Changing Unexpectedly こんにちは、 以下の質問に答えてもらえますか? カスタムボードを使用していますか、それともEVKを使用していますか? SDKとIDEのバージョンは何を使っていますか? ヒューズを焼いてしまったことはありますか? 起動設定を内部フラッシュモードに復元する必要があるとおっしゃっていましたが、現在どのブート設定を使っていますか? よろしくお願いします、 パブロ Re: i.MX RT1064 - PEmicro Connection Assistant Error and Boot Configuration Changing Unexpectedly 私はカスタムボードを使用していますが、この問題はEVKでも確認されています。 SDK バージョン : 26.03.00 IDEバージョン:25.6.136 ヒューズは一つも切っていない。 通常は内部ブートモードでコードをフラッシュし、通常の動作をしますが、予期せぬ問題がランダムに起こるため、シリアルダウンロードモードに変え、フラッシュを消去してから再び内部ブートモードに戻してから再度コードをフラッシュします。 ブート設定情報については、添付画像をご覧ください。 Re: i.MX RT1064 - PEmicro Connection Assistant Error and Boot Configuration Changing Unexpectedly こんにちは、 @Subhasri_S さん。 BOOT_MODEレジスタは、POR_Bの立ち上がりエッジでBOOT_MODE0とBOOT_MODE1の入力をサンプリングすることによって初期化されます。これらの入力がサンプリングされた後、その後の状態は内部のBOOT_MODEレジスタの内容に影響を与えません。 BT_FUSE_SEL = 0の場合、特定のブート設定パラメータはeFuseの代わりにGPIOピンで設定できます。 問題が起きたときにリセット時にBOOT_MODEとBT_CFGピンの測定を手伝ってもらえますか? この問題に関する別の可能性のある結論については、以下のナレッジベース記事に記載されています。 ナレッジベース:デバッガー接続の問題に対するRTボードの復旧 「フラッシュに異常なアプリ(アクセスメモリが存在しない、メモリが破損している、クロックの誤設定など)が含まれていると、ボードが未知の状態に陥り、デバッガがコアを制御できなくなります。しかし、コアをシリアルダウンローダーモードにすると、コアは既知の状態になり、デバッガーがコアを制御できるようになります。 SO、RTボードでデバッガの問題が発生した場合は、シリアルダウンロードモードで外部フラッシュを一括消去してみてください。そうすればボードデバッガは通常の状態に復元されます。」 よろしくお願いします、 パブロ Re: i.MX RT1064 - PEmicro Connection Assistant Error and Boot Configuration Changing Unexpectedly こんにちは。問題が発生した際に記録されたBOOT_MODEとBOOT_CFGのピン値を確認してください。
查看全文
CodeWarrior 5.1 デバッガー。「ステップ実行時にマスク可能なISRを無効にする」Iビットが9S12XEQ512で永続的に設定されます。 環境: IDE: CodeWarrior 5.1(HC(S)12Xコンパイラ) ターゲット: MC9S12XEQ512 バスクロック: 49.777 MHz BDMインターフェース:USB Multilink Universalで再現可能;Cyclone Proでは確認されていません ホストOS: Windows 10とWindows 11の両方で確認されました メモリモデル:大規模モデルでは再現可能;バンクモデルでは再現性が低いか、それ以下です 使用した設定: 「HC12MultilinkCyclonePro」→「セットアップ...」→「デバッグオプション」→「ステップ実行時にマスク可能なISRを無効にする」— 有効。 説明: デバッガで一定回数のステップ操作(シングルステップまたはステップオーバー)を実行すると、マスク可能な割り込み(CCRのIビット)が永久的に無効になります。割り込みは、実行を継続した後(実行/ゴー)でも再開されず、CCRレジスタビューでIビットを手動でクリアするまでマスクされたままになります。この挙動は、USB Multilink Universal BDMインターフェースを用いたLargeメモリモデルでも、Windows 10およびWindows 11のホスト上で一貫して再現可能です。同じプロジェクト設定のCyclone Proインターフェースでも、バンクメモリモデルでも同様の問題は見られていません 現在使用されている回避策: CCRレジスタビューでIビットがスタックした場合、手動でIビットをクリアします。 リクエスト: これは、S12Xコア上のCode Warrior 5.1のステップエミュレーションと組み合わせたUSB Multilink Universalのファームウェア/ドライバの既知の問題でしょうか?固定されたマルチリンクユニバーサルのファームウェアバージョンや、このデバイス/インターフェースの組み合わせで割り込み駆動の大規模モデルプロジェクトをデバッグするための推奨代替ワークフローはありますか? よろしくお願い申し上げます。
查看全文
FRDM-RW612 (Zephyr) — CTIMER0 MAT0/GPIO0 PWM 不切换,MAT1/MAT2 工作正常 开发板/SDK: FRDM-RW612,NXP-Zephyr v4.3.0 将板载 RGB LED(GPIO0=蓝色,GPIO1=红色,GPIO12=绿色)配置为 CTIMER0 上的 pwm-leds,通道分别为 0/1/2,使用共享 pinctrl-0 组中的 IO_MUX_CT0_MAT0_OUT_IO0、IO_MUX_CT0_MAT1_OUT_IO1、IO_MUX_CT0_MAT2_OUT_IO12。运行测试应用程序,对所有三个通道进行占空比循环测试。 红色和绿色 LED 的 PWM 工作正常(已使用 Saleae 逻辑分析仪确认——GPIO1 和 GPIO12 上的波形干净)。蓝色 LED (GPIO0/MAT0) 完全熄灭——逻辑分析仪显示一条直线,在任何占空比 (0–100%) 下都不会切换。数字GPIO(非PWM)切换GPIO0工作正常, 只有 CTIMER0 MAT0 通道无法输出 PWM;同一定时器实例上的 MAT1/MAT2 可以正常工作。 我们需要: 确认在 Zephyr 下,FRDM-RW612 上的 GPIO0/CT0_MAT0 是否为已知可用的 PWM 组合。 关于 RW612 上 CTIMER0 通道 0 的任何勘误/限制的指导。 任何可用的 .overlay例如,通过 CTIMER 对 GPIO0 进行 PWM 控制,以便我们进行比较。 frdm_rw612.overlay ``` #include / { pwm_outputs { 兼容 = "pwm-leds"; pwm_gpio0:pwm_gpio0 { pwms = <&ctimer0_pwm 0 PWM_KHZ(1) PWM_POLARITY_NORMAL>; }; pwm_gpio1:pwm_gpio1 { pwms = <&ctimer0_pwm 1 PWM_KHZ(1) PWM_POLARITY_NORMAL>; }; pwm_gpio12:pwm_gpio12 { pwms = <&ctimer0_pwm 2 PWM_KHZ(1) PWM_POLARITY_NORMAL>; }; }; 别名 { pwm-gpio0 = &pwm_gpio0; pwm-gpio1 = &pwm_gpio1; pwm-gpio12 = &pwm_gpio12; }; }; ctimer0_pwm: &ctimer0 { 兼容 = "nxp,ctimer-pwm"; 状态 = "好的" clk-source = <5>; clocks = <&clkctl1 MCUX_CTIMER0_CLK>; #pwm-cells = <3>; 模式 = <0>; 预缩放 = <0>; pinctrl-0 = <&pinmux_ctimer0_pwm>; pinctrl-names = "default"; }; &pinctrl { pinmux_ctimer0_pwm:pinmux_ctimer0_pwm { group0 { pinmux = < IO_MUX_CT0_MAT0_OUT_IO0 IO_MUX_CT0_MAT1_OUT_IO1 IO_MUX_CT0_MAT2_OUT_IO12 >; 转换速率 = "正常"; }; }; }; ``` 评估板
查看全文
FRDM-RW612 (Zephyr) — CTIMER0 MAT0/GPIO0 PWM not toggling, MAT1/MAT2 work fine Board/SDK: FRDM-RW612, NXP-Zephyr v4.3.0 Configured on-board RGB LED (GPIO0=Blue, GPIO1=Red, GPIO12=Green) as pwm-leds on CTIMER0, channels 0/1/2 respectively, using IO_MUX_CT0_MAT0_OUT_IO0, IO_MUX_CT0_MAT1_OUT_IO1, IO_MUX_CT0_MAT2_OUT_IO12 in a shared pinctrl-0 group. Ran a test app cycling duty cycle on all three channels. Red and Green LEDs PWM correctly (confirmed with Saleae logic analyzer — clean waveforms on GPIO1 and GPIO12). Blue LED (GPIO0/MAT0) stays completely off — logic analyzer shows a flat line, no toggling at any duty cycle (0–100%). Digital GPIO (non-PWM) toggle on GPIO0 works fine, Only CTIMER0 MAT0 channel fails to output PWM; MAT1/MAT2 on the same timer instance work. What we need: Confirmation whether GPIO0/CT0_MAT0 is a known-working PWM combination on FRDM-RW612 under Zephyr. Guidance on any erratum/limitation for CTIMER0 channel 0 on RW612. Any working .overlay example that PWMs GPIO0 via CTIMER, for us to diff against. frdm_rw612.overlay ``` #include / { pwm_outputs { compatible = "pwm-leds"; pwm_gpio0: pwm_gpio0 { pwms = <&ctimer0_pwm 0 PWM_KHZ(1) PWM_POLARITY_NORMAL>; }; pwm_gpio1: pwm_gpio1 { pwms = <&ctimer0_pwm 1 PWM_KHZ(1) PWM_POLARITY_NORMAL>; }; pwm_gpio12: pwm_gpio12 { pwms = <&ctimer0_pwm 2 PWM_KHZ(1) PWM_POLARITY_NORMAL>; }; }; aliases { pwm-gpio0 = &pwm_gpio0; pwm-gpio1 = &pwm_gpio1; pwm-gpio12 = &pwm_gpio12; }; }; ctimer0_pwm: &ctimer0 { compatible = "nxp,ctimer-pwm"; status = "okay"; clk-source = <5>; clocks = <&clkctl1 MCUX_CTIMER0_CLK>; #pwm-cells = <3>; mode = <0>; prescale = <0>; pinctrl-0 = <&pinmux_ctimer0_pwm>; pinctrl-names = "default"; }; &pinctrl { pinmux_ctimer0_pwm: pinmux_ctimer0_pwm { group0 { pinmux = < IO_MUX_CT0_MAT0_OUT_IO0 IO_MUX_CT0_MAT1_OUT_IO1 IO_MUX_CT0_MAT2_OUT_IO12 >; slew-rate = "normal"; }; }; }; ``` Evaluation Board
查看全文
CodeWarrior 5.1 debugger. "Disable maskable ISR's when stepping" I-bit permanently set on 9S12XEQ512 Environment: IDE: CodeWarrior 5.1 (HC(S)12X compiler) Target: MC9S12XEQ512 Bus clock: 49.777 MHz BDM interface: reproducible with USB Multilink Universal; not observed with Cyclone Pro Host OS: observed on both Windows 10 and Windows 11 Memory model: reproducible in Large model; not (or much less) reproducible in Banked model Setting used: "HC12MultilinkCyclonePro" → "Setup..." → "Debug otions " → "Disable maskable ISR's when stepping" — enabled. Description: After a number of step operations (single step or step over) in the debugger, the maskable interrupts (I bit in CCR) become permanently disabled. Interrupts do not resume even after continuing execution (Run/Go) — they remain masked until the I bit is manually cleared in the CCR register view. This behavior is consistently reproducible in the Large memory model using the USB Multilink Universal BDM interface, on both Windows 10 and Windows 11 hosts. The issue has not been observed with the Cyclone Pro interface under otherwise identical project settings, nor (or much less) in the Banked memory model Workaround currently in use: Manually clearing the I bit in the CCR register view after it becomes stuck. Request: Is this a known issue with the USB Multilink Universal firmware/driver in combination with CodeWarrior 5.1's stepping emulation on the S12X core? Is there a fixed Multilink Universal firmware version, or a recommended alternative workflow for debugging interrupt-driven Large-model projects on this device/interface combination? Thank you
查看全文
FRDM-RW612(Zephyr) — CTIMER0 MAT0/GPIO0 PWMが切り替えられず、MAT1/MAT2は問題なく動作します ボード/SDK: FRDM-RW612、NXP-Zephyr v4.3.0 搭載のRGB LED(GPIO0=青、GPIO1=赤、GPIO12=緑)をpwm-ledとしてCTIMER0、それぞれチャネル0/1/2として、IO_MUX_CT0_MAT0_OUT_IO0、IO_MUX_CT0_MAT1_OUT_IO1、IO_MUX_CT0_MAT2_OUT_IO12を共用pinctrl-0グループで構成しました。3チャネルすべてでテストアプリをサイクルサイクルで実行しました。 赤色および緑色のLEDは正しくPWM制御されています(Saleaeロジックアナライザで確認済み - GPIO1およびGPIO12の波形は正常です)。青色LED(GPIO0/MAT0)は完全に消灯したままで、ロジックアナライザは平坦な線を示し、デューティサイクル(0~100%)のいずれにおいてもトグルは発生しません。GPIO0のデジタルGPIO(非PWM)トグルは問題なく動作します。 CTIMER0 MAT0チャネルのみがPWM出力に失敗します。同じタイマーインスタンス上のMAT1/MAT2は動作します。 必要なもの: GPIO0/CT0_MAT0がZephyrのFRDM-RW612上で既知の動作PWM組み合わせであるかどうかの確認。 RW612のチャネル0 CTIMER0に関するエラタムや制限に関するガイダンスがあります。 動作する.overlay例として、CTIMER を介して GPIO0 を PWM する例を挙げ、それと比較します。 frdm_rw612.オーバーレイ 「`」 #include < zephyr/dt-bindings/pwm/pwm.h> / { pwm_outputs { compatible = "pwm-leds"; pwm_gpio0: pwm_gpio0 { pwms = <&ctimer0_pwm 0 PWM_KHZ(1) PWM_POLARITY_NORMAL>; }; pwm_gpio1: pwm_gpio1 { pwms = <&ctimer0_pwm 1 PWM_KHZ(1) PWM_POLARITY_NORMAL>; }; pwm_gpio12: pwm_gpio12 { pwms = <&ctimer0_pwm 2 PWM_KHZ(1) PWM_POLARITY_NORMAL>; }; }; エイリアス { pwm-gpio0 = &pwm_gpio0; pwm-gpio1 = &pwm_gpio1; pwm-gpio12 = &pwm_gpio12; }; }; ctimer0_pwm: &ctimer0 { compatible = "nxp,ctimer-pwm"; ステータス = "okay" clk-source = <5>; クロック = <&clkctl1 MCUX_CTIMER0_CLK>; #pwm-cells = <3>; モード = <0>; プリスケール = <0>; pinctrl-0 = <&pinmux_ctimer0_pwm>; pinctrl-names = "default"; }; &pinctrl { pinmux_ctimer0_pwm: pinmux_ctimer0_pwm { グループ0 { pinmux = < IO_MUX_CT0_MAT0_OUT_IO0 IO_MUX_CT0_MAT1_OUT_IO1 IO_MUX_CT0_MAT2_OUT_IO12 >; スルーレート = "通常"; }; }; }; 「`」 評価ボード
查看全文
IMXRT1024でヒューズを焼損させずにHABをテストする 署名のないledのblinkyコードを使ってHAB監査API(報告状況と報告イベント情報)を実装しました。EVKボードは開いており、ヒューズも焼けていません 署名なしイメージ(CSF=0) - HABが4イベント情報で失敗 署名画像 - HAB パス0イベント情報 なので、ボードでもオープンHAB認証が実行されているのでイベント情報が見られると仮定しました。 しかし今回は同じIVT(CSF=0)でプロジェクトファームウェアを使い、同じHAB監査を実施しました 署名なし画像 - 0 イベント情報 のHABパス リードされた点滅ログ(署名なし): RVTヘッダー 0x 2002c0: tag=0xdd len=0x 038 par=0x43 HAB:RVTバージョン=0x 40305 居住区:report_status() = 0x33(HAB_FAILURE) HAB: config = 0xf0(HAB_CFG_OPEN) HAB: state = 0x66(HAB_STATE_NONSECURE) HAB: event[0], 8バイト HAB: hdr: tag=0xdb len=0x 0 8 par=0x43 HAB: status=0x33(HAB_FAILURE) reason=0x22(HAB_INV_ADDRESS) context=0x a(HAB_CTX_AUTHENTICATE) engine=0x 0(HAB_ENG_ANY) HAB: raw: db 0 8 43 33 22 a 0 HAB: event[1], 20バイト HAB: hdr: tag=0xdb len=0x 014 par=0x43 HAB: status=0x33(HAB_FAILURE) reason=0x c(HAB_INV_ASSERTION) コンテキスト=0xa0(HAB_CTX_ASSERT) engine=0x 0(HAB_ENG_ANY) HAB: raw: db 0 14 43 33 c a0 0 0 0 0 0 0 60 0 10 0 0 0 0 20 HAB: event[2], 20バイト HAB: hdr: tag=0xdb len=0x 014 par=0x43 HAB: status=0x33(HAB_FAILURE) reason=0x c(HAB_INV_ASSERTION) context=0xa0(HAB_CTX_ASSERT) engine=0x 0(HAB_ENG_ANY) HAB: raw: db 0 14 43 33 c a0 0 0 0 0 0 60 0 10 20 0 0 0 1 HAB: event[3], 20バイト HAB: hdr: tag=0xdb len=0x 014 par=0x43 HAB: status=0x33(HAB_FAILURE) reason=0x c(HAB_INV_ASSERTION) コンテキスト=0xa0(HAB_CTX_ASSERT) engine=0x 0(HAB_ENG_ANY) HAB: raw: db 0 14 43 33 c a0 0 0 0 0 0 0 60 0 20 0 0 0 4 HAB: VERDICT = 4 イベント情報 記録済み -- 上記のデコード済みフィールドを参照 私のプロジェクトファームウェア(署名なし) HAB: RVTヘッダー 0x002002c0 HAB: tag=0xdd len=0x0038 par=0x43 HAB:RVTが確認され有効 居住区:RVTバージョン=0x00040305 居住区:report_status() = 0xf0 HAB: config = 0xf0 HAB: state = 0x66 HAB: 監査イベント情報やクエリなし... HAB: report_event(idx=0) 0x33返されました(イベント情報やクエリなし) HAB: VERDICT = PASS(監査イベント情報なし) なぜ違いがあるのか Re: Test HAB on IMXRT1024 without burning fuses こんにちは、 @Abhay2080 さん。 ご連絡ありがとうございます!LED点滅コードが入っているSDK版と、画像作成に使われているSPT版の両方をいただけますか? ご辛抱いただきありがとうございます! すてきな一日を、 カン ------------------------------------------------------------------------------- 注記: この投稿があなたの質問への回答になっている場合は、「正解としてマーク」ボタンをクリックしてください。ありがとうございます! - 前回の投稿から7週間Threadをフォローしており、その後の返信は無視しています もし後で関連する質問があれば、新しいThreadを開き、閉じたThreadを参照してください。 ------------------------------------------------------------------------------- Re: Test HAB on IMXRT1024 without burning fuses これはSDKバージョンです - SDK_25_06_00_MIMXRT1024xxxxx SPTバージョン - 26.06 MCU xpresso - v25.6.136 MCU Xpressoでコンパイルした場合、LED Blinky用の署名なし画像はSPTとCST 4.0の両方で作成されます Re: Test HAB on IMXRT1024 without burning fuses こんにちは、 @Abhay2080 さん。 情報と詳細なログをありがとうございます。これは素晴らしい観察結果で、違いはIVT内のCSFポインタがゼロかゼロでないかという一点に集約されます。 HABv4が認証を決定する方法 i.MX RT10xxでは、ブートROMは認証を試みるかどうかを判断する前にIVTのCSFフィールドを確認します。 CSF = 0x00000000 (null)の場合、HABは認証を完全にスキップし、イベント情報は記録されず report_status() 0xf0 (HAB_SUCCESS)を返します。これはセキュリティ上の「合格」ではありません。認証は一度も試みられていません。 CSF = non-zero (CSF領域を指す場合):HABは認証を試みます。署名が欠落または無効の場合、失敗イベント情報が記録され、 report_status() は 0x33 (HAB_FAILURE)を返します。オープンボードの場合、これはブートを停止させません。 なぜLED点滅(署名なし)が4つの故障イベント情報を示したのか あなたのLED点滅バイナリはMCUXpresso IDEによって構築され、その後SPT(Secure Provisioning Tool)で処理されてブート可能なイメージが作成されました。「署名なし」ビルドタイプの場合でも、SPTのブートイメージパイプラインは、ゼロ以外のCSFポインタをIVTに書き込み、イメージ内にCSF領域を予約します。Boot ROMは非ゼロポインタを発見し、認証を試みましたが有効な署名データは見つからず、4つのイベントを記録しました。 イベント情報0( HAB_INV_ADDRESS / HAB_CTX_AUTHENTICATE 😞 HABは認証のために画像を探しましたが、無効なアドレスに遭遇しました。これは空のCSF領域と一致します。 イベント情報1–3( HAB_INV_ASSERTION / HAB_CTX_ASSERT 😞 HABによる画像領域に対する内部検証は、実際の脳脊髄液データが存在しないため失敗しました。 なぜプロジェクトのファームウェア(署名なし)にイベント情報が0と表示されたのか あなたのプロジェクトファームウェアは、SPTの起動可能なイメージ生成ステップ を経ずに 、MCUXpresso IDEを通じて直接コンパイルされました。結果として得られるバイナリには、IVT内に真のヌルCSFポインタが含まれています。Boot ROMは CSF = 0 を認識し、認証を完全にスキップし、HABはクリーンな報告をします。ログの report_event(idx=0) からの 0x33 リターンは「このインデックスにイベント情報なし」(つまり、クエリ自体が何も保存されていないため返HAB_FAILURE)を意味しており、HABが故障を検出したわけではありません。 確認の簡単な方法 バイトオフセット +0x18 (CSFフィールド)で、両方のバイナリのIVTを調べます。 SPT製LED点滅:ゼロ以外の値(例: 0x60006xxx または類似のフラッシュアドレス) プロジェクトファームウェア: 0x00000000 プロジェクトのファームウェアで HAB 監査を適切にテストするには 起動可能なイメージはSPT(またはelftosb/nxpimage)でビルドし、CSF領域をイメージに埋め込む必要があります。署名なしビルドでも同様です。これにより、Boot ROMが認証を試み、HABイベント情報が生成されます。そうして初めて、HAB監査コードはテスト目的のための有意義なデータを収集できるようになります。 まとめると、HAB認証はオープンボード上で動作するというあなたの最初の仮定は正しいですが、それはIVTに非ゼロのCSFポインタが存在する場合に限られます。プロジェクトのファームウェアで観察された動作は想定どおりであり、正しいものです。 これで少しでも分かりやすくなれば幸いです!他に質問があればお知らせください。   すてきな一日を、 カン ------------------------------------------------------------------------------- 注記: この投稿があなたの質問への回答になっている場合は、「正解としてマーク」ボタンをクリックしてください。ありがとうございます! - 前回の投稿から7週間Threadをフォローしており、その後の返信は無視しています もし後で関連する質問があれば、新しいThreadを開き、閉じたThreadを参照してください。 ------------------------------------------------------------------------------- Re: Test HAB on IMXRT1024 without burning fuses はい、Kan_Liあなたが言った説明は正しいですが、正しいシナリオは私たちにとってです。 LED点滅(署名なし)-> このバイナリiはMCU Xpresso IDEのみで生成(SPT経由は処理していません)。サイズ - 30KB そして、LED点滅(符号なし)と私のプロジェクト(符号なし)の両方のIVTを比較しても、両方ともまったく同じIVT(CSF=0)でした。サイズ 64KB 16進数比較を参照 左側はLED点滅、右側は私のプロジェクトのファームウェアです また、ヒューズを焼損させずにHABを正しくテストする方法についても教えてください。 Abhay2080_0-1788931301704.pngAbhay2080_0-1788931301704.pngAbhay2080_0-1788931301704.png Re: Test HAB on IMXRT1024 without burning fuses こんにちは、 @Abhay2080 さん。 16進数での比較をありがとうございます。おかげで状況がずっと分かりやすくなりました。おっしゃる通り、両方のバイナリはCSF=0の同一のIVT(初期値変換)を持っています。実際の根本原因は、CSFポインタではなく、ブートデータ size フィールドにあります。 16進ダンプの内容 ファイルオフセット 0x1020 (IVTの boot_data が指す位置)にあるブートデータ構造を見てみましょう。 フィールド LED点滅 プロジェクトファームウェア start (0x1020) 0x60000000 0x60000000 size (0x1024) 0x00004000 = 16 KB 0x00000400 = 1 KB plugin (0x1028) 0x00000000 0x00000000 IVT内の両方のCSFフィールドは 0x00000000 であり、同一であることが確認されました。 HABの挙動が異なる理由 HABライブラリの authenticate_image() は、認証を試みる前に画像スコープを決定するために、Boot Data領域( start から start + size )を使用します。重要なことに、 IVT自体はフラッシュオフセット 0x1000 (ベースから4096バイト)に配置されています。HABは、IVTが宣言されたブートデータ領域内に含まれるかどうかを確認します。 LED点滅— ブートデータは16KB( 0x4000 )を宣言します。オフセット 0x1000 (4096)のIVTは [0x60000000, 0x60004000) の中にあります。HAB は IVT を見つけ、 authenticate_image() を試行し、CSF=0 に遭遇します → ログには HAB_INV_ADDRESS + 3 つのアサーション失敗が記録されます → report_status() = HAB_FAILURE 。 プロジェクトファームウェア- ブートデータは 1 KB ( 0x400 ) のみを宣言しています。オフセット 0x1000 (4096)のIVTは [0x60000000, 0x60000400) 外側です。HABは宣言された領域内で有効なIVTを検出できず→認証は→ report_status() = HAB_SUCCESS , 0イベント情報で完全にスキップされます。 まとめると、プロジェクトファームウェアの1KBブートデータサイズは誤って小さすぎます。IVTはその境界を超えているため、HABはそれに手を出しません。 ブートデータのサイズはどちらも、実際のバイナリファイルのサイズ(それぞれ30KBと64KB)とは一致しないことに注意してください。両方のイメージは、適切なブート可能なイメージビルダーではなく、IDEが直接生成したブートデータを持っています。サイズのずれの程度によって、HABが発生するかどうかが決まります。 根本的な原因 SPTやelftosbを経ずにMCUXpresso IDEから直接コンパイルすると、結果として得られるバイナリはHAB評価のための適切なブートデータ構造を持ちません。 size フィールドは、IVT を包含する場合と包含しない場合がある値に設定され、予測不可能な HAB 監査結果をもたらします。 ヒューズを焼損させずにHABを正しくテストする方法 オープンボードにおける信頼できる手法は以下のとおりです。 SPTまたはelftosbを使用してビルドします。これにより、ブートデータ(ベースからCSF/コードの終わりまでイメージ全体をカバーする start 、 size )、FCB、IVT、およびオプションでCSFブロックが正しく設定されます。生のIDEコンパイル .bin でHABをテストするのは絶対に避けてください。ブートデータは信頼性が低くなります。 署名のないイメージ(CSF=0、正しいブートデータ)でテスト してください — HABは認証を試みますがCSFは検出できず、 HAB_INV_ADDRESS +アサーション失敗を記録します。 report_status() = HAB_FAILURE 。これにより、HABが正しく動作しており、監査コードが正常に機能していることが確認できます。これはまさに、あなたのLED点滅+SPTの結果が示していたことと同じです。 署名付きイメージ(CSFが有効で、ブートデータが正しいもの)を使用してテストします。SPTまたはCST 4.0を使用して、キーで適切に署名されたイメージを作成します。オープンボードでは、HABは埋め込まれたSRK/CSFを使用してイメージを認証します。署名が有効であれば、→ report_status() = HAB_SUCCESS 、0のイベント情報となります。署名が間違っていたり欠如している場合、→失敗のイベント情報。どちらの場合もオープンボード上でブートが続きます。 ヒューズを書き込む前に信頼性を確認してください。署名済みのイメージがオープンボードに表示され、HAB_SUCCESS が表示された後でのみ、SRK ハッシュヒューズを書き込んでください。これにより認証チェーン全体が安全に検証されます。 推奨されるテスト手順(すべてオープンボードで実施): Step 1: SPT -> Build unsigned image -> Flash -> Run HAB audit Expected: HAB_FAILURE, 4 events (HAB is running, audit code is correct) Step 2: SPT/CST -> Build signed image -> Flash -> Run HAB audit Expected: HAB_SUCCESS, 0 events (signing + authentication working end-to-end) Step 3: Corrupt the signed image or swap keys -> Flash -> Run HAB audit Expected: HAB_FAILURE, events logged (confirms rejection logic) Step 4: Burn fuses (SRK hash) -> confirm Step 2 still passes on Closed board これで違いが十分に説明できたでしょうか。重要なポイントは、HABをテストする際は必ずSPT/elftosbを使って起動可能なイメージを構築することです。生のIDEバイナリは使わないでください。 すてきな一日を、 カン ------------------------------------------------------------------------------- 注記: この投稿があなたの質問への回答になっている場合は、「正解としてマーク」ボタンをクリックしてください。ありがとうございます! - 前回の投稿から7週間Threadをフォローしており、その後の返信は無視しています もし後で関連する質問があれば、新しいThreadを開き、閉じたThreadを参照してください。 -------------------------------------------------------------------------------
查看全文
关于 HSE FW 2.40.0 和 2.55.0 中 GCM IV 长度支撑的问题 你好, 我有一个关于 S32K358 上 HSE 的 GCM 操作的问题。 在 HSE 服务 API 参考手册的 AEAD 服务描述中,HSE FW 2.40.0 和 2.55.0 都对 GCM 进行了如下规定: GCM: 1 <= ivLength <= 2^32-1。建议大小为 12 字节或更大。 但是,HSE FW 2.40.0 手册包含以下附加说明,而 HSE FW 2.55.0 手册中没有此说明: 在 GCM 操作中,建议使用正好 12 字节的 IV 值。对于任何非 12 字节的 IV 大小,GCM 加密操作生成的认证标签可能不正确。在 GCM 解密操作中,身份验证检查可能会失败。 在此,我想澄清以下几点: 1. 当 IV 长度不是 12 字节时,HSE FW 2.40.0 中 GCM 操作能否正常使用? 2. 当使用 12 字节以外的 IV 长度时,HSE FW 2.40.0 和 2.55.0 在 GCM 操作方面是否存在行为差异? 3. 当使用 12 字节以外的 IV 长度时,HSE FW 2.40.0 和 2.55.0 的 GCM 操作可靠性是否存在差异? 在我们的测试中,即使 IV 长度不是 12 字节,GCM 加密和解密也能成功执行,并且认证结果也正确。 因此,我想确认 HSE FW 2.40.0 是否完全支持使用 12 字节以外的 IV 长度,以及在这种情况下与使用 HSE FW 2.55.0 相比是否存在任何功能差异。 谢谢你的解释。 Re: Question about GCM IV Length Support in HSE FW 2.40.0 and 2.55.0 嗨@wodudwo 从技术上讲,ivLength 可以配置为不同的长度;但是,不建议这样做,因为不能保证其行为可靠。正如您正确指出的那样,文档中说明,对于 GCM 解密操作,当使用 12 字节以外的 IV 长度时,身份验证检查可能会失败。 虽然使用不同长度的静脉输液管进行的测试可能通过了,但这并不能保证手术一定会成功。换句话说,某个测试用例的成功结果不应被解释为表明该配置完全受支持或在所有情况下都能稳定运行。 此外,如果您查看这两个固件版本的发行说明,您会发现限制列表包含相同的建议:使用正好为 12 字节的 IV 值。 虽然从 HSE 固件 2.55.0 版本开始,HSE 服务 API 参考手册中已删除该注释,但限制本身仍然存在。 BR,VaneB
查看全文
se05x_TP_PlatformSCP03keys.cを使ってプラットフォームSCP03キーをデフォルトに戻す方法は? こんにちは、NXPコミュニティの皆さん、 SE051のセキュア要素を扱っており、Plug and Trustミドルウェアを使ってプラットフォーム SCP03キーをデフォルト値に正しく戻す方法についてお尋ねしたいです。 これまでにやったこと: demos/se05x/se05x_RotatePlatformSCP03Keys/se05x_TP_PlatformSCP03keys.c を修正し、キーのリバートセクション (doc:start:revert-scp03-keys と doc:end:revert-scp03-keys の間) をコメントアウトしました。 私は自分のセットアップでアプリケーションをビルドし実行しました。 実行は成功し、「おめでとうございます!!! キーローテーション成功!!!!」というメッセージが表示されました。 キー変更を確認するために、/tmp/SE05X/plain_scp.txtを新しいキー値(0x4041...ENC、MAC、DEK用)で更新し、SSSCLI Connectで正常に接続できました。 その後の操作(ssscli generate rsa、ssscli set aes、ssscli se05x readidlist)はすべて正常に完了し、鍵が書き込まれIDが問題なく取得されたことが確認されました。 今、プラットフォームSCP03キーをデフォルトのキー(sss/ex/inc/ex_sss_tp_scp03_keys.hで定義)に戻したいと考えています。 どなたかse05x_TP_PlatformSCP03keys.cの修正方法や、このキーリバートを行う正しい手順について教えてもらえますか? 環境: ボード:MCIMX8M-WEVK(OM-SE051ARD搭載) Plug and Trust MW バージョン: v04.07.01 OP-TEE OSバージョン:3.19.0 Linuxカーネル:6.1.151 OEF ID: A8FA アドバイスやコードに関するヒントをいただければ大変ありがたいです。 SE050 Re: How to revert Platform SCP03 keys back to default using se05x_TP_PlatformSCP03keys.c? こんにちは、 @Uc_S さん。 キーをデフォルトに戻すだけなら、nanoパッケージの例が 推奨されるよりシンプルな経路 です。更新すれば3つの scp03_* 配列(認証用現在のキー)と3つの NEW_scp03_* 配列(デフォルトキーをターゲットに)だけを更新し、ex_se05x_rotate_scp03_keys()内のリバートコールはコメントアウトすればよいのです。詳細については、以下をご参照ください。 変更点1 — 現在のキー(SCP03セッションを開くために使用)を設定します。 38~43行目は、 ex_set_scp03_keys() に渡される認証キーです。プレースホルダー 0xABCD... の値を現在のキー( 0x4041... に置き換えてください。😞 uint8_t scp03_enc_key[AES_KEY_LEN_nBYTE] = { 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F }; uint8_t scp03_mac_key[AES_KEY_LEN_nBYTE] = { 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F }; uint8_t scp03_dek_key[AES_KEY_LEN_nBYTE] = { 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F }; c   変更点2 — 新しいターゲットキー(デフォルトのSE051C A8FAキー)を設定します。 45~50行目は、 PutKey を介して SE051 に書き込ま れるキーです。 0x4041... のプレースホルダーをSE051C OEF A8FAのデフォルト値に置き換えてください。 uint8_t NEW_scp03_enc_key[AES_KEY_LEN_nBYTE] = { 0xbf, 0xc2, 0xdb, 0xe1, 0x82, 0x8e, 0x03, 0x5d, 0x3e, 0x7f, 0xa3, 0x6b, 0x90, 0x2a, 0x05, 0xc6 }; uint8_t NEW_scp03_mac_key[AES_KEY_LEN_nBYTE] = { 0xbe, 0xf8, 0x5b, 0xd7, 0xba, 0x04, 0x97, 0xd6, 0x28, 0x78, 0x1c, 0xe4, 0x7b, 0x18, 0x8c, 0x96 }; uint8_t NEW_scp03_dek_key[AES_KEY_LEN_nBYTE] = { 0xd8, 0x73, 0xf3, 0x16, 0xbe, 0x29, 0x7f, 0x2f, 0xc9, 0xc0, 0xe4, 0x5f, 0x54, 0x71, 0x06, 0x99 }; c   変更点3 — リバートブロックをコメントアウトする ex_se05x_rotate_scp03_keys() では、85行目から90行目までコメントアウトして、コードが1回だけ回転(→現在のデフォルト)を行い、再び回転しようとしないようにします。 /* -- Comment out the revert block below -- */ // SMLOG_I("Reverting SCP03 keys(version - %02x) to OLD KEYS \n", KEY_VERSION); // ret = ex_se05x_change_keys(&se05x_session, &scp03_enc_key[0], &scp03_mac_key[0], &scp03_dek_key[0]); // if (ret != 0) { // SMLOG_E("Error in ex_se05x_change_keys \n"); // return 1; // } c     すてきな一日を、 カン ------------------------------------------------------------------------------- 注記: この投稿があなたの質問への回答になっている場合は、「正解としてマーク」ボタンをクリックしてください。ありがとうございます! - 前回の投稿から7週間Threadをフォローしており、その後の返信は無視しています もし後で関連する質問があれば、新しいThreadを開き、閉じたThreadを参照してください。 ------------------------------------------------------------------------------- Re: How to revert Platform SCP03 keys back to default using se05x_TP_PlatformSCP03keys.c? @Kan_Li ご説明いただきありがとうございます。 私の場合、現在のキーは既知です(0x4041...ENC、MAC、DEK)で、これらのキーを使ってSSSCLIを通じてSCP03セッションを正常に確立できます。 現在の認証キーが使えるので、se05x_TP_PlatformSCP03keys.cをデフォルトに戻すためにキー回転を修正する方法について詳しく教えていただけますか? 具体的には、以下の点について知りたいです。 セッション設定時に認証のために、現在のキー(0x4041...)で更新すべき変数やマクロはどれでしょうか。 ターゲットのデフォルトキー値を保持する変数または構造体はどれですか(例:sss_tp_scp03_keys.h)PutKey操作の場合。 se05x_TP_PlatformSCP03keys.cのコードスニペットや特定の行参照などは(または関連するブート/認証ヘッダー)を提供していただけると大変ありがたいです。 Re: How to revert Platform SCP03 keys back to default using se05x_TP_PlatformSCP03keys.c? こんにちは、 @Uc_S さん。 プラットフォームSCP03キーをデフォルト値に戻すのは、 現在のキーが既知である場合にのみ可能であり、SE051に対してキー更新( PutKey )コマンドを出す前に、SCP03セッションが成功裏に認証されている必要があります。 現在の鍵を紛失または忘れてしまった場合、SE051への認証および鍵のローテーションを実行することはできません。バックドアやオーバーライド機構は存在せず、これはデバイスのセキュリティモデルを維持するための設計上のものです。 さらに、工場出荷時リセットは効果 がなく 、プラットフォームSCP03キーは工場出荷時リセット手順の影響を受けません。 このような状況では、 SE051を、NXPがデフォルトで提供するキーを搭載した新しいデバイスに交換する以外に選択肢はありません。   すてきな一日を、 カン ------------------------------------------------------------------------------- 注記: この投稿があなたの質問への回答になっている場合は、「正解としてマーク」ボタンをクリックしてください。ありがとうございます! - 前回の投稿から7週間Threadをフォローしており、その後の返信は無視しています もし後で関連する質問があれば、新しいThreadを開き、閉じたThreadを参照してください。 ------------------------------------------------------------------------------- Re: How to revert Platform SCP03 keys back to default using se05x_TP_PlatformSCP03keys.c? @Kan_Li 詳細なご指導をいただき、ありがとうございます。 あなたの指示に従い、キーを更新し、リバートブロックをコメントアウトし、ナノパッケージの例を無事に構築・実行しました。 しかし、実行中に、PUT KEY APDUコマンドの実行中に、SCP03キー更新操作がSWステータスコード6A80で失敗しました。実行ログの概要は以下のとおりです。 Plug and Trust nano package - version: 1.6.1 ... Establish Secure Channel to SE05x ! Sending GP Initialize Update Command !!! ... CardCryptogram verified successfully...Calculate HostCryptogram Sending GP External Authenticate Command !!! APDU Tx> :84 82 33 00 10 ... APDU Rx< :69 82 Authentication Successful!!! Created scp03 Session Changing SCP03 keys(version - 0b) to NEW KEYS APDU Tx> :84 d8 0b 81 58 ... APDU Rx< :6a 80 Error in DoAPDUTxRx Error in ex_se05x_change_keys SE05x Rotate SCP03 keys Example Failed ! 根本的な原因としては、OpenSSLバージョン(ビルドPCとターゲット評価ボードの両方でOpenSSL 3.xが使用)がPutKey時のキーの派生やフォーマットに影響を与えているか、特にDEKの値が以前に不一致または書き換えられた可能性があります。 現時点では、これらの可能性をさらに調査したり対処したりするだけの十分な時間的余裕がありません。後日、時間があれば個別に調べてみます。 ご協力いただき、改めて感謝申し上げます。 Re: How to revert Platform SCP03 keys back to default using se05x_TP_PlatformSCP03keys.c? こんにちは、 @Uc_S さん、 詳細な実行ログをありがとうございます。問題の特定に必要な情報がまさに揃っています。あなたが挙げた2人の容疑者は、どちらも正当で、論理的にも妥当です。以下に、最も可能性の高い状況をまとめました。 6A80エラーが教えてくれること SW 6A80 ( SW_WRONG_DATA )は、SE051がPUT KEY APDUのデータフィールドを暗号学的に無効として拒否したことを意味します。ログで認証が成功裏に完了した(CardCryptogram認証+外部認証成功)を示しているので、 ENCキーとMACキーは正しいことが確認されています。この失敗はPUT KEYステップに限定されており、これは DEKキー または 新しい鍵素材をラップするAES暗号化の問題を直接示しています。 容疑者1:DEKキーの不一致 ― 最も可能性の高い主な原因 PUT KEYコマンド内では、新しいキーはそれぞれ現在のDEKで暗号化されてからSEに送信されます。ホストコード内のDEK値がデバイスに保存されているDEK値と完全に一致しない場合、SEはガベージを復号して6A80を返します。 ほぼ同じケースで、以前のSE051C1顧客からの結論は以下の通りです。 「最小限のサンプルがPlatformSCPで動作するなら、ENCキーとMACキーは正しい。」キーの回転が依然として失敗するということは、DEKキーが間違っていることを意味します...過去にDEKキーが誤って設定された可能性があります。 これまでの経緯から考えると、これが最も可能性の高い根本原因です。以前の不完全または誤った回転により、SE051のDEKが 0x4041... と一致しない状態になっている可能性があります。 確認手順:新品の工場出荷時のSE051サンプルで同じコードをテストします。即座に成功した場合、現在のデバイスのDEKの状態が破損しているか不明であることが確認され、チップを交換する必要があります。正しいDEKがなければ復旧手段はありません。 容疑者2:OpenSSL 3.x互換性 ― 実際のリスク、二次的原因 ナノパッケージのSCP03暗号パスは、レガシーの低レベルOpenSSL APIを使用しています。 AES_set_encrypt_key((uint8_t *)key, keylen * 8, &AESKey); AES_ecb_encrypt(srcData, destData, &AESKey, AES_ENCRYPT); ナノパッケージは OpenSSL 1.1.1のみで設計・テストされました。OpenSSL 3.xではこれらのAPIは非推奨化されており、レガシープロバイダーを実行時に明示的にロードする必要があります。もし読み込まれていなければ、これらの呼び出しは静かに誤った出力を生み出し、DEKで暗号化されたペイロードが破損し、6A80もトリガーされます。 推奨される修正方法: nanoパッケージを mbedTLS をホストの暗号バックエンド( -DEX_SE05X_USE_MBEDTLS=1 )に切り替えてください。これは廃止されたOpenSSL APIに依存しず、このユースケースで完全にサポートされています。あるいは、OpenSSL 1.1.1に対して再構築してOpenSSLバージョン仮説を単独で検証する方法もあります。 推奨される手順 まずは新品のSE051でテストしてください。これが、現在使用しているデバイスのDEKが根本原因かどうかを確認する最も迅速な方法です。 今後OpenSSL 3.xのリスクを排除するために、ホストの暗号バックエンドはmbedTLSに切り替えましょう。 新しいデバイスでもmbedTLSが動作しない場合は、詳細な調査のために、ビルド環境の詳細(OS、コンパイラ、mbedTLSのバージョン)をお知らせください。 ご注意ください:現在お使いのデバイスのDEKが不明な状態であることが確認された場合、それを復旧する方法はありません。工場出荷時のキーが設定された交換用チップが必要になります。 新たなサンプル検査の結果をお知らせください。喜んでさらにサポートさせていただきます。 すてきな一日を、 カン ------------------------------------------------------------------------------- 注記: この投稿があなたの質問への回答になっている場合は、「正解としてマーク」ボタンをクリックしてください。ありがとうございます! - 前回の投稿から7週間Threadをフォローしており、その後の返信は無視しています もし後で関連する質問があれば、新しいThreadを開き、閉じたThreadを参照してください。 -------------------------------------------------------------------------------
查看全文
GC7000UL general-compute inference path on i.MX8M Plus and TIM-VX/VSINPU appears NPU-only Board/BSP: i.MX8M Plus, aarch64 Galcore version 6.4.11.p2.745085 ONNX Runtime with VSINPUExecutionProvider (statically linked against libtim-vx.so) Vivante OpenCL ICD present and functional (Vivante.icd → libVivanteOpenCL.so) Goal: Run ResNet50 inference benchmarks (MLPerf loadgen harness) on the GC7000UL 3D GPU core specifically, as a comparison point against existing NPU (VIP8000Nano) and CPU benchmark results already collected. What's confirmed working: clGetPlatformIDs/clGetDeviceIDs via the Vivante OpenCL ICD cleanly enumerates two independent devices under one platform: Device 0: GC7000UL.6204.0000 Device 1: VIP8000Nano-S+I.8002.0000 Both report CL_DEVICE_TYPE_ACCELERATOR, no errors, confirmed via a minimal C test program linked against libOpenCL.so → libGAL.so. What's blocking GPU dispatch via ORT: ort.get_available_providers() returns only ['VSINPUExecutionProvider', 'CPUExecutionProvider'] — no OpenCL-based EP. VSINPUExecutionProvider is statically linked to libtim-vx.so (OVXLIB/vsi_nn_* API). Symbol/string dump of both libtim-vx.so and libGAL.so shows no DEVICE_INDEX/DEVICE_ID-style env var or config surface — only behavior toggles (VIV_VX_ENABLE_SHADER, VSI_NN_ENABLE_*, etc). libGAL.so does export gcoHAL_SetDeviceIndex/gcoHAL_GetCurrentDeviceIndex at the raw HAL layer, but there's no visible plumbing from OVXLIB/TIM-VX down to that call which is  suggesting the graph compiler used by VSINPU may be hardcoded to target the NPU core only, regardless of device index. Specific question: Does TIM-VX / OVXLIB on this BSP (galcore 6.4.11.p2) support compiling and dispatching a graph to the GC7000UL as a general-compute target, or is the graph compiler NPU-only by design in this build, and how can I verify if it is possible to run it that way ?  If GPU-target graph compilation is supported upstream in TIM-VX but not enabled in this NXP-shipped build, is there a build flag / SDK component that exposes it? If there is no supported path through TIM-VX/ORT, is there an NXP-recommended way to run generic  inference on the GC7000UL directly (e.g. via the OpenCL/OpenVX layer, since that portion of the stack is confirmed functional) ,  a sample app, SDK component, or reference implementation we should be building against instead? as a currently a student, and trying to work on this implementation and running an ORT on TOP of the GPU, is there any way, or any other way to be able use the GPU for inference ?  Thank you very much  IMX8MPLUS  #GC7000UL Re: GC7000UL general-compute inference path on i.MX8M Plus and TIM-VX/VSINPU appears NPU-only HI @WaleedO, Thank you for contacting NXP Support. To run inference on the GPU, you should use the GPU delegate, which enables supported operations to be accelerated by the GPU instead of running entirely on the CPU. I recommend reviewing our Machine Learning User Guide to better understand the available execution backends, delegate configuration, supported frameworks, and example applications. The guide also includes step-by-step examples that can help you validate that the GPU delegate is being loaded correctly and that your model is executing as expected. If you encounter any issues during setup or execution, please share the model, BSP version, and the commands you are using, and I will be happy to assist further. Best regards, Alejandro Garcia Re: GC7000UL general-compute inference path on i.MX8M Plus and TIM-VX/VSINPU appears NPU-only Hello @Chavira  Nice to meet you. After checking the documentation, the GPU delegate and the OpenCL path is used within  i.MX 95/952 GPU (Arm Mali G310). I am curently working on The IMX8MPLUS .  the imx8m Plus have this stack:  VX delegate ==> TIM-VX ==>  GPU/NPU (unified driver)  ==> I.MX 8 series NPU and GPU (GC7000,GC7000L, GC7000UL).  as per the documentation.  Currently, I am working with ONNX and ORT. When I run the execution, It is per default running on the NPU. Is there any way to use the OpenCL to work ont the IMX8MPLUS  GPU ? or if there is any manual override, or technique that I can implement, so that I can manually set the compilation toward either NPU or/And  GPU ?  Thank Your very much for your reply.  Kind regards,  IMX8MPLUS  #TIM-VX #VX-delegate Re: GC7000UL general-compute inference path on i.MX8M Plus and TIM-VX/VSINPU appears NPU-only Hello, Yes there is still a possible path, but I would not try to force VSINPU Execution Provider to use the GC7000UL. Your results strongly suggest that the current NXP TIM-VX/OVXLIB build is wired primarily for the VIP8000 NPU. gcoHAL_SetDeviceIndex() in libGAL.so alone doesn't mean TIM-VX can redirect NN graphs to the GPU. First test TIM-VX/OpenVX directly, outside ONNX Runtime, with a small model. Check whether your specific OVXLIB exposes a GC7000UL/GPU NN target. Compare your NXP TIM-VX build with upstream TIM-VX, especially its multi-device/platform support. If TIM-VX cannot compile for GC7000UL, use the Vivante OpenCL/OpenVX stack directly for the GPU benchmark. For your MLPerf project, you don't necessarily need ORT for the GPU path. You can make a separate GC7000UL backend and connect it to the same LoadGen harness used for CPU/NPU. So I would structure it as: MLPerf LoadGen → ResNet50 GPU backend → OpenCL/OpenVX → GC7000UL rather than: MLPerf → ORT → VSINPU → somehow force GPU Best Regrad, fesaji
查看全文
USBの電流制限を引き上げるための最小限の設定 USB経由で電源が供給できるデバイスがあり、MCXN947プロセッサを搭載しています。現在USBは設定しておらず、5V電源のみを供給しています。しかし、デフォルトで100mAに設定されている電流制限値を引き上げたいと考えています。 電流制限を上げるために最低限の設定は何でしょうか?MCUXpressoの設定ツールで、USBFSの設定を試みました。少なくとも1つのインターフェースが必要なので、DFUを設定してみました。なんとかほとんどのものはビルドできたのですが、設定ツールがtimer_queue.cというファイルを生成します。FreeRTOS port.c と競合する SysTick_Handler を定義するSysTick_Handler。 1) 電流制限を上げるためにもっと良い方法はありますか? 2) このDFUインターフェースの設定が他のどんな方法と同じくらい良い場合、自動生成コードとFreeRTOSポート間の競合はどう解決すればよいでしょうか? Re: minimal configuration to negotiate higher current limit on USB こんにちは、 @robert_hines さん。 はい、USBデバイスはUSB列挙時にbMaxPowerフィールドで必要な電力を宣言する必要があります。 100mAを超える電流を消費する場合は、デバイスをUSB HIDまたはUSB CDCデバイスとして構成することをお勧めします。これらは一般的にDFUよりも実装が容易です。   よろしくお願いします。   BR アリス
查看全文
LIN-stack download - where? Where do I have to download the LIN stack for a S32K116 microcontroller? Various posts point to the NXP Flexnet (?) page under 'S32K1 Reference Software - Automotive SW - LIN-Stacks', however the only file I get is "LINSTACK-K1 'List Of Known Defects' weekly report". The S32DS Extensions and updates page doesn't list any LIN software either. What am I missing? Re: LIN-stack download - where? Hi @daniel_meier, Instead of 'S32K1 Reference Software - Automotive SW - LIN-Stacks', can you try 'Automotive SW - S32K1 Reference Software > Automotive SW - S32K1_S32M24X - LIN Stacks'?  You should be able to access it from this link: Automotive SW - S32K1_S32M24X - LIN Stacks. If the issue persists, please try using Automotive Software Package Manager instead. Best regards, Julián Re: LIN-stack download - where? Hello @daniel_meier, The first link just redirects to my NXP profile page. You must be logged into NXP.com, and have an active session in Flexera/Flexnet portal to open links. To access Flexera and download your software: Sign in to nxp.com Go to My NXP Account → Software Licensing and Support → View Accounts (This will open your Flexera software catalog). Alternatively, use this direct link (while signed in): SW32K1-RTD44-D. Once your Flexera session is active, any other Flexera download links you've been provided will work, you can then access the link I've shared previously.  The second link works and lists the LIN Stack 2.0.0 software package for the S32K1, however it specifies it for "Core: Cortex-M7". You are correct, in which the package specifies the core as M7; however, this seems to be a simple display mistake. If you look into the release notes, you can see S32K116 is supported: Julin_AragnM_0-1789052260795.pngJulin_AragnM_0-1789052260795.pngJulin_AragnM_0-1789052260795.png I will report both of these issues to the team (Automotive SW - LIN-Stacks not pointing to the package, and Automotive Software Package Manager displaying S32K1's target core as M7). Thank you for pointing them out. Best regards, Julián Re: LIN-stack download - where? @Julián_AragónM Thanks for your reply! The first link just redirects to my NXP profile page. The second link works and lists the LIN Stack 2.0.0 software package for the S32K1, however it specifies it for "Core: Cortex-M7". According to the NXP product page on the S32K1, there's no variant with a Cortex-M7 core. Since we're using the S32K116, we require the stack for a Cortex-M0+ core.
查看全文
T1042D4RDB networking problems when booting from SD card I'm having problems with getting ethernet to work with T1042D4RDB when I'm booting from an SD Card. Here's the output when I boot: SERDES Reference : 0x86 Net: Initializing Fman MMC read: dev # 0, block # 2080, count 128 ... Fman1: Data at 7fdf8f88 is not a firmware No ethernet found. Hit any key to stop autoboot: 0 => md 0x7df8f88 07df8f88: deadbeef deadbeef deadbeef deadbeef ................ 07df8f98: deadbeef deadbeef deadbeef deadbeef ................ 07df8fa8: deadbeef deadbeef deadbeef deadbeef ................ 07df8fb8: deadbeef deadbeef deadbeef deadbeef ................ 07df8fc8: deadbeef deadbeef deadbeef deadbeef ................ 07df8fd8: deadbeef deadbeef deadbeef deadbeef ................ 07df8fe8: deadbeef deadbeef deadbeef deadbeef ................    From the u-boot code, we I can see that u-boot thought it was able to read from the SD card, but "0xdeadbeef" is indicative that nothing was written to RAM at that address. Oddly, the return value from blk_dread() is not checked below in u-boot drivers/net/fm/fm.c:    printf("\nMMC read: dev # %u, block # %u, count %u ...\n", dev, blk, cnt);   mmc_init(mmc);   (void)blk_dread(mmc_get_blk_desc(mmc), blk, cnt, addr); } [deleted] /* Upload the Fman microcode if it's present */ rc = fman_upload_firmware(index, &reg->fm_imem, addr); if (rc)    return rc; env_set_addr("fman_ucode", addr); Re: T1042D4RDB networking problems when booting from SD card KrogerFeedback is a customer survey that gives shoppers an opportunity to share their experience with Kroger. After completing a recent purchase, customers may be invited to provide feedback about store cleanliness, product availability, checkout speed, employee service, and overall satisfaction. The survey is designed to help Kroger understand what customers enjoy and where improvements may be needed. Participants should keep their receipt handy because it may contain information required to access the survey. Answering the questions honestly and thoughtfully helps Kroger improve its products and services. Depending on the current promotion, eligible participants may also have a chance to receive a reward or enter a sweepstakes. KrogerFeedback Re: T1042D4RDB networking problems when booting from SD card KrogerFeedback is a customer survey that gives shoppers an opportunity to share their experience with Kroger. After completing a recent purchase, customers may be invited to provide feedback about store cleanliness, product availability, checkout speed, KrogerFeedback Re: T1042D4RDB networking problems when booting from SD card Wingstop.com/survey – Mywingstopsurvey.com/usa is an online survey offered by Wingstop, allowing customers to provide valuable feedback on their last visit experience. The Wingstop company would like you to provide feedback to help them understand what can be changed to ensure customers an improved experience. Re: T1042D4RDB networking problems when booting from SD card A login gateway designed just for Lockheed Martin workers is called LMPeople External. Employees can access a range of services through the portal, including pay stubs, benefits, and personal data. Re: T1042D4RDB networking problems when booting from SD card Welcome to the Wendy's Customer Satisfaction Survey. We value your candid feedback and appreciate you taking the time to complete our survey. https://haioly-tsiiv-splieurk.yolasite.com/ Re: T1042D4RDB networking problems when booting from SD card Clearification: this is not for Rasperry PI nor my PC, it's for T1042D4RDB. Re: T1042D4RDB networking problems when booting from SD card I'm not using SDK v2.0. It's quite old and not compatible with Ubuntu 18, when I tried(Python 2 vs. 3 problems, near as I can tell). I'm using Poky 2.6.1 Questions: 1. Why would Poky 2.6.1 ship with 3 different versions? 2. Why ship with the latest one that doesn't work? Cheers, Re: T1042D4RDB networking problems when booting from SD card FMan microcode revision has to be consistent with the SDK revision. My assumption was that SDK v2.0 is used. Re: T1042D4RDB networking problems when booting from SD card I see! Thanks! I didn't realize the fMan firmware wasn't included in the u-boot image. I tried with 108.5.9, but it didn't work. T1042D4RDB ships with 106.4.18 and it worked. I find it curious that 108.15.9 is included when it doesn't work and that you recommend 107.4.2.  How did you arrive at the conclusion that 107.4.2 is the right version to program? $ ls tmp/deploy/images/t1042d4rdb/fsl_*.bin tmp/deploy/images/t1042d4rdb/fsl_fman_ucode_t1040_r1.1_106_4_18.bin tmp/deploy/images/t1042d4rdb/fsl_fman_ucode_t1040_r1.1_107_4_2.bin tmp/deploy/images/t1042d4rdb/fsl_fman_ucode_t1040_r1.1_108_5_9.bin Re: T1042D4RDB networking problems when booting from SD card It is needed to write FMan microcode (attached) to the SD card from block 0x820. In U-Boot: =>tftp 100000 fsl_fman_ucode_t1040_r1.1_107_4_2.bin =>mmc write 100000 820 37  In Linux: # dd if=fsl_fman_ucode_t1040_r1.1_107_4_2.bin of=/dev/sdb  seek=2080 bs=512 Re: T1042D4RDB networking problems when booting from SD card The White Castle Survey gives customers a simple way to share feedback about their recent dining experience. By completing the survey, you can comment on food quality, service, cleanliness, staff behavior, and overall satisfaction. Your honest responses help White Castle understand what customers enjoy and where improvements may be needed. To participate, keep your recent receipt handy and follow the survey instructions provided by the company. Answer each question carefully based on your actual visit. Depending on the current promotion, completing the survey may also provide an opportunity to receive a reward or special offer. Taking a few minutes to respond can help improve future White Castle visits. WhiteCastle customers
查看全文
How to write nfc chip I am trying to write an NFC 215 chip with an i phone 12 pro max.  I am using NXP tag writer app.  on the NXP tag writer app I click "new", "website" then i enter the description information along with the URI type and URI data.  I then click "save and write" I get a notification saying "NDEF recorded saved successfully in my dataset". When i close the app and tap the chip it doesn't do anything.  I also tried using another phone and still no luck.  Anyone have any ideas or suggestions?    nfc error.PNGnfc error.PNG
查看全文
Question about GCM IV Length Support in HSE FW 2.40.0 and 2.55.0 Hello, I have a question regarding the GCM operation of the HSE on the S32K358. In the AEAD service description of the HSE Service API Reference Manual, both HSE FW 2.40.0 and 2.55.0 specify the following for GCM: GCM: 1 <= ivLength <= 2^32-1. Recommended 12 bytes or greater. However, the HSE FW 2.40.0 manual contains the following additional note, which is not present in the HSE FW 2.55.0 manual: In GCM operations, it is recommended to use IV values of exactly 12 bytes. For any IV size different from 12 bytes, the authentication tag generated by the GCM encryption operation might not be correct. In GCM decryption operations, the authentication check might fail. In this regard, I would like to clarify the following: 1. Can GCM operations be used normally in HSE FW 2.40.0 when the IV length is not 12 bytes? 2. Is there any behavioral difference in GCM operations between HSE FW 2.40.0 and 2.55.0 when using an IV length other than 12 bytes? 3. Is there any difference in the reliability of GCM operations between HSE FW 2.40.0 and 2.55.0 when using an IV length other than 12 bytes? In our tests, GCM encryption and decryption were performed successfully even when the IV length was not 12 bytes, and the authentication results were also correct. Therefore, I would like to confirm whether using an IV length other than 12 bytes is fully supported in HSE FW 2.40.0, and whether there is any functional difference compared to using HSE FW 2.55.0 in this case. Thank you for your clarification. Re: Question about GCM IV Length Support in HSE FW 2.40.0 and 2.55.0 Hi @wodudwo  Technically, ivLength can be configured with a different length; however, doing so is not recommended because the behavior is not guaranteed to be reliable. As you correctly pointed out, the documentation states that for GCM decryption operations, the authentication check may fail when IV lengths other than 12 bytes are used. While your test may have passed using a different IV length, this does not guarantee that the operation will always succeed. In other words, a successful result in a particular test case should not be interpreted as an indication that the configuration is fully supported or will work consistently in all scenarios.  Additionally, if you review the release notes for both firmware versions, you will find that the List of Limitations includes the same recommendation: use IV values of exactly 12 bytes. Although the note was removed from the HSE Service API Reference Manual starting with HSE FW 2.55.0, the limitation itself remains unchanged.  BR, VaneB
查看全文
リファレンス ドキュメントの請求:S32DSにおけるCody ChatとのAIツール統合 親愛なるNXPコミュニティチームの皆様、 現在はS32 Design Studioを使っていて、IDEにあるCody Chat機能を使っています。 OpenAI、ChatGPT、Anthropic Claude のような外部AIモデルを S32 Design StudioのCody Chatセクションに 統合することが可能かどうか知りたい です。 私の要件は、S32DS内でAIアシスタントを直接使用して、次のような作業を行うことです。 C/C++コードの生成と解説 組み込みC言語開発 コンパイラとリンカーのエラーのデバッグ CAN、SPI、I2C、UART、ADCの開発 S32K3/S32K344の開発 現在のS32DSプロジェクトの状況を理解し、それに基づいて作業を行う 公式のSourcegraph Codyドキュメントでは、OpenAIとAnthropicの両方のモデルをサポートし、モデル設定やBring Your Own Key(BYOK)オプションが含まれていることがわかりました。 もう少し詳しく教えていただけますか: S32 Design Studioで使われているCody統合は、ChatGPT/OpenAIやClaudeなどの外部AIプロバイダーと接続可能でしょうか? Cody Chatのセクションで、これらのAIプロバイダ向けに独自のAPIキーを設定CANできますか? 公式のNXPドキュメント、S32DSのドキュメント、Codyのドキュメント、またはS32DSで外部AIモデルをCodyで構成・統合する方法を説明する例プロジェクトはありますか? もしこの機能が現在のS32DSバージョンで直接サポートされていない場合、Cody/Eclipseプラグインを外部のAIプロバイダーに拡張する公式な方法はありますか? S32DS版Codyの実装には、標準のSourcegraph版Codyの実装と比較して、何か制限事項はありますか? 参考までに、サポートされているLLMとモデル構成に関する以下のSourcegraphドキュメントを見つけました: 支援対象のLLM(法学修士)課程 コーディモデル構成 コーディモデルの構成例 これをS32DSで実装するための適切なNXP参照ドキュメントや推奨手順を教えていただけますか? 再開まで今しばらくお待ちください。 よろしくお願いします、 アラヴィンド・トガラリ Re: Request for Reference Documentation: Integrating Ai tools with Cody Chat in S32DS こんにちは、 外部利用用のドキュメント付きAIツールのリリースは9月26日に予定されています。
查看全文
Installing RTD for S32K312 I am trying to set up a dev environment for the S32K312, on S32 Design Studio v 3.6.6 as follows: 1. Downloaded SW32K3_S32M27x_RTD_R23-11_7.0.1_D2603_DesignStudio_updatesite.zip 2. Opened 'S32Extensions and Updates' on S32 Design Studio 3.6.6 running on Windows 11 and installed S32K3 real time drivers as shown: durga_choudhury_0-1788877584959.pngdurga_choudhury_0-1788877584959.pngdurga_choudhury_0-1788877584959.pngdurga_choudhury_0-1788877584959.pngdurga_choudhury_0-1788877584959.pngdurga_choudhury_0-1788877584959.pngdurga_choudhury_0-1788877584959.pngdurga_choudhury_0-1788877584959.png  3. Restarted the IDE when prompted (I have tried rebooting the PC also) With this, I cannot see support for the K3 family. The 'New Project' dialog does not show this as an option: durga_choudhury_1-1788877756997.pngdurga_choudhury_1-1788877756997.pngdurga_choudhury_1-1788877756997.pngdurga_choudhury_1-1788877756997.pngdurga_choudhury_1-1788877756997.pngdurga_choudhury_1-1788877756997.pngdurga_choudhury_1-1788877756997.pngdurga_choudhury_1-1788877756997.png If I try to install the 'S32K3XX' drivers, as shown below: durga_choudhury_2-1788877862245.pngdurga_choudhury_2-1788877862245.pngdurga_choudhury_2-1788877862245.pngdurga_choudhury_2-1788877862245.pngdurga_choudhury_2-1788877862245.pngdurga_choudhury_2-1788877862245.pngdurga_choudhury_2-1788877862245.pngdurga_choudhury_2-1788877862245.png I get an error as shown below: durga_choudhury_3-1788877910412.pngdurga_choudhury_3-1788877910412.pngdurga_choudhury_3-1788877910412.pngdurga_choudhury_3-1788877910412.pngdurga_choudhury_3-1788877910412.pngdurga_choudhury_3-1788877910412.pngdurga_choudhury_3-1788877910412.pngdurga_choudhury_3-1788877910412.png Now repeating this whole process on S32DS v 3.6.2 is slightly better: now I have an option for the K312 listed in the 'New Project' dialog, but there are no SDK for it listed: durga_choudhury_4-1788878190320.pngdurga_choudhury_4-1788878190320.pngdurga_choudhury_4-1788878190320.pngdurga_choudhury_4-1788878190320.pngdurga_choudhury_4-1788878190320.pngdurga_choudhury_4-1788878190320.pngdurga_choudhury_4-1788878190320.pngdurga_choudhury_4-1788878190320.png What am I doing wrong? Re: Installing RTD for S32K312 Hi @VaneB  Unfortunately I don't have an equivalent on S32DS 3.6.6, and I have tried downgrading the RTD version to 6.0.0 (from 7.0.1). Is there a specific version that will work on 3.6.6? Re: Installing RTD for S32K312 Hi @durga_choudhury  The screenshot is from my S32DS 3.6.10 installation; however, you should see a similar setup in your IDE. VaneB_0-1788893776567.pngVaneB_0-1788893776567.pngVaneB_0-1788893776567.pngVaneB_0-1788893776567.pngVaneB_0-1788893776567.pngVaneB_0-1788893776567.pngVaneB_0-1788893776567.pngVaneB_0-1788893776567.png Also, based on the screenshot you shared, I can see that you were able to install RTD 7.0.1. Since RTD 7.0.1 depends on the S32K3 Development Package, it is likely that the package has already been installed. Re: Installing RTD for S32K312 Hi @VaneB  Please provide some elaboration on your comment. I see that I have a 'development package' for the S32K1xx' installed (which is also a MCU family I use): durga_choudhury_0-1788891225434.pngdurga_choudhury_0-1788891225434.pngdurga_choudhury_0-1788891225434.pngdurga_choudhury_0-1788891225434.pngdurga_choudhury_0-1788891225434.pngdurga_choudhury_0-1788891225434.pngdurga_choudhury_0-1788891225434.pngdurga_choudhury_0-1788891225434.png But I see nothing similar for the K3. So how do I install it? To re-iterate, what I have done so far is: 1. Downloaded SW32K3_S32M27x_RTD_R23-11_7.0.1_D2603_DesignStudio_updatesite.zip  2. Added it as an update site on S32 DS v 3.6.6 3. Installed the following: durga_choudhury_1-1788891394005.pngdurga_choudhury_1-1788891394005.pngdurga_choudhury_1-1788891394005.pngdurga_choudhury_1-1788891394005.pngdurga_choudhury_1-1788891394005.pngdurga_choudhury_1-1788891394005.pngdurga_choudhury_1-1788891394005.pngdurga_choudhury_1-1788891394005.png Re: Installing RTD for S32K312 Hi @durga_choudhury  From your S32DS 3.6.6 installation, it appears that the S32K3 Development Package is not installed. Regarding S32DS 3.6.2, please note that RTD 7.0.1 was developed and validated using S32DS 3.6.4. Therefore, we recommend using S32DS 3.6.4 or a newer release to ensure compatibility and avoid potential issues. Something additional to verify is the toolchain. When creating your project, make sure that NXP GCC 10.2.0 is installed and selected as the project toolchain. BR, VaneB Re: Installing RTD for S32K312 Hi @durga_choudhury  From my setup, I have RTD 7.0.0 installed with S32DS 3.6.6. However, as previously mentioned, RTD 7.0.1 should work without any issues, since the setup is very similar across these versions. Could you please share your installation details?  Re: Installing RTD for S32K312 Hi @VaneB  Here are the two files I have tried (with both having the same issue): durga_choudhury_0-1789048352154.pngdurga_choudhury_0-1789048352154.pngdurga_choudhury_0-1789048352154.pngdurga_choudhury_0-1789048352154.pngdurga_choudhury_0-1789048352154.pngdurga_choudhury_0-1789048352154.png Here is the information about the S32DS: durga_choudhury_1-1789048467186.pngdurga_choudhury_1-1789048467186.pngdurga_choudhury_1-1789048467186.pngdurga_choudhury_1-1789048467186.pngdurga_choudhury_1-1789048467186.pngdurga_choudhury_1-1789048467186.png Here are some of the installation details, as much as fits on a single screen shot. Do you need any other information? durga_choudhury_2-1789048687291.pngdurga_choudhury_2-1789048687291.pngdurga_choudhury_2-1789048687291.pngdurga_choudhury_2-1789048687291.pngdurga_choudhury_2-1789048687291.pngdurga_choudhury_2-1789048687291.png Re: Installing RTD for S32K312 Hi @durga_choudhury  Could you please try the following? In S32DS, go to Help → Install New Software.... This will open the installation window. In the Work with: field, enter the following update site: https://www.nxp.com/lgfiles/updates/Eclipse/S32DS_3.6  A list of available updates should appear, similar to the shown below. Check if you can find S32 Design Studio S32K3xx Development Package in the list and try installing it. VaneB_0-1789057150680.pngVaneB_0-1789057150680.pngVaneB_0-1789057150680.pngVaneB_0-1789057150680.pngVaneB_0-1789057150680.png If the package does not appear or the installation is unsuccessful, I would recommend updating to the latest S32DS version. It is possible that the current installation is missing some components or that something became corrupted during installation/update. Re: Installing RTD for S32K312 Hi @durga_choudhury  Please note that the provided link is not a regular web address. It corresponds to an update site used by S32DS to access available software packages and updates. To view the complete update sites list, open the S32DS Extensions and Updates window and select Manage Sites. There you will find all update sites recognized by the IDE. Re: Installing RTD for S32K312 Hi @VaneB  Unfortunately it is not working for me: durga_choudhury_0-1789083559046.pngdurga_choudhury_0-1789083559046.pngdurga_choudhury_0-1789083559046.png Re: Installing RTD for S32K312 Hi @VaneB  Thanks for your support. Can you please double check the URL? If I try to update it from this, I get an error from S32 DS, as follows: durga_choudhury_0-1789063889394.pngdurga_choudhury_0-1789063889394.png If I try to access it over a REST-type application, e.g. wget, I get a HTTP error 404 (Not found). Could it be internal to NXP (i.e. not on a public facing server)? 
查看全文
S32K312用RTDの取り付け 私はS32K312のために、S32 Design Studio v 3.6.6 で以下の開発環境を設定しようとしています。 1. SW32K3_S32M27x_RTD_R23-11_7.0.1_D2603_DesignStudio_updatesite.zip をダウンロードしました。 2. S32 Design Studio 3.6.6で「S32拡張とアップデート」を開いたWindows 11で動作し、S32K3のリアルタイム・ドライバをインストールしました(示す通り): durga_choudhury_0-1788877584959.pngdurga_choudhury_0-1788877584959.pngdurga_choudhury_0-1788877584959.pngdurga_choudhury_0-1788877584959.pngdurga_choudhury_0-1788877584959.pngdurga_choudhury_0-1788877584959.pngdurga_choudhury_0-1788877584959.pngdurga_choudhury_0-1788877584959.png 3. IDEを再起動するよう促されたら(PCの再起動も試しました) これではK3ファミリのサポートが見当たりません。「新規プロジェクト」ダイアログには、このオプションは表示されません。 durga_choudhury_1-1788877756997.pngdurga_choudhury_1-1788877756997.pngdurga_choudhury_1-1788877756997.pngdurga_choudhury_1-1788877756997.pngdurga_choudhury_1-1788877756997.pngdurga_choudhury_1-1788877756997.pngdurga_choudhury_1-1788877756997.pngdurga_choudhury_1-1788877756997.png 下記のように「S32K3XX」ドライバーをインストールしようとすると: durga_choudhury_2-1788877862245.pngdurga_choudhury_2-1788877862245.pngdurga_choudhury_2-1788877862245.pngdurga_choudhury_2-1788877862245.pngdurga_choudhury_2-1788877862245.pngdurga_choudhury_2-1788877862245.pngdurga_choudhury_2-1788877862245.pngdurga_choudhury_2-1788877862245.png 以下のようなエラーが表示されます。 durga_choudhury_3-1788877910412.pngdurga_choudhury_3-1788877910412.pngdurga_choudhury_3-1788877910412.pngdurga_choudhury_3-1788877910412.pngdurga_choudhury_3-1788877910412.pngdurga_choudhury_3-1788877910412.pngdurga_choudhury_3-1788877910412.pngdurga_choudhury_3-1788877910412.png この一連のプロセスをS32DS v.6.2で繰り返すと少し改善されました。「新しいプロジェクト」ダイアログにK312のオプションが表示されていますが、SDKは表示されていません。 durga_choudhury_4-1788878190320.pngdurga_choudhury_4-1788878190320.pngdurga_choudhury_4-1788878190320.pngdurga_choudhury_4-1788878190320.pngdurga_choudhury_4-1788878190320.pngdurga_choudhury_4-1788878190320.pngdurga_choudhury_4-1788878190320.pngdurga_choudhury_4-1788878190320.png 私は何が間違っているのでしょうか? Re: Installing RTD for S32K312 こんにちは、 @VaneBさん 残念ながら、S32DS 3.6.6 には同等の機能がありません。また、RTDのバージョンを7.0.1から6.0.0にダウングレードしてみました。 3.6.6で動作する特定のバージョンはありますか? Re: Installing RTD for S32K312 こんにちは、 @durga_choudhuryさん このスクリーンショットは私のS32DS 3.6.10のものです。インストール;しかし、あなたのIDEでも同様のセットアップが見られるはずです。 VaneB_0-1788893776567.pngVaneB_0-1788893776567.pngVaneB_0-1788893776567.pngVaneB_0-1788893776567.pngVaneB_0-1788893776567.pngVaneB_0-1788893776567.pngVaneB_0-1788893776567.pngVaneB_0-1788893776567.png また、あなたが共有してくれたスクリーンショットを見る限り、RTD 7.0.1をインストールできているのがわかります。RTD 7.0.1はS32K3開発パッケージに依存しているため、すでにそのパッケージがインストールされている可能性が高いです。 Re: Installing RTD for S32K312 こんにちは、 @VaneBさん あなたのコメントについて、もう少し詳しく説明してください。 S32K1xx用の「開発パッケージ」がインストールされているのを確認しました(これも私が使っているMCUファミリです): durga_choudhury_0-1788891225434.pngdurga_choudhury_0-1788891225434.pngdurga_choudhury_0-1788891225434.pngdurga_choudhury_0-1788891225434.pngdurga_choudhury_0-1788891225434.pngdurga_choudhury_0-1788891225434.pngdurga_choudhury_0-1788891225434.pngdurga_choudhury_0-1788891225434.png しかし、K3には同様のものは見当たらない。 では、どうやってインストールすればいいのでしょうか?繰り返しますが、これまでに私がやったことは以下の通りです: 1. SW32K3_S32M27x_RTD_R23-11_7.0.1_D2603_DesignStudio_updatesite.zip をダウンロードしました 2. S32 DS v 3.6.6にアップデートサイトとして追加しました。 3. 以下のものをインストールしました。 durga_choudhury_1-1788891394005.pngdurga_choudhury_1-1788891394005.pngdurga_choudhury_1-1788891394005.pngdurga_choudhury_1-1788891394005.pngdurga_choudhury_1-1788891394005.pngdurga_choudhury_1-1788891394005.pngdurga_choudhury_1-1788891394005.pngdurga_choudhury_1-1788891394005.png Re: Installing RTD for S32K312 こんにちは、 @durga_choudhuryさん S32DS 3.6.6からインストール時には、S32K3開発パッケージがインストールされていないようです。 S32DS 3.6.2に関して、RTD 7.0.1はS32DS 3.6.4を使用して開発および検証されたことにご注意ください。したがって、S32DS 3.6.4 の使用をお勧めします。または、互換性を確保し、潜在的な問題を回避するために、より新しいリリースを使用してください。 他に確認すべき点として、ツールチェーンが挙げられます。プロジェクトを作成する際は、NXP GCC 10.2.0がインストールされ、プロジェクトツールチェーンとして選択されていることを確認してください。 BR、VaneB Re: Installing RTD for S32K312 こんにちは、 @durga_choudhuryさん 私の環境では、RTD 7.0.0を使用しています。S32DS 3.6.6と共にインストールされました。しかし、前述のとおり、これらのバージョン間でセットアップ方法が非常に似ているため、RTD 7.0.1は問題なく動作するはずです。 設置の詳細を教えていただけますか? Re: Installing RTD for S32K312 こんにちは、 @VaneBさん サポートありがとうございます。URLをもう一度確認してもらえますか?この方法でアップデートしようとすると、S32 DS から次のようなエラーが発生します。 durga_choudhury_0-1789063889394.pngdurga_choudhury_0-1789063889394.pngdurga_choudhury_0-1789063889394.pngdurga_choudhury_0-1789063889394.pngdurga_choudhury_0-1789063889394.pngdurga_choudhury_0-1789063889394.png 例えば、RESTタイプのアプリケーションでアクセスしようとすると、wgetを実行すると、HTTPエラー404(見つかりません)が発生します。 それはNXP内部の問題かもしれません(つまり、(公開サーバーではない)? Re: Installing RTD for S32K312 こんにちは、 @durga_choudhuryさん 以下の方法を試していただけますか?S32DSでは「新しいソフトウェアをインストールする→ヘルプ」へ行きます...これによりインストールウィンドウが開きます。「作業対象:」フィールドに、次の更新サイトを入力します。 https://www.nxp.com/lgfiles/updates/Eclipse/S32DS_3.6 利用可能なアップデートの一覧が、以下に示すような形で表示されます。リストにS32 Design Studio S32K3xx開発パッケージが見つかるか確認し、インストールを試してみてください。 VaneB_0-1789057150680.pngVaneB_0-1789057150680.pngVaneB_0-1789057150680.pngVaneB_0-1789057150680.pngVaneB_0-1789057150680.png パッケージが表示されなかったりインストールが失敗した場合は、最新のS32DSバージョンへのアップデートをおすすめします。現在のインストール環境に一部のコンポーネントが不足しているか、インストール/アップデート中に何らかの破損が発生した可能性があります。 Re: Installing RTD for S32K312 こんにちは、 @VaneBさん 以下に、私が試した2つのファイルを示します(どちらも同じ問題が発生しました)。 durga_choudhury_0-1789048352154.pngdurga_choudhury_0-1789048352154.pngdurga_choudhury_0-1789048352154.pngdurga_choudhury_0-1789048352154.png S32DSに関する情報は以下のとおりです。 durga_choudhury_1-1789048467186.pngdurga_choudhury_1-1789048467186.pngdurga_choudhury_1-1789048467186.pngdurga_choudhury_1-1789048467186.png 以下に、インストール手順の詳細を、1枚のスクリーンショットに収まる範囲で示します。他に何か情報が必要ですか? durga_choudhury_2-1789048687291.pngdurga_choudhury_2-1789048687291.pngdurga_choudhury_2-1789048687291.pngdurga_choudhury_2-1789048687291.png Re: Installing RTD for S32K312 こんにちは、 @VaneBさん 残念ながら、私の環境では動作しません。 durga_choudhury_0-1789083559046.pngdurga_choudhury_0-1789083559046.pngdurga_choudhury_0-1789083559046.png Re: Installing RTD for S32K312 こんにちは、 @durga_choudhuryさん 提供されたリンクは通常のウェブアドレスではないことにご注意ください。これはS32DSが利用可能なソフトウェアパッケージやアップデートにアクセスするためのアップデートサイトに対応しています。 更新サイトの完全なリストを表示するには、S32DS拡張機能と更新ウィンドウを開き、「サイトの管理」を選択します。そこにはIDEが認識するすべての更新サイトが見つかります。
查看全文
在 i.MX8M Plus 和 TIM-VX/VSINPU 上,GC7000UL 通用计算推理路径似乎仅支持 NPU。 板/电路板支持包。: i.MX8M Plus,aarch64 Galcore 版本 6.4.11.p2.745085 ONNX 运行时,带有 VSINPUExecutionProvider(静态链接到 libtim-vx.so) Vivante OpenCL ICD 已存在且功能正常(Vivante.icd → libVivanteOpenCL.so) 目标: 专门在 GC7000UL 3D GPU 核心上运行 ResNet50 推理基准测试(MLPerf loadgen 测试框架),以便与已收集的现有 NPU(VIP8000Nano)和 CPU 基准测试结果进行比较。 已确认有效的功能: 通过 Vivante OpenCL ICD 使用 clGetPlatformIDs/clGetDeviceIDs 可以清晰地枚举同一平台下的两个独立设备: 设备 0:GC7000UL.6204.0000 设备 1:VIP8000Nano-S+I.8002.0000 两者都报告 CL_DEVICE_TYPE_ACCELERATOR,没有错误,通过链接到 libOpenCL.so → libGAL.so 的最小 C 测试程序确认。 是什么阻碍了通过 ORT 进行 GPU 调度: ort.get_available_providers() 仅返回 ['VSINPUExecutionProvider', 'CPUExecutionProvider'] — 没有基于 OpenCL 的 EP。 VSINPUExecutionProvider 静态链接到 libtim-vx.so(OVXLIB/vsi_nn_* API)。libtim-vx.so 和 libGAL.so 的符号/字符串转储显示没有 DEVICE_INDEX/DEVICE_ID 风格的环境变量或配置表面——只有行为切换(VIV_VX_ENABLE_SHADER、VSI_NN_ENABLE_* 等)。 libGAL.so 确实在原始 HAL 层导出了 gcoHAL_SetDeviceIndex/gcoHAL_GetCurrentDeviceIndex,但是从 OVXLIB/TIM-VX 到该调用没有明显的管道,这表明 VSINPU 使用的图形编译器可能被硬编码为仅针对 NPU 核心,而不管设备索引如何。 具体问题: 此电路板支持包 (galcore 6.4.11.p2) 上的 TIM-VX / OVXLIB 是否支持将图编译并分发到 GC7000UL 作为通用计算目标?或者,此版本中的图编译器是否设计为仅限 NPU?我如何验证是否可以以这种方式运行它? 如果 TIM-VX 上游支持 GPU 目标图编译,但 NXP 提供的版本中未启用,是否有构建标志/SDK 元器件可以启用它? 如果无法通过 TIM-VX/ORT 获得支持,NXP 是否有推荐的方法可以直接在 GC7000UL 上运行通用推理(例如通过 OpenCL/OpenVX 层,因为该部分协议栈已被确认功能正常),或者是否有示例应用程序、SDK 组件或参考实现可供我们参考? 我目前是一名学生,正在尝试进行这项实现,并在 GPU 上运行 ORT,请问是否有任何方法或途径可以使用 GPU 进行推理? 非常感谢 IMX8MPLUS #GC7000UL Re: GC7000UL general-compute inference path on i.MX8M Plus and TIM-VX/VSINPU appears NPU-only 嗨@WaleedO , 感谢您联系恩智浦技术支持。 要在 GPU 上运行推理,您应该使用 GPU 委托,它允许由 GPU 加速支持的操作,而不是完全在 CPU 上运行。 我建议您查看我们的机器学习用户指南,以便更好地了解可用的执行后端、委托配置、支持的框架和示例应用程序。该指南还包含逐步示例,可以帮助您验证 GPU 委托是否已正确加载以及您的模型是否按预期执行。 如果在安装或执行过程中遇到任何问题,请分享您的模型、BSP 版本以及您正在使用的命令,我将很乐意为您提供进一步的帮助。 此致, 亚历杭德罗·加西亚 Re: GC7000UL general-compute inference path on i.MX8M Plus and TIM-VX/VSINPU appears NPU-only 你好@Chavira 很高兴见到你。 查阅文档后发现,GPU 委托和 OpenCL 路径是在 i.MX 95/952 GPU(Arm Mali G310)中使用。我目前正在研究IMX8MPLUS。IMX8M Plus 的架构如下:VX 代理 ==> TIM-VX ==> GPU/NPU(统一驱动程序) ==> I.MX 8 系列 NPU 和 GPU(GC7000、GC7000L、GC7000UL)。根据文件记载。 目前我正在使用 ONNX 和 ORT。当我运行该程序时,它默认在 NPU 上运行。是否有办法使用 OpenCL 在IMX8MPLUS GPU 上工作?或者是否有任何手动覆盖或我可以实现的技术,以便我可以手动将编译目标设置为 NPU 或/和 GPU? 非常感谢您的回复。 亲切的问候, IMX8MPLUS #TIM-VX #VX-delegate Re: GC7000UL general-compute inference path on i.MX8M Plus and TIM-VX/VSINPU appears NPU-only 你好, 是的,还有一条可能的途径,但我不会尝试强制 VSINPU 执行提供程序使用 GC7000UL。 您的结果强烈表明,当前的 NXP TIM-VX/OVXLIB 版本主要针对 VIP8000 NPU 进行了布线。libGAL.so 中的 gcoHAL_SetDeviceIndex() 函数本身并不能将 NN 图重定向到 GPU。 首先在 ONNX 运行时环境之外,使用小型模型直接测试 TIM-VX/OpenVX。 检查您的特定 OVXLIB 是否公开了 GC7000UL/GPU NN 目标。 将您的 NXP TIM-VX 版本与上游 TIM-VX 版本进行比较,特别是其多设备/平台支持。 如果 TIM-VX 无法为 GC7000UL 编译,则直接使用 Vivante OpenCL/OpenVX 堆栈进行 GPU 基准测试。 对于你的 MLPerf 项目,GPU 路径不一定需要 ORT。您可以创建一个单独的 GC7000UL 后端,并将其连接到用于 CPU/NPU 的同一 LoadGen 线束。 所以我会这样组织它: MLPerf 负载生成器 → ResNet50 GPU 后端 → OpenCL/OpenVX → GC7000UL 而不是: MLPerf → ORT → VSINPU → 以某种方式强制 GPU 致以最诚挚的问候, 费萨吉
查看全文