Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
从 DPDK 池分配 mbuff 失败 大家好, 使用:LX2160 LSDK 2108 主程序 MC固件版本:10.32.0 DPDK 版本:dpdk_19_11_tags_LSDK20.04-isc-09 主进程 (DPDK):使用 [ rte_pktmbuf_pool_create("dlmempool", ] 创建 mbuff 池 辅助(DPDK)进程:使用 API [ rte_pktmbuf_alloc(mempool) ] 分配 mbuff 失败 在辅助内存池中,我可以看到内存池是正确的。我看到mbuff可用空间已满。第一次使用 rte_pktmbuf_alloc 进行 mbuff 分配时发生失败。 有什么解决办法吗?谢谢。 Re: Secondary failed allocate mbuff from DPDK Pool 谢谢,我会尝试这些方法,明天再向您汇报。 Re: Secondary failed allocate mbuff from DPDK Pool 你好, 辅助进程必须将大页映射到与主进程相同的虚拟地址。如果 ASLR 处于活动状态,则辅助内存池指针将解析到不同的虚拟地址,导致第一次内存分配失败。 echo 0 > /proc/sys/kernel/randomize_va_space   在启动主进程或辅助进程之前运行此程序。 2. 配置充足的DPMCP对象 创建与进程总数(主进程 + 辅助进程)相同的 DPMCP 对象数量。对于 1 个主要处方药 + 1 个次要处方药,您至少需要 2 个 DMPCP: export DPMCP_COUNT=3 # for 1 Primary + 2 Secondary (always provision +1 as buffer) ./dynamic_dpl.sh dpmac.X 3. 配置足够的DPIO对象 每个流程都需要自己的 DPIO 门户。公式为: (总进程数)×(每个进程的核心数 + 每个进程额外 1 个核心) 例如,1 个主处理器(2 个核心)+ 1 个辅助处理器(2 个核心)= 至少 9 个 DPIO。 export DPIO_COUNT=20 # set generously 4. 在辅助设备中正确设置黑名单/白名单设备 辅助进程不得重新初始化 I/O 设备(dpni、dpbp、dpcon、dpseci)。只有 dpio 和 dpmcp 应该由辅助节点初始化。传递正确的黑名单标志: # Secondary process example — blacklist all dpni/dpbp/dpcon, allow only dpio + dpmcp ./your_secondary_app --proc-type=secondary \ -b fslmc:dpni.X \ -b fslmc:dpbp.X \ -b fslmc:dpcon.X \ -- [app args]   或者,也可以明确地将分配给辅助节点的 dpio 和 dpmcp 对象列入白名单: ./your_secondary_app --proc-type=secondary \ -w fslmc:dpio.Y \ -w fslmc:dpmcp.Z \ -- [app args] 5. 使用 --proc-type=secondary EAL 参数 确保备用服务器使用正确的 EAL 标志启动: ./your_secondary_app -c -n 1 --proc-type=secondary ...   或者使用 --proc-type=auto 让 DPDK 自动检测。 6. 验证辅助内存池查找 在辅助节点中,不要再次调用 rte_pktmbuf_pool_create 。相反,查找主节点创建的现有池: // In secondary process: struct rte_mempool *mempool = rte_mempool_lookup("dlmempool"); if (mempool == NULL) { // Error: pool not found — ASLR or hugepage mapping issue } struct rte_mbuf *m = rte_pktmbuf_alloc(mempool);     如果 rte_mempool_lookup 返回一个有效的非 NULL 指针,但 rte_pktmbuf_alloc 仍然返回 NULL,则问题几乎肯定是辅助线程/核心的 DPIO 门户没有被初始化。   此致 Re: Secondary failed allocate mbuff from DPDK Pool 感谢@Bio_TICFSL的快速解决方案
View full article
S32K31XEVB-Q100FlexCAN0 — Loopback works fine, but no reception with external CANoe Tool Board: S32K311-EVB Module: FlexCAN0 Tool: Vector CANoe connected via J8 connector Debug probe:  J-Link  I am implementing the CAN protocol on the S32K311-EVB using FlexCAN0. Loopback mode test (working): I first implemented and tested FlexCAN0 in internal loopback mode. This worked successfully — messages transmitted were correctly received back through my "void CanIf_RxIndication(const Can_HwType* Mailbox, const PduInfoType* PduInfoPtr )"  handling function, confirming that my basic FlexCAN0 configuration (clock setup, bit timing, message buffer initialization) is functioning correctly. External communication test (not working): I then moved to testing external CAN communication: Configure PTA6 and PTA7 pin in pin configuration. Connected Vector CANoe to the board via the J8 connector. In CANoe configuration, I unchecked "CAN Loopback Mode." Attach 12 V Adapter  Started CANoe transmission — CANoe shows it is sending CAN frames. However, on the S32K311 side, nothing is received — CanIf_RxIndication(the same function that worked correctly in loopback mode) is never called/triggered. For debugging i use segger RTT viewer using JTAG Configuration Sami2098_0-1789478804307.pngSami2098_0-1789478804307.pngSami2098_0-1789478804307.png Sami2098_1-1789478831337.pngSami2098_1-1789478831337.pngSami2098_1-1789478831337.png Sami2098_2-1789478911944.pngSami2098_2-1789478911944.pngSami2098_2-1789478911944.png Sami2098_3-1789478932611.pngSami2098_3-1789478932611.pngSami2098_3-1789478932611.png  Best regards.   Re: S32K31XEVB-Q100FlexCAN0 — Loopback works fine, but no reception with external CANoe Tool Hello @Sami2098, Could you share RTD version you are currently using? There are some examples in our community you can use as reference:  Re: CAN Example for S32K311 - NXP Community Example S32K312 CAN Transmit & Receive Using Polling mode DS3.5 RTD300 [RTD600 MCAL & IP] S32K3X4EVB-T172 FlexCAN Example Interrupt/Polling FlexCAN configuration overall looks OK. Can you confirm PTA6/7 are configured as input and output, respectively, and you are indeed calling Siul2_Port_Ip_Init() API to initialize Port? Julin_AragnM_2-1789514266922.pngJulin_AragnM_2-1789514266922.pngJulin_AragnM_2-1789514266922.png Since you are using S32K1XEVB, transceiver used is FS23, and when the FS23 is in Debug mode, the CAN transceiver is set to Active mode by default, thus there is no need to set CAN_MODE = 0b1x. I would also suggest checking that the bitrate and sampling point configured is the same between S32K311<->CANoe. Lastly, if you have a logic analyzer or an oscilloscope, could you share the CANTXD, CANRXD, CANH and CANL signals? Best regards, Julián Re: S32K31XEVB-Q100FlexCAN0 — Loopback works fine, but no reception with external CANoe Tool Hi Julián_AragónM Thanks for looking into this. I found the root cause — it was actually a CANoe channel bus configuration issue on my end, not a problem with the S32K311 CAN driver configuration. After correcting the CANoe Vector configuration, reception is working fine now. Follow-up question: I'm currently running at 500 kbps, and I understand that if I switch to a different baud rate (e.g., 125 kbps), several dependent parameters need to be recalculated — such as the Prescaler, Propagation Segment, Phase Segment 1, Phase Segment 2, and Resync Jump Width — to maintain correct bit timing and sample point relative to the CAN peripheral clock. Could someone point me to a reference/guide document that explains: How these bit timing parameters (Prescaler, Prop Seg, PS1, PS2, SJW) relate to and are derived for different target baud rates. Recommended sample point ranges for different baud rates in an automotive/industrial context. Any official NXP application note or reference specific to the S32K3xx FlexCAN MCAL (AUTOSAR) configuration tool for bit timing calculation. I'm using the MCAL layer in AUTOSAR mode (S32 Configuration Tool for Can driver configuration), so a guide aligned with this configuration flow (rather than register-level FlexCAN programming alone) would be especially helpful. Thanks in advance for your guidance. Re: S32K31XEVB-Q100FlexCAN0 — Loopback works fine, but no reception with external CANoe Tool Hello @Sami2098, 1. The chapter 73.3.10.8 (Protocol timing) from S32K3XX Reference Manual Rev. 12 explains bit timing configuration, and its various parameters. 2. This really depends on your application and configuration; however, nominal bitrates include 125 kbps, 250 kbps, and 500 kbps. 3. You can refer to our FlexCAN bit timing calculation sheet. You can also refer to the S32K3XX FlexCAN with RTD Training sildes. Best regards, Julián
View full article
S32DS for ARM 2018.R1 デバッグ問題 ARM 2018.R1用のS32DSでチップのデバッグ時に問題が発生しS32K146、以下の通りです: 送信後にGDBバージョンを特定できませんでした:D:\S32DS\eclipse\./Cross_Tools/gcc-arm-none-eabi-4_9/bin/arm-none-eabi-gdb --version、応答: しかし、Jlinkはチップの編集や消去、プログラムが可能です。私はARM 2018.R1のS32DSでデバッグしていません。助けてください。ありがとうございます! Re: S32DS for ARM 2018.R1 debug Problem Hi@lyz あなたの質問の意味がよく分かりませんでした。エラーのスクリーンショットを投稿してもらえますか?
View full article
S32DS for ARM 2018.R1 调试问题 使用 S32DS for ARM 2018.R1 调试 S32K146 芯片时出现问题,具体如下: 发送以下命令后无法确定 GDB 版本:D:\S32DS\eclipse\../Cross_Tools/gcc-arm-none-eabi-4_9/bin/arm-none-eabi-gdb --version,响应如下: 但是,Jlink 可以连接、擦除和编程芯片。我现在无法使用 S32DS for ARM 2018.R1 进行调试,请帮帮我,谢谢! Re: S32DS for ARM 2018.R1 debug Problem 嗨@lyz 我不太明白你的问题。能否提供一下错误截图?
View full article
SC18IM704 不工作 大家好 我使用 STM32F407 与 SC18IM704 芯片进行 UART 通信。STM32 的 UART 外设成功地向 tx 发送了数据,但是 rx 上没有来自 SC18IM704 的反馈。主板开机时。UART 波特率为 9600 位/秒。 该电路板的示意图如图所示。 3046B74B-E9DE-4e11-8E23-9134E0817F20.png3046B74B-E9DE-4e11-8E23-9134E0817F20.png 我使用 SC18IM704 的读取版本功能 ID 命令,如图所示 SDS1204X_HD_JPG_1.jpgSDS1204X_HD_JPG_1.jpg 没有 SC18IM704 的数据反馈 I2C UART Re: SC18IM704 does not work 你好、 根据 SC18IM704 数据表,开机后,SC18IM704 会向主机发送两个字节。开机后你会收到这两个字节吗? JozefKozon_0-1779954086888.pngJozefKozon_0-1779954086888.png 如果您没有收到这两个字节,请检查 RESET 引脚是否为高电平。请移除 TX 和 RX 线路上的 10k 上拉电阻。只有 RX 引脚需要上拉电阻,并且只有当您想保持 SC18IM704 处于深度省电模式时才需要上拉电阻。否则,TX 和 RX 线路上不应使用上拉电阻。 致以最崇高的敬意 约瑟夫 Re: SC18IM704 does not work 你好 谢谢您的确认。请移除 R106 电阻,断开 TX 引脚与 MCU 的连接。为了确保 TX 引脚处于浮空状态(不被 MCU 保持在高位)。然后打开 SC18IM704 的电源,用示波器测量 SC18IM704 上的 TX 引脚,查找 " OK ",两个字节 0x4F 和 0x4B。 如果你仍然看不到 " OK " 请使用 RESET 引脚进行重置。 1.用示波器观察 TX 2。按住 RESET LOW (GND) 约 10 ms 3.版本到 HIGH 4.查看是否出现"OK"   致以最崇高的敬意 约瑟夫 Re: SC18IM704 does not work 你好,约瑟夫: 我检查 SC18IM704 的 RESET 引脚是否为高电平 (3.3V)在 SC18IM704 上电后用示波器测量。我没有通过示波器找到两个字节('OK')。我去掉了 TX 和 RX 线路上的 10k 上拉电阻。我使用四个 SC18IM704 芯片,情况也是一样。 我不知道如何解决这个问题,请帮帮我。 Re: SC18IM704 does not work 您好,我也遇到了类似的问题,我已经移除了 Rx 和 Tx 电阻,但仍然显示不正常。 接下来常见的故障排除步骤有哪些?或者是否有推荐的设计方案可以参考? Re: SC18IM704 does not work 我也遇到了同样的问题。 几年前我用 SC18IM704 制作了一块电路板,它工作正常。 然而,最近当我再次组装同样的电路板时,却遇到了完全无法工作的板。具体来说,向复位引脚发送复位信号没有得到任何确认(OK)。此外,向RX引脚发送命令没有任何响应——版本信息和I2C命令都无法正常工作。 由于我手头正好有一批旧货,我就试着换上去,结果运行正常。 某些批次的集成电路本身似乎存在重大问题。请在本帖中分享有问题的地块。 -工作 18IM704 355.101ZXD23 13 18IM704 355.101ZXD23 25 18IM704 355.103 ZXD22 32 不工作 18IM704 265.102ZXD21 35
View full article
SC18IM704は動作しません やあみんな! 私はSC18IM704チップとのUART通信にSTM32F407を使用しました。STM32のUARTペリフェラルはtxに正常にデータを送信しましたが、ボードの電源投入時にrxのSC18IM704からフィードバックがありませんでした。UARTのボーレートは9600ビット/秒です。 基板の概略図を図に示す。 3046B74B-E9DE-4e11-8E23-9134E0817F20.png3046B74B-E9DE-4e11-8E23-9134E0817F20.png 図に示すように、SC18IM704のRead version function IDコマンドを使用します。 SDS1204X_HD_JPG_1.jpgSDS1204X_HD_JPG_1.jpg SC18IM704に関するデータフィードバックは提供されていません。 I2C UART Re: SC18IM704 does not work こんにちは、 SC18IM704のデータシートによると、SC18IM704は電源投入後、ホストに2バイトを送信します。電源投入後、これらの2バイトを受信しますか? JozefKozon_0-1779954086888.pngJozefKozon_0-1779954086888.png これらの2バイトを受信していない場合は、RESETピンがハイになっているかどうかを確認してください。TXラインとRXラインにある10kΩのプルアップ抵抗を取り外してください。RXピンのみにプルアップ抵抗が必要であり、SC18IM704をディープパワーダウンモードに維持したい場合に限ります。それ以外の場合は、TXラインとRXラインにプルアップ抵抗を接続してはいけません。 敬具、 ヨゼフ Re: SC18IM704 does not work こんにちは、 ご確認いただきありがとうございます。TXピンをMCUから切り離すには、R106抵抗を取り外してください。TXピンがフローティング状態(MCUによってハイレベルに保持されていない状態)であることを確認してください。次に、SC18IM704の電源を入れ、オシロスコープを使用してSC18IM704のTXピンを測定し、「OK」、つまり2バイトの0x4Fと0x4Bを探します。 それでも「OK」が表示されない場合は、RESETピンを使用してリセットを実行してください。 1. オシロスコープでTXを観察する 2. RESET LOW (GND) を約10ミリ秒間保持します。 3. HIGHにリリース 4. 「OK」が表示されるか確認してください。   敬具、 ヨゼフ Re: SC18IM704 does not work こんにちは、ヨゼフさん。 SC18IM704のRESETピンがハイ(3.3V)であることを確認しました。SC18IM704の電源を入れた後、オシロスコープで測定しました。オシロスコープで2バイト('OK')を見つけることができませんでした。TXラインとRXラインの10kΩプルアップ抵抗を取り外しました。私はSC18IM704チップを4個使用していますが、状況は同じです。この問題の解決方法がわかりません。助けてください。 Re: SC18IM704 does not work こんにちは、私も同様の問題に直面しています。Rx と Tx の抵抗器を取り外しましたが、それでもまだ正常と表示されません。 次によく考えられるトラブルシューティングのステップや、検討できるおすすめの**デザイン**はありますか? Re: SC18IM704 does not work 私も同じ問題に直面しています。 数年前にSC18IM704を使って基板を製作しましたが、正常に動作しました。 しかし、最近同じ基板を再度組み立てたところ、全く動作しないという問題が発生しました。具体的には、リセットピンにリセット信号を送っても、応答(OK)は返ってきません。さらに、RXピンにコマンドを送信しても応答がなく、バージョン情報もI2Cコマンドも機能しない。 手元に古いロットがあったので、それを入れ替えてみたところ、正常に動作しました。 特定のロットにおいて、IC自体に重大な問題があるようです。このThreadで問題のあるロットもぜひ共有してください。 -仕事 18IM704 355.101 ZXD23 13 18IM704 355.101 ZXD23 25 18IM704 355.103 ZXD22 32 - 機能しない 18IM704 265.102 ZXD21 35
View full article
HSE FWの真正性を確認する方法 今、NXPエンジニアが提供した「HseLib_HseFwInstall」ソフトウェアを使ってHSE FWをインストールしました。 お客様から質問があります:HSE FW自体に署名がないと考えているため、HSE FWの真正性をどのように確認すればよいか。 画面截图 2026-09-17 182416.png 改ざんされやすいと。 HSEのFWの真正性を証明するためのセキュリティ制度があると教えてくれる人はいますか? Re: How to confirm HSE FW authenticity おそらく新しいチケットを作成することも可能です: https://www.nxp.com/support/support:SUPPORTHOME HSE文書は安全なファイルなので、すでに手続きを済ませている場合は以下の手順に従う必要があります。 https://www.nxp.com/docs/en/user-guide/nxp-secure-access-rights-registration.pdf プレゼンテーションを共有できるかもしれません。 Re: How to confirm HSE FW authenticity この質問に答えてくださりありがとうございます。これらの内容に関する参考文献をどうやって見つければよいか教えていただけますか?In まだこれらの内容には気づいていません。 Re: How to confirm HSE FW authenticity こんにちは、 HSE FWは確かに保護されており、単なる署名なしバイナリではありません。 ファームウェアイメージは、配布前にNXPによって暗号化および署名されます。 NXPは製造時にHSEサブシステムに ROM鍵 を事前プログラムします(ハードウェアの信頼の基点)。これらの鍵は外部からは決してアクセスできません。 インストール中、オンチップのセキュアBAFは、イメージをフラッシュメモリに書き込む前に、これらのROMキーを使用してイメージを認証します。改ざんされた画像は拒否されます。 結論として、NXPの秘密署名鍵がなければ、改変されたHSEファームウェアをインストールすることは不可能です。その信頼はシリコンに根ざしている。
View full article
S32DSライセンスの有効期限が切れます こんにちは、 S32DS を開くと次のメッセージが表示されます。   Arm用Design Studio アクティベーションID: 8AEC-51FD-AB5B-6A4D 評価日数: 9 機能バージョン: 2.2 機能のステータス: 評価 (9 日間) ライセンスを延長するには何をする必要がありますか? よろしくお願いいたします。 サンドラ Re: S32DS license expiring こんにちは、 ライセンスを延長するよう管理者に通知しました。 よろしくお願いいたします。 ピーター Re: S32DS license expiring こんにちは、 ライセンスは 2030 年まで延長されました。 よろしくお願いいたします。 ピーター Re: S32DS license expiring こんにちは、 画像の問題でS32DSをアクティベートできませんでした。この問題を解決する方法を教えていただけますか? HelenLi_0-1778831877838.pngHelenLi_0-1778831877838.pngHelenLi_0-1778831877838.png Re: S32DS license expiring 助けて! 私のS32DS IDEライセンスがもうすぐ期限切れです。使用期間を延長するのを手伝ってもらえますか?ありがとう ! ライセンス番号:1A99 90A8 2F06 339B Re: S32DS license expiring こんにちは: アクティベーションID: 04E9-8F5A-8B1F-F9C8 ライセンスの有効期間を延長する必要がある。 Re: S32DS license expiring こんにちは! 私のS32DS IDEライセンスがもうすぐ期限切れです。使用期間を延長するのを手伝ってもらえますか?ありがとう ! ライセンス番号:EA09-8465-A8E8-F07B Re: S32DS license expiring こんにちは、ピーターさん。 私のS32DS v3.5のライセンスが期限切れになりました。2030年9月16日まで延長する手助けをしてもらえますか? フルフィルメントID:113445398 マシンID:A5883F5CCBF60C6BECC55C5A0CC9D1C68DA192AD 起動コード:A060-A074-B014-D67C ライセンスページには「このライセンスの返却は許可されません」と表示され、延長ボタンはありません。 スクリーンショットを添付しました。 ありがとう!
View full article
LPUART1 TX FIFO 失败 大家好, 我正在使用 S32K311 和一个自定义的裸机驱动程序,用于两个配置完全相同的 LPUART 实例(115200 8N1,启用 TX/RX FIFO,相同的初始化序列)。LPUART0 在启用 TX 和 RX FIFO 的情况下都能完美工作。LPUART1 不具备以下功能: TX:对 DATA 进行一次写入(或当 FIFO[TXFE]=1 时进行一次推送)会导致同一个字节在 TX 引脚上物理传输 3 次。这不是垃圾/噪音——这是我写出的确切字节,连续重复了 3 次。使用示波器/逻辑分析仪在 TX 引脚 (GPIO71) 上进行了验证。 RX:在此实例上启用 RX FIFO 时,接收行为也不正常(没有可用数据返回),这与 LPUART0 不同。 我已经排除/确认了以下几点: 波特率/时钟正确:我没有看到损坏或错位的字符,只有正确的字节值重复了 3 次,这表明并非过采样/波特率 (OSR/SBR) 计算错误。 时钟门控在两个实例中均已启用:以相同的方式(相同的分区,顺序请求 ID)为 LPUART0 和 LPUART1 启用了 MC_ME 外设时钟请求,并且具有相同代码路径的 LPUART0 工作正常。 通过反复试验找到的解决方法: 禁用 LPUART1 上的 TX FIFO (FIFO[TXFE]=0) 可以解决发送问题(每次写入一个帧,使用 STAT[TDRE] 而不是 WATER[TXCOUNT] 进行流量控制)。 要使 LPUART1 上的 RX 正常工作,必须启用 RX FIFO (FIFO[RXFE]=1)。 因此,LPUART1 上唯一有效的配置是:TX FIFO 禁用,RX FIFO 启用——这与 LPUART0 正好相反(LPUART0 中两个 FIFO 都启用可以正常工作),并且显然会降低 TX 吞吐量/突发能力。 问题: 是否存在与 TX FIFO 导致帧重复相关的 S32K311 LPUART1 实例(或特定的 LPUART 实例限制)的已知勘误? 除了 FIFO[TXFE]、WATER、BAUD[TDMAE] 之外,该设备上的 LPUART1 和 LPUART0 是否还有其他需要特殊处理的寄存器/位? 是否有人观察到,在特定的 LPUART 实例上,而不是所有实例上,存在“启用 TX FIFO 时,字节传输 3 次”的相同行为? 任何关于勘误表、芯片修订说明或已知解决方法的线索都将不胜感激。 Re: LPUART1 TX FIFO Failed 嗨@ijm1 , 我曾观察到,当时钟域频率之间的比率与任何支持的时钟选项都不匹配时,硬件模块会出现不可预测的行为。系统时钟必须始终按照 RM 中列出的有效时钟选项之一进行配置。 关键要求是时钟之间的比率必须完全按照定义保持不变。 如RM表151(针对S32K312、S32K311和S32K310)所述: “……所选的任何时钟频率都必须符合系统时钟配置中所示的相同时钟分频比。” 请您先核实一下好吗? 问候, 丹尼尔
View full article
如何确认 HSE FW 的真伪 现在,我使用了NXP工程师提供的“HseLib_HseFwInstall”软件来安装HSE固件。 我们的客户提出了一个问题:如何确认 HSE 固件的真伪,因为他认为 HSE 固件本身没有任何签名。这很容易。 屏幕截图2026-09-17 182416.png被篡改。 谁能告诉我 HSE FW 是否有网络安全措施来确认 HSE FW 的真实性? Re: How to confirm HSE FW authenticity 或许您可以创建一个新的工单: https://www.nxp.com/support/support:SUPPORTHOME HSE 文件属于安全文件,因此除非您之前已经操作过,否则需要遵循以下步骤: https://www.nxp.com/docs/en/user-guide/nxp-secure-access-rights-registration.pdf 我们可以一起做一些演示。 Re: How to confirm HSE FW authenticity 感谢您回答这个问题。请问我该如何找到关于这些内容的参考资料?我在《RM758222-HSE-B 固件参考手册 - V2.2》中还没有注意到这些内容。 Re: How to confirm HSE FW authenticity 您好, HSE固件确实受到保护——它不是普通的未签名二进制文件。 固件镜像在分发前由 NXP 进行加密和签名。 NXP 在制造过程中将ROM 密钥预先编程到 HSE 子系统中(硬件信任根)。这些密钥永远无法从外部获取。 安装过程中,片上安全 BAF会使用这些 ROM 密钥来验证映像,然后再将其写入闪存。篡改过的图片会被拒绝。 结论是:如果没有 NXP 的私钥,就不可能安装修改过的 HSE 固件。信任源于硅谷。
View full article
S32DS license expiring Hi, when I open my S32DS I get following message:   S32 Design Studio for ARM ActivationId: 8AEC-51FD-AB5B-6A4D Evaluation Days: 9 Feature Version: 2.2 Feature Status: Evaluation (9 days) what do I have to do to extend my license?  Best regards Sandra Re: S32DS license expiring Hello, I have notified admin to prolong your license. Best regards, Peter Re: S32DS license expiring Hello, You license is now extended to 2030. Best regards, Peter Re: S32DS license expiring Hello, I could not active the S32DS, because the issue of picture, could you help me how to solve this problem? HelenLi_0-1778831877838.pngHelenLi_0-1778831877838.pngHelenLi_0-1778831877838.png Re: S32DS license expiring Help! My S32DS IDE  license is about to expire. Could you please help me extend its usage period? Thank you ! license : 1A99 90A8 2F06 339B Re: S32DS license expiring Hello: ActivationId: 04E9-8F5A-8B1F-F9C8 The license validity period needs to be extended. Re: S32DS license expiring Hello! My S32DS IDE license is about to expire. Could you please help me extend its usage period? Thank you ! license : EA09-8465-A8E8-F07B Re: S32DS license expiring Hi Peter, My S32DS v3.5 license expired. Could you help extend it to Sep 16,2030? Fulfillment ID: 113445398 Machine ID: A5883F5CCBF60C6BECC55C5A0CC9D1C68DA192AD Activation code: A060-A074-B014-D67C License page shows "Returning this license is not allowed", no EXTEND button. Screenshot attached. Thank you!
View full article
LPUART1 TX FIFO Failed Hi all, I'm working with an S32K311 and a custom bare-metal driver for two LPUART instances configured identically (115200 8N1, TX/RX FIFO enabled, same init sequence). LPUART0 works perfectly with both TX and RX FIFOs enabled. LPUART1 does not: TX: a single write to DATA (or a single push while FIFO[TXFE]=1) results in the same byte being physically transmitted 3 times on the TX pin. This is not garbage/noise — it's the exact byte I wrote, repeated 3 times back-to-back. Verified with an oscilloscope/logic analyzer on the TX pin (GPIO71). RX: reception does not behave correctly while the RX FIFO is enabled on this instance either (no usable data comes back), unlike LPUART0. What I've already ruled out / verified: Baud rate / clock is correct: I do not see corrupted or misaligned characters, only the correct byte value duplicated 3 times, which points away from an oversampling/BAUD (OSR/SBR) miscalculation. Clock gating is enabled for both instances: the MC_ME peripheral clock request is enabled for LPUART0 and LPUART1 in the same way (same partition, sequential request IDs), and LPUART0 with the identical code path works fine. Workarounds found by trial and error: Disabling the TX FIFO (FIFO[TXFE]=0) on LPUART1 fixes the transmit issue (single frame per write, using STAT[TDRE] instead of WATER[TXCOUNT] for flow control). Leaving the RX FIFO enabled (FIFO[RXFE]=1) is required for RX to work on LPUART1 at all. So the only configuration that works on LPUART1 is: TX FIFO disabled, RX FIFO enabled — which is the opposite of LPUART0 (where both FIFOs enabled work fine), and obviously reduces TX throughput/burst capability. Questions: Is there a known erratum for the S32K311 LPUART1 instance (or a specific LPUART instance limitation) related to the TX FIFO causing duplicated frames? Is there any additional register/bit (beyond FIFO[TXFE], WATER, BAUD[TDMAE]) that needs different handling specifically for LPUART1 vs LPUART0 on this device? Has anyone else observed this same "byte transmitted 3 times when TX FIFO is enabled" behavior on a specific LPUART instance rather than all instances uniformly? Any pointers to the errata sheet, silicon revision notes, or a known workaround explanation would be greatly appreciated. Re: LPUART1 TX FIFO Failed Hi @ijm1, I have seen unpredictable behavior in hardware modules when the ratios between clock domain frequencies do not match any of the supported clock options. The system clock must always be configured according to one of the valid clocking options listed in the RM. The key requirement is that the ratios between the clocks remain exactly as defined. As stated under Table 151 (For S32K312, S32K311, and S32K310) in the RM: "…any clock frequency selected must adhere to the same clock divider ratios shown in System clocking configurations." Could you please verify this first? Regards, Daniel
View full article
LPUART1 TX FIFO が失敗しました こんにちは、皆さん。 私はS32K311とカスタムベアメタルドライバーを使い、2つのLPUARTインスタンスを同一設定(115200 8N1、TX/RX FIFO有効、同じinitシーケンス)で使っています。LPUART0は、TX FIFOとRX FIFOの両方が有効になっている場合でも完全に動作します。LPUART1 は以下を行いません: TX: DATAへの1回の書き込み(またはFIFO[TXFE]=1の間の1回のプッシュ)により、同じバイトがTXピンで物理的に3回送信されます。これはゴミデータやノイズではありません。私が書き込んだバイトが、3回連続して繰り返されたものです。TXピン(GPIO71)をオシロスコープ/ロジックアナライザで検証しました。 RX: このインスタンスでも、LPUART0とは異なり、RX FIFOが有効になっている間は受信が正しく動作しません(使用可能なデータが返ってきません)。 既に除外/確認済みであること: ボーレート/クロックは正しいです。文字の破損や位置ずれは見られず、正しいバイト値が3回重複しているだけです。これは、オーバーサンプリング/ボーレート(OSR/SBR)の計算ミスではないことを示しています。 クロックゲーティングは両方のインスタンスで有効化されており、MC_ME周辺クロック要求は同じ方法でLPUART0とLPUART1で有効化され(同じパーティション、逐次リクエストID)、同じコードパスのLPUART0も問題なく動作します。 試行錯誤で見つけた回避策: LPUART1でTX FIFO(FIFO[TXFE]=0)を無効にすると送信の問題(書き込み1フレーム、流量制御にWATER[TXCOUNT]の代わりにSTAT[TDRE]を使用)が解決します。 LPUART1でRXを動作させるには、RX FIFOを有効にしておく(FIFO[RXFE]=1)必要があります。 LPUART1で動作する唯一の構成は、TX FIFOを無効にし、RX FIFOを有効にすることです。これはLPUART0(両方のFIFOを有効にして問題なく動作)とは逆で、明らかにTXスループットやバースト能力を低下させます。 質問: S32K311 LPUART1インスタンス(または特定のLPUARTインスタンスの制限事項)において、TX FIFOが原因でフレームが重複するという既知の不具合はありますか? このデバイスでLPUART1とLPUART0ごとに異なる扱いが必要な追加のレジスタやビット(FIFO[TXFE]、WATER、BAUD[TDMAE])はありますか? TX FIFOが有効になっているときに、すべてのLPUARTインスタンスではなく、特定のインスタンスで「バイトが3回送信される」という同じ動作を確認した人はいますか? 正誤表、シリコン改訂ノート、または既知の回避策の説明に関する情報があれば、大変ありがたいです。 Re: LPUART1 TX FIFO Failed こんにちは、 @ijm1 さん。 クロックドメイン周波数の比率がサポートされているクロックオプションのいずれとも一致しない場合、ハードウェアモジュールで予測不能な動作が発生するのを確認しました。システムクロックは、RMに記載されている有効なクロックオプションのいずれかに従って常に設定する必要があります。 重要な要件は、時計間の比率が定義されたとおりに正確に維持されることです。 RMの表151(S32K312、S32K311、およびS32K310の場合)に記載されているとおりです。 「…選択されたクロック周波数は、システムクロック構成に示されているクロック分周比と同じ比率に従わなければなりません。」 まず確認してもらえますか? よろしくお願いいたします。 ダニエル
View full article
How to confirm HSE FW authenticity Now,I Used  “HseLib_HseFwInstall”software witch is supply by NXP engineer to install HSE FW。 Our customer raise a question: how to confirm HSE FW authenticity, because he think HSE FW itself don't have any signature,.it is easy 屏幕截图 2026-09-17 182416.pngto be tampered. Who can tell me HSE FW weather have some security scheme to comfirm HSE FW authenticity? Re: How to confirm HSE FW authenticity Possibly you could create new ticket: https://www.nxp.com/support/support:SUPPORTHOME HSE documents are secure files, so following procedure is needed to follow unless you have already done it before: https://www.nxp.com/docs/en/user-guide/nxp-secure-access-rights-registration.pdf We could possibly share some presentation. Re: How to confirm HSE FW authenticity Thank you for answer this question.Could you tell me how can I find these reference about these contents.In I haven't noticed these contents yet. Re: How to confirm HSE FW authenticity Hi, HSE FW is indeed protected — it is not plain unsigned binary. The FW image is encrypted and signed by NXP before distribution. NXP pre-programs ROM keys into the HSE subsystem during manufacturing (hardware Root of Trust). These keys are never accessible externally. During installation, the on-chip Secure BAF uses those ROM keys to authenticate the image before writing it to flash. A tampered image is rejected. Bottom line: without NXP's private signing key, it is impossible to install a modified HSE FW. The trust is rooted in silicon.
View full article
セカンダリがDPDKプールからmbuffを割り当てるのに失敗しました こんにちは、皆さん。 使用機器:LX2160 LSDK 2108 メイン MCファームウェアバージョン:10.32.0 DPDKバージョン:dpdk_19_11_tags_LSDK20.04-isc-09 プライマリ ( DPDK ) プロセス: [ rte_pktmbuf_pool_create("dlmempool", ] を使用して mbuff プールを作成します。 セカンダリ(DPDK)プロセス:API [ rte_pktmbuf_alloc(mempool) ]を使用してmbuffを割り当てるのに失敗しました セカンダリーでは、mempoolが正しいとわかります。ムバフは満杯です。rte_pktmbuf_alloc を使用した最初の mbuff 割り当て時にエラーが発生します。 これに対する解決策はありますか?ありがとう。 Re: Secondary failed allocate mbuff from DPDK Pool ありがとうございます。これらのオプションを試してみて、明日までにご報告します。 Re: Secondary failed allocate mbuff from DPDK Pool こんにちは、 セカンダリプロセスは、プライマリプロセスと同じ仮想アドレスにhugepagesをマッピングする必要があります。ASLRが有効な場合、セカンダリはmempoolポインタを別の仮想アドレスに解決するため、最初の割り当てが失敗します。 echo 0 > /proc/sys/kernel/randomize_va_space   プライマリプロセスまたはセカンダリプロセスを起動する前に、これを実行してください。 2. 十分なDPMCPオブジェクトを用意する プロセスの総数(プライマリプロセス+セカンダリプロセス)と同じ数のDPMCPオブジェクトを作成します。プライマリ1個とセカンダリ1個の場合、少なくとも2個のDMPCPが必要です。 export DPMCP_COUNT=3 # for 1 Primary + 2 Secondary (always provision +1 as buffer) ./dynamic_dpl.sh dpmac.X 3. 十分なDPIOオブジェクトを用意する 各プロセスにはそれぞれ専用のDPIOポータルが必要です。その式は次のとおりです。 (総プロセス数)×(プロセスあたりのコア数+プロセスあたりの追加コア数1) 例えば、プライマリ1(2コア)+ 1セカンダリ(2コア)= 最低9DPIOの場合。 export DPIO_COUNT=20 # set generously 4. セカンダリデバイスを正しくブラックリスト/ホワイトリストに登録する 二次プロセスは、I/O デバイス (dpni、dpbp、dpcon、dpseci) を再初期化してはなりません。セカンダリ側で初期化する必要があるのは、 dpio と dpmcp のみである。正しいブラックリストフラグを渡してください。 # Secondary process example — blacklist all dpni/dpbp/dpcon, allow only dpio + dpmcp ./your_secondary_app --proc-type=secondary \ -b fslmc:dpni.X \ -b fslmc:dpbp.X \ -b fslmc:dpcon.X \ -- [app args]   または、セカンダリに割り当てられているdpioおよびdpmcpオブジェクトのみを明示的にホワイトリストに登録します。 ./your_secondary_app --proc-type=secondary \ -w fslmc:dpio.Y \ -w fslmc:dpmcp.Z \ -- [app args] 5. --proc-type=secondary EAL引数を使用する セカンダリが正しいEALフラグで起動されていることを確認してください。 ./your_secondary_app -c -n 1 --proc-type=secondary ...   あるいは --proc-type=auto を使ってDPDKを自動検出させるのも良いでしょう。 6. セカンダリでMempoolルックアップを確認する セカンダリでは、 rte_pktmbuf_pool_create 再度呼び出さないでください。代わりに、プライマリによって作成された既存のプールを検索してください。 // In secondary process: struct rte_mempool *mempool = rte_mempool_lookup("dlmempool"); if (mempool == NULL) { // Error: pool not found — ASLR or hugepage mapping issue } struct rte_mbuf *m = rte_pktmbuf_alloc(mempool);     rte_mempool_lookup が有効な非NULLポインタを返しても rte_pktmbuf_alloc がNULLを返す場合、問題はほぼ間違いなくDPIOポータルがセカンダリのスレッド/コアに対して初期化されていないことです。   よろしくお願いします。 Re: Secondary failed allocate mbuff from DPDK Pool 迅速な解決策を提供してくれた@Bio_TICFSLに感謝します。
View full article
Opinions on "Smart Energy" solar I had some door knocker salesmen around today from Smart Energy wanting to talk about solar panels. I'm interested in solar but don't have the funds to invest up front and they said something about a govt funded scheme with $0 upfront. Naturally I'm very sceptical. Would love to hear from anyone who has dealt with them. Re: Opinions on "Smart Energy" solar Hello, Sometimes a "$0 upfront" pitch actually means a third-party company puts panels on your roof for free, but they own the system. You don't get the clean energy equity, and instead, you are locked into a long-term contract (often 20 to 25 years) buying the power they generate. These can make selling your home complicated later. Best Regards
View full article
S32K31XEVB-Q100FlexCAN0 — 环回功能正常,但使用外部 CANoe 工具时无法接收信号。 板: S32K311-EVB 模块: FlexCAN0 工具:通过 J8 连接器连接的 Vector CANoe 调试探针: J-Link 我正在使用 FlexCAN0 在 S32K311-EVB 上实现 CAN 协议。 环回模式测试(正常): 我首先在内部环回模式下实现了 FlexCAN0 并进行了测试。这成功了——发送的消息通过我的“void CanIf_RxIndication(const Can_HwType* Mailbox, const PduInfoType* PduInfoPtr )”正确接收。 处理功能,确认我的基本 FlexCAN0 配置(时钟设置、位定时、消息缓冲区初始化)运行正常。 外部通信测试(失败): 然后我开始测试外部CAN通信: 在引脚配置中配置 PTA6 和 PTA7 引脚。 通过J8连接器将 Vector CANoe 连接到电路板。 在 CANoe 配置中,我取消勾选了“CAN 环回模式”。 连接12伏适配器 CANoe 开始传输——CANoe 显示正在发送 CAN 帧。 然而,在 S32K311 端,没有任何信号被接收——CanIf_RxIndication (在环回模式下正常工作的同一函数)从未被调用/触发信号。 我使用 Segger RTT Viewer 通过 JTAG 进行调试。 配置 Sami2098_0-1789478804307.pngSami2098_0-1789478804307.pngSami2098_0-1789478804307.png Sami2098_1-1789478831337.pngSami2098_1-1789478831337.pngSami2098_1-1789478831337.png Sami2098_2-1789478911944.pngSami2098_2-1789478911944.pngSami2098_2-1789478911944.png Sami2098_3-1789478932611.pngSami2098_3-1789478932611.pngSami2098_3-1789478932611.png 此致。   Re: S32K31XEVB-Q100FlexCAN0 — Loopback works fine, but no reception with external CANoe Tool 你好@Sami2098 , 请问您目前使用的是哪个RTD版本? 我们社区里有一些例子可以作为参考: 回复:S32K311 的 CAN 示例 - NXP 社区 示例 S32K312 CAN 发送和接收,使用轮询模式 DS3.5 RTD300 [RTD600 MCAL & IP] S32K3X4EVB - T172 FlexCAN 示例(中断/轮询) FlexCAN配置整体看起来没问题。请确认 PTA6/7 是否分别配置为输入和输出,并且您确实调用了 Siul2_Port_Ip_Init() API 来初始化端口? Julin_AragnM_2-1789514266922.pngJulin_AragnM_2-1789514266922.pngJulin_AragnM_2-1789514266922.png 由于您使用的是 S32K1XEVB,使用的收发器是 FS23,当 FS23 处于调试模式时,CAN 收发器默认设置为运行模式,因此无需设置 CAN_MODE = 0b1x。 我还建议检查 S32K311<->CANoe 之间配置的比特率和采样点是否相同。 最后,如果您有逻辑分析仪或示波器,能否分享一下CANTXD、CANRXD、CANH 和 CANL 信号? 此致, 朱利安 Re: S32K31XEVB-Q100FlexCAN0 — Loopback works fine, but no reception with external CANoe Tool 你好Julián_AragónM 谢谢你调查此事。我找到了根本原因——实际上是我这边的CANoe 通道总线配置问题,而不是 S32K311 CAN 驱动程序配置问题。修正 CANoe Vector 配置后,接收功能现在正常了。 后续问题: 我目前运行的波特率为500 kbps ,我知道如果我切换到不同的波特率(例如125 kbps ),则需要重新计算几个相关参数——例如预分频器、传播段、相位段 1、相位段 2 和重新同步跳转宽度——以保持相对于 CAN 外设时钟的正确位时序和采样点。 请问谁能提供一份参考资料/指南文件,解释以下内容: 这些位定时参数(预分频器、Prop Seg、PS1、PS2、SJW)如何与不同的目标波特率相关以及如何针对不同的目标波特率进行推导。 汽车/工业环境中不同波特率的推荐采样点范围。 任何与S32K3xx FlexCAN MCAL (AUTOSAR)配置工具(用于位时序计算)相关的 NXP 官方应用笔记或参考资料。 我正在使用AUTOSAR 模式下的 MCAL 层(用于 Can 驱动程序配置的 S32 配置工具),因此,如果能提供与此配置流程(而不是单独的寄存器级 FlexCAN 编程)相一致的指南,将会特别有帮助。 感谢您事先的指导。 Re: S32K31XEVB-Q100FlexCAN0 — Loopback works fine, but no reception with external CANoe Tool 你好@Sami2098 , 1.S32K3XX 参考手册 Rev. 12 中的第 73.3.10.8 章(协议定时)解释了位定时配置及其各种参数。 2. 这实际上取决于您的应用和配置;但是,标称比特率包括 125 kbps、250 kbps 和 500 kbps。 3. 您可以参考我们的FlexCAN 位时序计算表。您还可以参考S32K3XX FlexCAN 和 RTD 培训幻灯片。 此致, 朱利安
View full article
ガイダンスを求めています: OP-TEE 環境で se05x_Minimal が失敗します こんにちは、NXPコミュニティの皆さん、 ターゲットボード上でLinuxをOP-TEEで動se05x_Minimalかそうとしています。 このコミュニティ投稿( Plug and Trust MWをOP-TEEに統合する方法)で推奨されている解決策に従って、それに応じた環境を構築しました。 特に、ステップ2では、「CAAMを有効にする」を有効にせずに設定を構成しました。 この構成の結果、SE05xに接続されたI2CバスはOP-TEE(Secure World)によって管理され、標準的なLinuxのI2Cデバイスノード/dev/i2c-1はNormal World(Linux)では表示・利用できません。 Linuxユーザー空間コンソールから直接「./se05x_Minimal」を実行すると、以下のエラーが発生します: App :INFO :Running ./se05x_Minimal App :INFO :If you want to over-ride the selection, use ENV=EX_SSS_BOOT_SSS_PORT or pass in command line arguments. App :INFO :PlugAndTrust_v04.07.01_20250519 App :INFO :Using default PlatfSCP03 keys. You can use keys from file using ENV=EX_SSS_BOOT_SCP03_PATH smCom :ERROR:opening failed... Failed to open the i2c bus: No such file or directory smCom :INFO :Pass i2c device address in the format : . smCom :INFO :Example ./example /dev/i2c-1:0x48 OR ./example /dev/i2c-1 smCom :ERROR:phPalEse_i2c_open_and_configure Failed retry smCom :ERROR:I2C init Failed: retval d smCom :ERROR:phPalEse_Init Failed smCom :ERROR: Failed to create physical connection with ESE sss :ERROR:SM_I2CConnect Failed. Status 7012 App :ERROR:sss_session_open failed App :ERROR:ex_sss_session_open Failed App :ERROR:!ERROR! ret != 0. 環境およびハードウェアセットアップ:評価ボード:MCIMX8M-WEVK(i.MX 8M デュアル/クアッド) セキュアエレメントボード:OM-SE051ARD セキュアエレメント:SE05x(Plug & Trust MW v04.07.01) OS:Linux(ノーマルワールド)+ OP-TEE(セキュアワールド) ミドルウェアオプション(CMake):-DPTMW_Host=iMXLinux、-DPTMW_SMCOM=T1oI2C 注:Linuxカーネル空間のダイレクトI2C(/dev/i2c-1)が有効se05x_Minimalなら問題なく動作します。 smComは、もはやノーマルワールド環境には存在しない物理的なLinux I2Cデバイス(/dev/i2c-X)をまだ開こうとしているようです。 この環境で正常に動作させるために、何をすべきか、何を修正すべきか指示se05x_Minimal教えていただけますか? SE050 Re: Seeking guidance: se05x_Minimal fails in OP-TEE environment @Kan_Li 詳細な説明とC言語のサンプルコードをありがとうございました。 ご指導に従い、標準のPKCS#11 API(libckteec.so.0)を用いて、オプション1(OP-TEE独占I2Cセットアップ)でCアプリケーションを実装しました。 鍵生成、AESの暗号化/復号、RSA署名/検証、RSA暗号化/復号を含むすべての操作が、期待通りに完全に動作しています。 この問題解決へのサポートに感謝いたします。 Re: Seeking guidance: se05x_Minimal fails in OP-TEE environment こんにちは、 @Uc_S さん。 これは非常に優れた、そして重要な質問です。簡潔に答えると次のようになります。 オプション1(OP-TEE専用I2C)では、Plug & Trust MW SSS APIはLinuxユーザースペースから直接使用できません。 libckteec.so を介して標準の PKCS#11 C API を使用する必要があります。 以下に、必要なすべての操作に関する詳細な説明と完全なC言語のコードサンプルを示します。 なぜこの構成ではSSS APIを使えないのか Plug & Trust MW SSS API ( sss_session_open 、 sss_key_store_set_key 、 sss_asymmetric_sign_digest など) は、SE051 と通信するためにトランスポート層に依存しています。サポートされているすべてのトランスポート( T1oI2C 、 JRCP_V1_AM など)は最終的にLinux I2Cアクセスかプロキシサーバーを必要としますが、OP-TEEがI2Cバスを独占的に所有している場合、どちらも利用できません。 OP-TEE排他設定における正しいパスは次のとおりです。 Your C App → PKCS#11 C API (cryptoki.h) → libckteec.so → OP-TEE PKCS#11 TA → SE051 libckteec optee-client が提供するもので、OP-TEE PKCS#11 TAをバックエンドとしてCryptokiインターフェースを実装しています。TAはさらにOP-TEEのネイティブI2Cドライバを介して暗号処理をSE051にルーティングします。 必須ヘッダーとリンク #include /* 標準の Cryptoki ヘッダー — optee-client または OpenSC から */ コンパイルとリンク: gcc -o my_app my_app.c-ldl # または直接リンクしてください: gcc -o my_app my_app.c/usr/lib/libckteec.so.0 実行時に、動的ロードを使用する場合はモジュールパスを設定します。 #define PKCS11_MODULE "/usr/lib/libckteec.so.0" 初期化とトークン設定(起動時に一度だけ呼び出してください) #include #include #include #define CHECK_RV(RV、メッセージ)\ もし((RV)!= CKR_OK) { fprintf(stderr, "%s failed: 0x%lX\n", (msg), (rv)); goto cleanup; } /* ユーザーPIN — pkcs11-tool --init-pin */ static CK_UTF8CHAR user_pin[] = "1234"; 静的CK_ULONG user_pin_len = 4; CK_FUNCTION_LIST *p11 = NULL;/* グローバル関数リストポインタ */ CK_SESSION_HANDLE セッション = CK_INVALID_HANDLE; int pkcs11_init(void) { CK_RV rv; CK_ULONG slot_count = 0; CK_SLOT_ID slot_id; CK_SLOT_ID slot_list[8]; /* 関数リストの読み込み — 動的リンクを使用する場合、 C_GetFunctionList() */ rv = C_Initialize(NULL_PTR); CHECK_RV(rv, "C_Initialize"); /* 利用可能なスロットを獲得 */ rv = C_GetSlotList(CK_TRUE, NULL_PTR, &slot_count); CHECK_RV(rv, "C_GetSlotList (count)"); rv = C_GetSlotList(CK_TRUE, slot_list, &slot_count); CHECK_RV(rv, "C_GetSlotList"); slot_id = slot_list[0];/* 用途 最初のスロット — OP-TEE PKCS#11 TA */ /* 読み書きセッションを開く */ rv = C_OpenSession(slot_id, CKF_SERIAL_SESSION |CKF_RW_SESSION, NULL_PTR, NULL_PTR, &session); CHECK_RV(rv, "C_OpenSession"); /* 通常ユーザーとしてログイン */ rv = C_Login(session, CKU_USER, user_pin, user_pin_len); CHECK_RV(rv、「C_Login」); 0を返す; クリーンアップ: 返却 -1; } void pkcs11_cleanup(void) { C_Logout(セッション); C_CloseSession(セッション); C_Finalize(NULL_PTR); } 操作1:RSA鍵ペアを生成し、SE051に保存する int generate_rsa_keypair(CK_OBJECT_HANDLE *pub_key, CK_OBJECT_HANDLE *priv_key) ヤージュ CK_RV rv; CK_MECHANISM mech = { CKM_RSA_PKCS_KEY_PAIR_GEN, NULL_PTR, 0 }; CK_ULONG キービット数 = 2048; CK_BYTE pub_exponent[] = { 0x01, 0x00, 0x01 }; /* 65537 */ CK_BBOOL ck_true = CK_TRUE; CK_BBOOL ck_false = CK_FALSE; /* SE051 NVMに保存されるキーID — 一意の4バイトIDを選択してください */ CK_BYTE key_id[] = { 0x10, 0x10, 0x10, 0x10 }; CK_ATTRIBUTE pub_tmpl[] = { { CKA_MODULUS_BITS, &key_bits, sizeof(key_bits) }, { CKA_PUBLIC_EXPONENT, pub_exponent, sizeof(pub_exponent) }, { CKA_VERIFY, &ck_true, sizeof(ck_true) }, { CKA_ENCRYPT, &ck_true, sizeof(ck_true) }, { CKA_TOKEN, &ck_true, sizeof(ck_true) }, { CKA_ID、key_id、sizeof(key_id) }、 }; CK_ATTRIBUTE priv_tmpl[] = { { CKA_SIGN, &ck_true, sizeof(ck_true) }, { CKA_DECRYPT, &ck_true, sizeof(ck_true) }, { CKA_TOKEN, &ck_true, sizeof(ck_true) }, { CKA_SENSITIVE, &ck_true, sizeof(ck_true) }, { CKA_EXTRACTABLE, &ck_false, sizeof(ck_false) }, { CKA_ID、key_id、sizeof(key_id) }、 }; rv = C_GenerateKeyPair(session, &mech, pub_tmpl、sizeof(pub_tmpl) / sizeof(pub_tmpl[0])、 priv_tmpl、sizeof(priv_tmpl) / sizeof(priv_tmpl[0])、 公開鍵、秘密鍵); CHECK_RV(rv, "C_GenerateKeyPair"); printf("RSA-2048キーペアが生成されました。秘密鍵はSE051 NVMに保存されます。\n"); 0を返す。 掃除: -1を返す。 } 操作2:SE051でAESキーとストアを生成する int generate_aes_key(CK_OBJECT_HANDLE *aes_key) { CK_RV rv; CK_MECHANISM mech = { CKM_AES_KEY_GEN, NULL_PTR, 0 }; CK_ULONG key_len = 32;/* 256ビットAES */ CK_BBOOL ck_true = CK_TRUE; CK_BBOOL ck_false = CK_FALSE; CK_BYTE key_id[] = { 0x20, 0x00, 0x00, 0x01 }; CK_ATTRIBUTE aes_tmpl[] = { { CKA_VALUE_LEN, &key_len, sizeof(key_len) }, { CKA_ENCRYPT, &ck_true, sizeof(ck_true) }, { CKA_DECRYPT, &ck_true, sizeof(ck_true) }, { CKA_TOKEN, &ck_true, sizeof(ck_true) }, { CKA_SENSITIVE, &ck_true, sizeof(ck_true) }, { CKA_EXTRACTABLE, &ck_false, sizeof(ck_false) }, { CKA_ID, key_id, sizeof(key_id) }, }; rv = C_GenerateKey(セッション、&mech、 aes_tmpl、sizeof(aes_tmpl) / sizeof(aes_tmpl[0]), aes_key); CHECK_RV(rv、「C_GenerateKey (AES)」)); printf("AES-256キーがSE051で生成・保存される");0を返す。 掃除: -1を返す。 } 操作3および4:AES-CBC暗号化/復号 int aes_encrypt(CK_OBJECT_HANDLE aes_key, const CK_BYTE *plaintext, CK_ULONG plaintext_len, CK_BYTE *暗号文、CK_ULONG *暗号文の長さ) ヤージュ CK_RV rv; CK_BYTE iv[16] = { 0 }; /* 例:すべてゼロのIV。本番環境ではランダムなIVを使用してください */ CK_MECHANISM mech = { CKM_AES_CBC_PAD, iv, sizeof(iv) }; rv = C_EncryptInit(session, &mech, aes_key); CHECK_RV(rv, "C_EncryptInit"); rv = C_Encrypt(session, (CK_BYTE *)plaintext, plaintext_len, 暗号文、暗号文の長さ); CHECK_RV(rv, "C_Encrypt"); 0を返す。 掃除: -1を返す。 } int aes_decrypt(CK_OBJECT_HANDLE aes_key, const CK_BYTE *ciphertext、CK_ULONG ciphertext_len、 CK_BYTE *プレーンテキスト、CK_ULONG *プレーンテキスト長) ヤージュ CK_RV rv; CK_BYTE iv[16] = { 0 }; /* 暗号化に使用されるIVと一致する必要があります */ CK_MECHANISM mech = { CKM_AES_CBC_PAD, iv, sizeof(iv) }; rv = C_DecryptInit(session, &mech, aes_key); CHECK_RV(rv, "C_DecryptInit"); rv = C_Decrypt(session, (CK_BYTE *)ciphertext, ciphertext_len, プレーンテキスト、プレーンテキストの長さ); CHECK_RV(rv, "C_Decrypt"); 0を返す。 掃除: -1を返す。 } 操作5および6:RSA署名(秘密鍵はSE051に保存)および検証 int rsa_sign(CK_OBJECT_HANDLE priv_key, const CK_BYTE *data, CK_ULONG data_len, CK_BYTE *署名、CK_ULONG *署名長) ヤージュ CK_RV rv; /* SHA256-PKCS1v1.5 — SE051 は内部で SHA-256 ダイジェストを計算してから署名します */ CK_MECHANISM mech = { CKM_SHA256_RSA_PKCS, NULL_PTR, 0 }; rv = C_SignInit(session, &mech, priv_key); CHECK_RV(rv, "C_SignInit"); rv = C_Sign(session, (CK_BYTE *)data, data_len, signature, sig_len); CHECK_RV(rv, "C_Sign"); printf("RSA署名が生成されました(%luバイト)。秘密鍵はSE051から一度も出ていません。*sig_len); 0を返す。 掃除: -1を返す。 } int rsa_verify(CK_OBJECT_HANDLE pub_key, const CK_BYTE *data, CK_ULONG data_len, const CK_BYTE *signature, CK_ULONG sig_len) ヤージュ CK_RV rv; CK_MECHANISM mech = { CKM_SHA256_RSA_PKCS, NULL_PTR, 0 }; rv = C_VerifyInit(session, &mech, pub_key); CHECK_RV(rv, "C_VerifyInit"); rv = C_Verify(session, (CK_BYTE *)data, data_len, (CK_BYTE *)署名、sig_len); if (rv == CKR_OK) { printf("署名検証:成功\n"); 0を返す。 } else if (rv == CKR_SIGNATURE_INVALID) { printf("署名検証: 無効\n"); 1を返す。 } CHECK_RV(rv, "C_Verify"); 掃除: -1を返す。 } 操作7と8:RSA暗号化/復号 int rsa_encrypt(CK_OBJECT_HANDLE pub_key, const CK_BYTE は *平文、CK_ULONG plaintext_len、 CK_BYTE *暗号文、CK_ULONG *ciphertext_len) { CK_RV rv; /* RSA-OAEP with SHA-256 — 新規設計にはPKCS1 v1.5より推奨 */ CK_RSA_PKCS_OAEP_PARAMS oaep_params = { .hashAlg= CKM_SHA256、 .mgf= CKG_MGF1_SHA256、 。ソース= CKZ_DATA_SPECIFIED、 .pSourceData= NULL、 .ulSourceDataLen= 0 }; CK_MECHANISM mech = { CKM_RSA_PKCS_OAEP, &oaep_params, sizeof(oaep_params) }; rv = C_EncryptInit(session, &mech, pub_key); CHECK_RV(rv, "C_EncryptInit (RSA-OAEP)"); rv = C_Encrypt(session, (CK_BYTE *)plaintext, plaintext_len, 暗号文、暗号文の長さ); CHECK_RV(rv, "C_Encrypt (RSA-OAEP)"); 0を返す。 掃除: -1を返す。 } int rsa_decrypt(CK_OBJECT_HANDLE priv_key, const CK_BYTE *ciphertext、CK_ULONG ciphertext_len、 CK_BYTE *プレーンテキスト、CK_ULONG *プレーンテキスト長) ヤージュ CK_RV rv; CK_RSA_PKCS_OAEP_PARAMS oaep_params = { .hashAlg= CKM_SHA256、 .mgf= CKG_MGF1_SHA256、 。ソース= CKZ_DATA_SPECIFIED、 .pSourceData= NULL、 .ulSourceDataLen= 0 }; CK_MECHANISM mech = { CKM_RSA_PKCS_OAEP, &oaep_params, sizeof(oaep_params) }; rv = C_DecryptInit(session, &mech, priv_key); CHECK_RV(rv, "C_DecryptInit (RSA-OAEP)"); rv = C_Decrypt(session, (CK_BYTE *)ciphertext, ciphertext_len, プレーンテキスト、プレーンテキストの長さ); CHECK_RV(rv, "C_Decrypt (RSA-OAEP)"); printf("RSA復号化が完了しました。秘密鍵はSE051から一度も出ていません。\n");0を返す。 掃除: -1を返す。 } 既存キーへのアクセス(再生成なし) 鍵が以前に生成され、SE051に保存されている場合は、 C_GenerateKey を再度呼び出すことなく、CKA_IDを使用して鍵を取得します。 int find_key_by_id(CK_BYTE *key_id, CK_ULONG key_id_len, CK_OBJECT_CLASS obj_class、 CK_OBJECT_HANDLE *ハンドル) ヤージュ CK_RV rv; CK_ULONG obj_count = 0; CK_ATTRIBUTE search_tmpl[] = { { CKA_CLASS, &obj_class, sizeof(obj_class) }, { CKA_ID、key_id、key_id_len }、 }; rv = C_FindObjectsInit(session, search_tmpl, sizeof(search_tmpl) / sizeof(search_tmpl[0])); CHECK_RV(rv, "C_FindObjectsInit"); rv = C_FindObjects(session, handle, 1, &obj_count); CHECK_RV(rv, "C_FindObjects"); C_FindObjectsFinal(session); if (obj_count == 0) { fprintf(stderr, "キーがSE051で見つかりません\n"); -1を返す。 } 0を返す。 掃除: C_FindObjectsFinal(session); -1を返す。 } 使用例: CK_OBJECT_HANDLE プライベートキー; CK_BYTE key_id[] = { 0x10, 0x10, 0x10, 0x10 }; CK_OBJECT_CLASS priv_class = CKO_PRIVATE_KEY; find_key_by_id(key_id, sizeof(key_id), priv_class, &priv_key); 対応メカニズム(OP-TEE PKCS#11 TA + SE051で検証済み) 動作 機構定数 備考 RSA鍵生成 CKM_RSA_PKCS_KEY_PAIR_GEN 256~4096ビット AESキー生成 CKM_AES_KEY_GEN 16バイトまたは32バイト RSA署名/検証 CKM_SHA256_RSA_PKCS PKCS#1 v1.5 RSA署名/検証(PSS) CKM_SHA256_RSA_PKCS_PSS PSSパディング RSA暗号化/復号化 CKM_RSA_PKCS_OAEP OAEP推奨 RSA暗号化/復号化 CKM_RSA_PKCS PKCS#1 v1.5 AESの暗号化/復号 CKM_AES_CBC_PAD CBCとPKCS#7 AESの暗号化/復号 CKM_AES_CBC パディングなしのCBC AESの暗号化/復号 CKM_AES_CTR CTRモード ECC署名/検証 CKM_ECDSA_SHA256 160~521ビット ECDHの主要合意 CKM_ECDH1_DERIVE   SSS APIはそもそも使えますか? はい、ただし共 存環境(オプション2 )でのみ、LinuxがI2Cバスにアクセスできる場合(つまり lf-6.12.y-i2c-disabled-se050 DTSパッチが適用されていない場合)。その場合、AN13030セクション3.3に説明されているSSS APIをLinuxから直接利用できます。 オプション1(OP-TEE専用)を選択すると、上記のCryptoki/PKCS#11 C APIがLinuxユーザースペースからの正確かつ唯一サポートされている経路です。 参照 AN13030 Rev. 2.4、セクション3.3 — SSS APIの完全リファレンス(共存/非OP-TEEビルド用) OP-TEE PKCS#11 TAテストスイート(pkcs11_1000.c): optee-test/host/xtest/pkcs11_1000.c — Cryptoki のすべての操作に関する包括的な C 言語の例 NXP GitHub: se05x-pkcs11 — NXPのPKCS#11スタンドアロンライブラリ(OP-TEE以外のビルドでは libckteec.so 代替として使用可能)   お役に立てば幸いです。   すてきな一日を、 カン ------------------------------------------------------------------------------- 注記: この投稿があなたの質問への回答になっている場合は、「正解としてマーク」ボタンをクリックしてください。ありがとうございます! - 前回の投稿から7週間Threadをフォローしており、その後の返信は無視しています もし後で関連する質問があれば、新しいThreadを開き、閉じたThreadを参照してください。 ------------------------------------------------------------------------------- Re: Seeking guidance: se05x_Minimal fails in OP-TEE environment @Kan_Li 分かりやすく詳細なご説明をありがとうございました。 現在、将来の開発段階に応じてオプション1かオプション2の使用を検討しています(例:初期テスト・評価にオプション2、本番にオプション1を使う)。 オプション1(OP-TEE PKCS#11 TA)についてですが、C言語でのアプリケーション開発に関する質問があります。 オプション1に従って、鍵の保存、署名/署名生成、署名検証、暗号化/復号化などの暗号化操作をCプログラムで実装する場合、どの方法を採用すべきでしょうか? 標準的なPKCS#11 API(例:C_Initialize、C_CreateObject、C_SignInit、C_Sign、C_VerifyInit、C_Verifyなど)をOP-TEEのPKCS#11ライブラリ(libckteec.so)経由で直接呼び出すCプログラムを書くべきでしょうか? あるいは、この設定でもPlug & Trust MW SSS API(sss_key_store_set_key、sss_asymmetric_sign_digest、sss_asymmetric_verify_digest、sss_cipher_updateなど)を使用することは可能/推奨されますか? もしPKCS#11 APIが必要な場合、Cで libckteec.so を呼び出すための簡単なサンプルコードや参考ガイドを教えていただけますか? Re: Seeking guidance: se05x_Minimal fails in OP-TEE environment こんにちは、 @Uc_S さん、 詳細な報告をありがとうございました。根本原因は明確で、なぜこうなるのか、そしてどんな選択肢があるのかを正確に説明します。 根本的な原因 se05x_Minimal -DPTMW_SMCOM=T1oI2C で構築されました。これにより、smComレイヤーはセッションオープン時に物理的なLinux I2Cデバイスノード( /dev/i2c-X )を開くよう指示されます。 lf-6.12.y-i2c-disabled-se050 DTSパッチ(統合ガイドのステップ1)を適用したため、Linux Normal WorldではそのI2Cコントローラが無効化されており、デバイスノード自体が存在しません。OP-TEEは CFG_IMX_I2C=y を通じてI2Cバスを独占的に所有しており、Linuxはそれを認識したり開いたりできません。 これは意図的なもので 、DTSパッチがOP-TEEにSE051への独占的かつ無競争のアクセス権を与えるものです。 T1oI2C で構築された se05x_Minimal バイナリは、この構成と根本的に互換性がありません。 あなたの2つの選択肢 ✅ オプション1 — OP-TEE PKCS#11 TAを使用する(生産用途に推奨) これはOP-TEE独占セットアップにおけるLinuxユーザースペースの意図パスです。 se05x_Minimal を実行する代わりに、 pkcs11-tool またはOpenSSLと libckteec.so (OP-TEE PKCS#11 TAライブラリ)を使用してください。TAは内部的にSE051を暗号バックエンドとして、OP-TEEのネイティブI2Cドライバを介して使用しています。 SE051がPKCS#11経由で到達可能であることを簡単に検証します。 # List available PKCS#11 slots — SE051 should appear pkcs11-tool --module /usr/lib/libckteec.so.0 --list-slots # Get a random number from SE051 via OP-TEE pkcs11-tool --module /usr/lib/libckteec.so.0 --generate-random 16 | xxd スロットとランダムなバイト列が表示されている場合、SE051はOP-TEEを介して完全にアクセス可能です。 se05x_Minimal を実行する必要はありません。PKCS#11 TAが既に提供している機能と重複しています。 ✅ オプション2 — 共存環境の構築(開発/テストに推奨) Linuxユーザースペースから se05x_Minimal やその他のPlug & Trust MWデモを実行する必要がある場合は、Linux DTSがI2Cを有効にしたまま共 存する環境 (つまり、I2C無効のDTSパッチを適用 しない )を用いてください。 手順: ステップ1 — 通常世界でI2Cを有効にし続けるためにLinux DTSを元に戻す lf-6.12.y-i2c-disabled-se050 パッチなしで、未改変のLinux DTSから imx8mq-evk.dtb (または同等のもの)を構築しましょう。SE051のI2CコントローラノードはLinux上で有効化されたままである必要があります。 ステップ2 — 既存のcmakeフラグは変更しない 現在のcmakeの設定は共存環境において正しいです。 cmake -S . -B ./build/ -DPTMW_Applet=SE05X_C -DPTMW_SE05X_Ver=07_02 -DPTMW_Host=iMXLinux -DPTMW_SMCOM=T1oI2C -DPTMW_HostCrypto=OPENSSL -DPTMW_RTOS=Default -DPTMW_mbedTLS_ALT=None -DPTMW_SCP=SCP03_SSS -DPTMW_SE05X_Auth=PlatfSCP03 -DPTMW_Log=Silent -DCMAKE_BUILD_TYPE=Release -DPTMW_OpenSSL=3_0 -DPTMW_SE_RESET_LOGIC=1 ステップ3 — 実行前にI2Cポートを設定する export EX_SSS_BOOT_SSS_PORT=/dev/i2c-1 ./se05x_Minimal トレードオフ: このモードでは、OP-TEEとLinuxの両方がSE051へのI2Cバスを共有します。OP-TEEはRSA/ECCオフロードに使っています。LinuxはMWデモに使っています。同時アクセスは仲裁されず、負荷時にAPDUの衝突が発生することがあります。開発用途には許容範囲内だが、製品版での使用は推奨しない。 概要 オプション I2C DTS se05x_ミニマル OP-TEE限定 おすすめ対象 PKCS#11 TA ( libckteec.so ) ディセーブルされる ❌ 不要 ✅ はい 量産 共存(T1oI2C) イネーブル ✅ 作品 ⚠️ 共有I2C 開発/テスト 統合ガイドに関する説明 あなたが参照したコミュニティ投稿(ステップ2 - CAAMなし)では、OP-TEEがI2Cを独占的に所有するように設定されています。そのガイドに示されたLinux側のMWコンパイル( T1oI2C 付き)は、OP-TEEモードに切り替える前の 初期検証ステップ として意図されており、OP-TEE専用のI2Cセットアップと併用するものではありません。 OP-TEEがI2Cを独占的に所有すると、正しいLinuxユーザースペースインターフェースは OP-TEE PKCS#11 TAであり、Plug & Trust MW SSS APIデモ自体ではありません。 どの選択肢があなたのユースケースに合っているか教えていただければ、さらなるアドバイスを提供できます。 すてきな一日を、 カン ------------------------------------------------------------------------------- 注記: この投稿があなたの質問への回答になっている場合は、「正解としてマーク」ボタンをクリックしてください。ありがとうございます! - 前回の投稿から7週間Threadをフォローしており、その後の返信は無視しています もし後で関連する質問があれば、新しいThreadを開き、閉じたThreadを参照してください。 -------------------------------------------------------------------------------
View full article
使用 s32k144 MBD 工具箱进行 I2C 读写 你好, 我正在使用 s32k144 从外部 EEPROM 读取和写入数据。我将在下面附上模型。我可以写入数据,但读取操作返回 255+NACK 作为输出。我是不是漏掉了什么? Sriram_0-1737789999186.png Sriram_1-1737790013461.png 是否有办法在 I2Cmaster 模块中指定 EEPROM 的寄存器地址? Sriram_2-1737790096449.png 各位能帮我解决这个问题吗? 谢谢 Re: I2C read and write using s32k144 MBD toolbox 您好, 我也遇到了同样的问题,在使用S32K144作为主设备, ST M24C04 EEPROM作为从设备进行 I2C 通信时,出现了问题。 由于你们使用的是相同的微控制器和 EEPROM,我想确认一下你们是否找到了解决方案。如果您已经解决了这个问题,能否分享一下解决方案或者告诉我是什么方法解决了这个问题? 提前感谢您的帮助。 Re: I2C read and write using s32k144 MBD toolbox 我使用的是 M24C02-DRE EEPROM
View full article
S32 设计工作室安装问题 我在使用 S32 设计工作室 (V3.6.4) 时遇到问题。安装。安装开始后,安装进度条立即停止显示,但我看不到任何已安装的应用程序。 请指导我如何解决这个问题。 系统配置为:Windows 11,16GB 内存,1TB 固态硬盘。请注意,该系统遵循我公司的IT政策。 Re: S32 Design Studio Installation Issue 请查看下方所需的日志文件。 我们尝试安装两次,但都失败了。 Re: S32 Design Studio Installation Issue 嗨@ashutoshsahu 能否请您提供一下安装日志文件(.log)?它应该位于: C:\NXP\S32DS.3.6.4\_S32Design Studio for S32 Platform 3.6.4_installation\Logs BR,VaneB Re: S32 Design Studio Installation Issue 嗨@ashutoshsahu 我已查看安装日志,并发现安装程序尝试运行 powershell -ExecutionPolicy Bypass -File parallel.ps1 时出现一个重要错误: “此程序已被组策略阻止。”如需更多信息,请联系您的系统管理员。 根据此错误,建议您与 IT 团队核实,确认是否存在任何网络安全策略、组策略限制、防火墙规则或代理设置阻止 PowerShell 脚本正常运行。
View full article