Multi Source Translation Content

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

Multi Source Translation Content

讨论

排序依据:
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.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を参照してください。 ------------------------------------------------------------------------------- Re: Test HAB on IMXRT1024 without burning fuses @Kan_Li 、Boot データは小さなエンディアン32ビットワードに保存されているため、両方のバイナリのStartは同じなので、誤解されていると思います 始め0x60000000 ブートデータサイズは LED点滅 - 0x00400000(4MB) 私のプロジェクトです - 0x00040000(256KB) つまり、あなたの説明通りIVTは定義されたブートデータ内に含まれます
查看全文
仅可使用钥匙扣/智能卡登录 我在一家制造公司工作,我们正在考虑在车间配备个人电脑,以便员工能够查看零件图纸、确认任务完成情况等等。由于我们希望尽可能减少员工的痛苦,但又要记录谁签署了任务,因此我们正在寻找最佳方式,让员工使用他们已有的门禁卡来开门和打卡。如果这不可行,我们当然愿意考虑其他方案,让员工可以使用某种物理令牌登录,而无需接触键盘或鼠标,更不用说记住用户名和密码了。我研究过智能卡,但它们似乎需要输入密码,而我们希望尽可能避免使用密码。我们了解其中固有的网络安全风险,这些设备将被锁定,只能执行特定任务,而不能访问网络的其他部分。 移动设备上的智能卡
查看全文
LPC43S57 USB1ホスト構成の問題 ハイ LPC43S57 コントローラの USB1 ペリフェラルを USB ホストとして使用して、お客様のボード内のデバイスを接続しようとしています。USB スタックと USB ドライバを構成するために KEIL MDK を使用しています。   USBH_Initialize(1)関数を呼び出すと、「コントローラが存在しません」というエラーが返されます。USB1 ハードウェア接続に関してインターネットで検索してみたところ、多くの場所で USB1 ペリフェラルは外部 PHY がないと動作しないと記載されていることがわかりました。ただし、データシートには、オンチップフルスピード PHY をサポートしていることが示されています。   USB1 にオンチップのフルスピード PHY が搭載されているかどうかを明確にしていただけますか?   USB1_VBUS ピンはホストであり、接続しているデバイスは自己電源デバイスであるため使用されません。   また、ホストとして行ったUSB1接続のスナップショットを以下に示します。   よろしくお願いします。 サバリッシュ・クマール Re: LPC43S57 USB1 Host Configuration issue こんにちは@HeatherUlrich USB1 をホスト モードからデバイス モードに変更して、 device_cdc プロジェクトを開発しましたか? はい、そうであれば、まずボード上で LPCOpen の CDC デモを実行してテストすることができます。 これにより、ハードウェアに問題があるかどうかを確認できます。 ありがとう。 BR アリス Re: LPC43S57 USB1 Host Configuration issue @Slope Gameところで、派手にクラッシュする話ですが、以前、正しくエニュメレーションを行なわない怪しいマイクロコントローラと格闘して週末を丸々過ごしたことがあります。結局、クロック速度の設定ミスが一つだけ原因で、それが次々と予期せぬエラーを引き起こし、デバッグの現実味を帯びてきました。本当にイライラさせられました。 Re: LPC43S57 USB1 Host Configuration issue こんにちは@Alice_Yang CLK_USB1をUSB1インターフェースの60MHzクロック生成用に設定済みです。USB1をデバイス(フルスピードモード)として設定し、PCに接続しました。LPC43S57 USBコントローラーのUSBステータスレジスタでは、USBがデバイスAとして接続されていることが確認できますが、PC側ではCOMポートや他のUSBデバイスが接続されていることが確認できません。USB0をデバイスとして設定し、PCに接続したところ、COMポートとして検出され、USB1の設定では動作しません。 参考までにUSB1デバイスの構成画像を添付しました。 よろしくお願いします。 サバリッシュ・クマール Re: LPC43S57 USB1 Host Configuration issue こんにちは@Sabarish USB フルスピード モードでは、CLK_USB1 を使用して USB1 インターフェース のクロックを生成します。外部 PHY は必要ありません。高速モードでは、外部 PHY が USB1 インターフェースのクロックを生成するため、システム構成ブロック内のそれぞれのピン構成レジスタを介してピン PC_0 または P8_8 で USB1_ULPI_CLK を有効にする必要があります。 USB1_DP​​およびUSB1_DM​​信号がデバイスに正しくコネクテッドされていることを確認してください。さらに、ソフトウェア構成が適切に設定されていることを確認してください。参考までに、LPCopen ライブラリで提供されている USB ホスト デモを参照CANます。 Alice_Yang_0-1757931704656.pngAlice_Yang_0-1757931704656.pngAlice_Yang_0-1757931704656.png BR アリス Re: LPC43S57 USB1 Host Configuration issue さて、この USB の難問を解明してみましょう。これは内部 PHY の問題でしょうか、それともハードウェアの不具合が原因でしょうか?そのコントローラエラーはいつも頭痛の種です。適切な USB 構成を見つけるのは、迷路を進むような感じになります。かつて私は、あるプロジェクトのためにセンサと通信させようと、頑固な Arduino セットアップに格闘していました。何時間も配線をトレースし、コードをデバッグした結果、単純な電源の問題が根本原因であることがわかり、@ geometry dashでいっぱいの午後は完全に無駄になってしまいました。時々、明白なことが私たちには分からないことがありますよね? Re: LPC43S57 USB1 Host Configuration issue これは、USBH_Initialize 関数に関する難しい問題です。以前にも同様のハードウェア接続の問題に直面したことを覚えています。場合によっては、セットアップにおける些細な詳細でも頭痛の種になることがあります。ここでは具体的なハードウェア デバッグのアドバイスを提供することはできませんが、 Geometry Dashフォーラムをチェックすることを検討しましたか?そこのコミュニティはあらゆる種類の技術的な課題について驚くほど知識が豊富で、USB デバイスの初期化で同様の問題に遭遇した人がいるかもしれません。 Re: LPC43S57 USB1 Host Configuration issue 難しいハードウェア構成の問題に直面しているようです。USB セットアップでは確かに同じ状況になりました。オンチップ PHY に関しては、チップの特定のシリコン リビジョンとエラッタ シートを再確認すると、明確になる場合があります。トラブルシューティング中に、 CPS テストWeb サイトで反応時間やマウス スキルをテストしてみると、楽しい気晴らしになるかもしれません。集中力を高めるのに役立ちます!USBの問題がすぐに解決されることを願っています! Re: LPC43S57 USB1 Host Configuration issue こんにちは、@ Unblocked Gamesさん。設計図のスナップショットを共有していただきありがとうございます。PHYに関する質問に加えて、同じボード上でUSB0が正しく動作するかどうかを知ることも役立ちます。そうすることで、問題がハードウェア関連なのかソフトウェア関連なのかを特定するのに役立つからです。 Re: LPC43S57 USB1 Host Configuration issue LPC43S57のUSB1ペリフェラルで問題が発生しているのは興味深いですね。特にデータシートにはオンチップのフルスピードPHYが搭載されていると書かれているのに。「コントローラは存在しません」というエラーは本当にイライラします。このチップ上でUSB1をホストとして正常に使用した人がいるかどうか、例えばpokerogueのようなゲームで使用したことがある人がいるかどうか知りたいです。これを解明するのは大変でしょう! Re: LPC43S57 USB1 Host Configuration issue 「コントローラは存在しません」というメッセージはイライラします。まずはUSB1のクロック設定、ピン割り当て、そしてUSB1ホストの初期化が選択されたフルスピード設定と一致しているかどうかを確認することから始めるでしょう。ここでは、オンチップのフルスピードPHYと外部PHYの要件との区別が特に重要となる。複数の設定を一度に変更する前に、セットアップの各部分を個別にテストすることは常に有効です。ハードウェアのトラブルシューティングに時間をかけすぎた後は、 Geometry Dashのような手軽なゲームで少し休憩を取り、気分転換してから問題に取り組むようにしています。
查看全文
LPC43S57 USB1 Host Configuration issue Hi     We are trying to use USB1 peripheral of LPC43S57 controller as USB host to connect a device in customer board. We are using KEIL MDK to configure the USB stack and USB driver.   When we call USBH_Initialize(1) function it returns an error indicating "Controller does not exist". We tried to search on the internet regarding the USB1 Hardware connections, and we observed that in many places it is mentioned that USB1 peripheral will not work without external PHY. However, the datasheet indicates that it supports on chip full speed PHY.    Can you clarify for us if the USB1 does have on chip full speed PHY?   The USB1_VBUS pin is not used since it is a Host and the device we are connecting is a self powered device.   Also please find below the snapshot of the USB1 connection we have done as Host   Regards Sabarish Kumar Re: LPC43S57 USB1 Host Configuration issue Okay, let's unpack this USB conundrum! Is it the internal PHY or some hardware quirk messing things up? That controller error is always a headache. Finding the right USB configuration can feel like navigating a maze. Once, I was wrestling with a stubborn Arduino setup, trying to get it to communicate with a sensor for a project. Spent hours tracing wires and debugging code only to realize a simple power supply issue was the root cause, completely sidelining my @geometry dash -filled afternoon. Sometimes, the obvious escapes us, right? Re: LPC43S57 USB1 Host Configuration issue That's a tricky issue with the USBH_Initialize function! I remember facing similar hardware connection problems before. Sometimes, even seemingly minor details in the setup can cause headaches. While I can't offer specific hardware debugging advice here, have you considered checking out the Geometry Dash forums? The community there is surprisingly knowledgeable about all sorts of technical challenges, and someone might have encountered a similar problem with USB device initialization. Re: LPC43S57 USB1 Host Configuration issue It sounds like you're facing a tricky hardware configuration issue! I've definitely been there with USB setups. Regarding the on-chip PHY, double-checking the specific silicon revision and errata sheet for your chip might provide clarity. While you're troubleshooting, testing your reaction time and mouse skills on a CPS test website could be a fun distraction. It helps sharpen focus! Hope you resolve your USB issue soon! Re: LPC43S57 USB1 Host Configuration issue Hi @Unblocked Games Thanks for sharing the schematic snapshot. Besides the PHY question, it would be helpful to know whether USB0 works correctly on the same board, as that could help isolate whether the issue is hardware- or software-related. Re: LPC43S57 USB1 Host Configuration issue It's interesting that you're running into issues with the USB1 peripheral on the LPC43S57, especially since the datasheet suggests it has an on-chip full-speed PHY. That "Controller does not exist" error is definitely frustrating. I'd be curious to know if anyone else has successfully used USB1 as a host on this chip, maybe for something like pokerogue . Good luck figuring this out! Re: LPC43S57 USB1 Host Configuration issue That “Controller does not exist” message sounds frustrating. I’d probably start by checking the USB1 clock configuration, pin assignments, and whether the USB1 host initialization matches the selected full-speed configuration. The distinction between the on-chip full-speed PHY and the external PHY requirement is especially important here. It’s always useful to test each part of the setup separately before changing several settings at once. After spending too much time troubleshooting hardware, I usually take a short break with a quick game such as Geometry Dash Game before coming back to the problem with a fresh mind.
查看全文
Test HAB on IMXRT1024 without burning fuses I have taken unsigned led blinky code and implemented HAB audit API (report status and report event). EVK board is open and fuses not burnt Unsigned image(CSF=0) - HAB fail with 4 events Signed image - HAB pass 0 events  So i assumed that even board is open HAB authentication runs and hence i can see events. But now i taken project firmware with same IVT (CSF=0) and i implemented same HAB audit but this time Unsigned image - HAB pass with 0 events Led blinky logs (unsigned): RVT header at 0x 2002c0: tag=0xdd len=0x 038 par=0x43 HAB: RVT version = 0x 40305 HAB: report_status() = 0x33(HAB_FAILURE) HAB: config = 0xf0(HAB_CFG_OPEN) HAB: state = 0x66(HAB_STATE_NONSECURE) HAB: event[0], 8 bytes 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 bytes 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 0 0 0 0 20 HAB: event[2], 20 bytes 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 bytes 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 20 0 0 0 0 4 HAB: VERDICT = 4 EVENT(S) LOGGED -- see decoded fields above but  my  project firmware(unsigned) HAB: RVT header at 0x002002c0 HAB: tag=0xdd len=0x0038 par=0x43 HAB: RVT found and valid HAB: RVT version = 0x00040305 HAB: report_status() = 0xf0 HAB: config = 0xf0 HAB: state = 0x66 HAB: querying audit events... HAB: report_event(idx=0) returned 0x33 (no events or query HAB: VERDICT = PASS (no audit events logged) Why there is a difference  Re: Test HAB on IMXRT1024 without burning fuses Hi @Abhay2080 , Thanks for the reaching out! May I have the sdk version that has the led blinky code and the SPT version used for building the image?  Thank for your patience! Have a great day, Kan ------------------------------------------------------------------------------- Note: - If this post answers your question, please click the "Mark Correct" button. Thank you! - We are following threads for 7 weeks after the last post, later replies are ignored Please open a new thread and refer to the closed one, if you have a related question at a later point in time. ------------------------------------------------------------------------------- Re: Test HAB on IMXRT1024 without burning fuses This is SDK version - SDK_25_06_00_MIMXRT1024xxxxx SPT version - 26.06 MCU xpresso - v25.6.136 unsigned image for led blinky if compiled through mcu xpresso and then signed image is created through both SPT and CST 4.0 Re: Test HAB on IMXRT1024 without burning fuses Hi @Abhay2080 , Thanks for the info and detailed logs — this is a great observation and the difference comes down to one thing: whether the CSF pointer in the IVT is zero or non-zero. How HABv4 decides to authenticate On i.MX RT10xx, the Boot ROM checks the CSF field of the IVT before deciding whether to attempt authentication: If CSF = 0x00000000 (null): HAB skips authentication entirely — no events are logged and report_status() returns 0xf0 (HAB_SUCCESS). This is not a "pass" in the security sense; authentication was never attempted. If CSF = non-zero (points to a CSF region): HAB attempts authentication — if the signature is missing or invalid, failure events are logged and report_status() returns 0x33 (HAB_FAILURE). On an open board this does not halt boot. Why your LED blinky (unsigned) showed 4 failure events Your LED blinky binary was built by MCUXpresso IDE and then processed through SPT (Secure Provisioning Tool) to create a bootable image. Even for an "unsigned" build type, SPT's bootable image pipeline writes a non-zero CSF pointer into the IVT and reserves a CSF region in the image. The Boot ROM found that non-zero pointer, attempted authentication, found no valid signature data, and logged the 4 events: Event 0 ( HAB_INV_ADDRESS / HAB_CTX_AUTHENTICATE 😞 HAB tried to locate the image for authentication but encountered an invalid address — consistent with an empty/stub CSF region. Events 1–3 ( HAB_INV_ASSERTION / HAB_CTX_ASSERT 😞 HAB's internal assertion checks on the image regions failed because there is no real CSF data present. Why your project firmware (unsigned) showed 0 events Your project firmware was compiled directly through MCUXpresso IDE without going through SPT's bootable image generation step. The resulting binary has a genuinely null CSF pointer in the IVT. The Boot ROM sees CSF = 0 , skips authentication entirely, and HAB reports clean. The 0x33 return from report_event(idx=0) in your log means "no event at this index" (i.e., the query itself returns HAB_FAILURE because there is nothing stored), not that HAB detected a failure. Quick way to verify Inspect the IVT of both binaries at byte offset +0x18 (the CSF field): SPT-built LED blinky: non-zero value (e.g., 0x60006xxx or similar flash address) Your project firmware: 0x00000000 To properly test HAB audit with your project firmware You need to build the bootable image through SPT (or elftosb/nxpimage) so that a CSF region is embedded in the image — even for an unsigned build. This ensures the Boot ROM attempts authentication and HAB events are generated. Only then will your HAB audit code capture meaningful data for testing purposes. In summary, your original assumption is correct that HAB authentication runs on an open board — but only when a non-zero CSF pointer is present in the IVT. The behavior you observed with your project firmware is expected and correct. Hope this helps clarify! Let us know if you have further questions.   Have a great day, Kan ------------------------------------------------------------------------------- Note: - If this post answers your question, please click the "Mark Correct" button. Thank you! - We are following threads for 7 weeks after the last post, later replies are ignored Please open a new thread and refer to the closed one, if you have a related question at a later point in time. ------------------------------------------------------------------------------- Re: Test HAB on IMXRT1024 without burning fuses Yes Kan_Li the explaination you mentioned is correct but the correct scenario us - LED blinky (unsigned) -> This binary i generated through MCU xpresso IDE only (not processed through SPT). size - 30KB And even i compare the IVT for both led blinky unsigned and my project unsigned both have exactly same IVT (CSF=0) .- size 64KB See hex compare left side is Led blinky and right side is my project firmware Also please mention what is the right way to test HAB without burning fuses Abhay2080_0-1788931301704.pngAbhay2080_0-1788931301704.pngAbhay2080_0-1788931301704.pngAbhay2080_0-1788931301704.png Re: Test HAB on IMXRT1024 without burning fuses Hi @Abhay2080 , Thank you for the hex comparison — this gives a much clearer picture. You're correct that both binaries have identical IVTs with CSF=0. The actual root cause is in the Boot Data size field, not the CSF pointer. What the hex dump shows Looking at the Boot Data structure at file offset 0x1020 (pointed to by boot_data in the IVT): Field LED Blinky Project Firmware start (0x1020) 0x60000000 0x60000000 size (0x1024) 0x00004000 = 16 KB 0x00000400 = 1 KB plugin (0x1028) 0x00000000 0x00000000 Both CSF fields in the IVT are 0x00000000 — confirmed identical. Why the HAB behavior differs The HAB library's authenticate_image() uses the Boot Data region ( start to start + size ) to determine the image scope before attempting authentication. Crucially, the IVT itself is located at flash offset 0x1000 (= 4096 bytes from base). HAB checks whether the IVT falls within the declared Boot Data region: LED Blinky — Boot Data declares 16 KB ( 0x4000 ). IVT at offset 0x1000 (4096) is inside [0x60000000, 0x60004000) . HAB finds the IVT, attempts authenticate_image() , encounters CSF=0 → logs HAB_INV_ADDRESS + 3 assertion failures → report_status() = HAB_FAILURE . Project Firmware — Boot Data declares only 1 KB ( 0x400 ). IVT at offset 0x1000 (4096) is outside [0x60000000, 0x60000400) . HAB cannot locate a valid IVT within the declared region → authentication is skipped entirely → report_status() = HAB_SUCCESS , 0 events. In summary: the 1 KB Boot Data size in your project firmware is incorrectly too small — the IVT sits beyond that boundary, so HAB never touches it. Note that neither Boot Data size matches the actual binary file sizes (30 KB and 64 KB respectively). Both images have Boot Data that was generated by the IDE directly rather than through a proper bootable image builder. The difference in how wrong the size is determines whether HAB engages. Root cause When you compile directly from MCUXpresso IDE without going through SPT or elftosb, the resulting binary does not have a properly formed Boot Data structure for HAB evaluation. The size field ends up set to a value that may or may not encompass the IVT, giving unpredictable HAB audit results. The correct way to test HAB without burning fuses The reliable methodology on an Open board is: Build through SPT or elftosb — this correctly populates the Boot Data ( start , size covering the entire image from base to end of CSF/code), FCB, IVT, and optionally the CSF block. Never test HAB using a raw IDE-compiled .bin — the Boot Data will be unreliable. Test with an unsigned image (CSF=0, correct Boot Data) — HAB will attempt authentication, find no CSF, and log HAB_INV_ADDRESS + assertion failures. report_status() = HAB_FAILURE . This confirms HAB is running correctly and your audit code is working. This is exactly what your LED blinky + SPT result showed. Test with a signed image (CSF valid, correct Boot Data) — build a properly signed image via SPT or CST 4.0 with your keys. On an Open board, HAB authenticates the image with the embedded SRK/CSF. If the signature is valid → report_status() = HAB_SUCCESS , 0 events. If the signature is wrong or absent → failure events. Boot continues in both cases on an Open board. Confidence check before burning fuses — only after you see HAB_SUCCESS with your signed image on an Open board should you proceed to burn the SRK hash fuses. This validates the entire authentication chain safely. Recommended test sequence (all on Open board): 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 Hope this fully explains the difference. The key takeaway is to always use SPT/elftosb for building the bootable image when testing HAB — never the raw IDE binary. Have a great day, Kan ------------------------------------------------------------------------------- Note: - If this post answers your question, please click the "Mark Correct" button. Thank you! - We are following threads for 7 weeks after the last post, later replies are ignored Please open a new thread and refer to the closed one, if you have a related question at a later point in time. ------------------------------------------------------------------------------- Re: Test HAB on IMXRT1024 without burning fuses @Kan_Li i think you misunderstood since Boot data is stored in little Endian 32-bit word, So Start in both binaries are same Start 0x60000000 Boot data size is LED blinky - 0x00400000 (4MB) My project it is - 0x00040000 (256KB) So as per your explanation IVT falls inside the defined boot data
查看全文
キーフォブ/スマートカードでのみログインできます 私は製造会社で働いており、従業員が部品図面を見たり、タスク完了のサインをしたりできるように、工場の現場にPCを設置しようと考えています。できるだけ手間を軽くしつつ、誰がタスクにサインしたかの記録も残したいため、従業員がすでに持っているアクセスコントロールバッジを使ってドアへのアクセスや出退勤をする最適な方法を検討しています。もしそれが現実的でなければ、従業員が物理的なトークンでログインし、キーボードやマウスに触れることなく、ユーザー名やパスワードを覚える必要もない、他の選択肢も検討しています。スマートカードについて調べてみましたが、PINコードが必要なようで、できれば避けたいと思っています。私たちは固有のセキュリティリスクを理解しており、これらのデバイスは特定のタスクしか実行できず、ネットワークの他の部分にアクセスできないようにロックダウンされます。 モバイルのスマートカード
查看全文
在不烧断熔丝的情况下测试 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.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周,之后的回复将被忽略。 如果您之后有相关问题,请另开新帖并引用已关闭的帖子。 ------------------------------------------------------------------------------- Re: Test HAB on IMXRT1024 without burning fuses @Kan_Li我觉得你误解了,因为启动数据是以小端序 32 位字存储的,所以两个二进制文件中的起始位置是相同的。 起始地址 0x60000000 启动数据大小为 LED闪烁 - 0x00400000 (4MB) 我的项目文件大小为 - 0x00040000 (256KB) 所以根据你的解释,IVT 属于已定义的启动数据范围。
查看全文
Login with keyfob/smartcard only I work in a manufacturing company and we're looking at putting PCs out on the shop floor for employees to be able to do things like look at parts drawings, sign off that tasks are completed etc. As we want this to be as painless as possible but still have a record of who is signing off on the tasks, we are looking at the best way for the employees to use the access control badges they already have for accessing doors and clocking in and out. If that's not feasible we're certainly open to other options that would allow the employees to log in with some kind of physical token and never have to touch a keyboard or mouse let alone remember user names and passwords. I've looked into smart cards, but it appears that they require a PIN which we want to avoid if at all possible. We understand the inherant security risks and these devices would be locked down to only be able to do specific tasks and not have access to another parts of the network. Smart Cards on Mobile
查看全文
LPC43S57 USB1 主机配置问题 HI 我们正在尝试使用 LPC43S57 控制器的 USB1 外围设备作为 USB 主机来连接客户主板中的设备。我们使用 KEIL MDK 配置 USB 栈和 USB 驱动程序。   当我们调用 USBH_Initialize(1)函数时,它会返回一个错误,表明"Controller 不存在" 。我们尝试在互联网上搜索有关 USB1 硬件连接的信息,发现很多地方都提到,如果没有外部 PHY,USB1 外围设备将无法工作。不过,数据表显示它支持片上全速 PHY。   能否向我们说明 USB1 是否具有全速 PHY 芯片?   不使用 USB1_VBUS 引脚,因为它是主机,而我们连接的设备是自供电设备。   下面是我们作为主机连接 USB1 的快照   此致 萨巴里什-库马尔 Re: LPC43S57 USB1 Host Configuration issue 你好@HeatherUlrich 您是否将 USB1 从主机模式更改为设备模式并开发了 device_cdc 项目? 如果是,你可以先在板上运行 LPCopen 下的 CDC 演示版进行测试。 这将有助于确认硬件是否存在任何问题。 谢谢。 BR 爱丽丝 Re: LPC43S57 USB1 Host Configuration issue @Slope Game总之,说到令人震惊的崩溃,我曾经花了一整个周末的时间来处理一个无法正确枚举的微控制器。结果发现,一个错误配置的时钟速度是罪魁祸首,由此引发了一连串意想不到的错误,真是 调试。这真是令人难以置信的沮丧。 Re: LPC43S57 USB1 Host Configuration issue 你好@Alice_Yang 我已经将 CLK_USB1 配置为为 60MHZ 的 USB1 接口生成时钟。我已将 USB1 配置为设备(全速模式)并连接到 PC。在 LPC43S57 USB 控制器中,我可以在 USB 状态寄存器中看到 USB 是作为设备连接的,但在 PC 中我看不到任何 COM 端口或任何其他 USB 设备已连接。我已将 USB0 配置为设备并连接到 PC,它被检测为 COM 端口,不适用于 USB 1 配置。 我附上了 USB1 设备配置图片供你参考 此致 萨巴里什-库马尔 Re: LPC43S57 USB1 Host Configuration issue 你好@Sabarish 在 USB 全速模式下,使用 CLK_USB1 为 USB1 接口产生时钟,无需外部 PHY。在高速模式下,外部 PHY 为 USB1 接口产生时钟,必须通过系统配置块中各自的引脚配置寄存器在引脚 PC_0 或 P8_8 上启用 USB1_ULPI_CLK。 请检查 USB1_DP 和 USB1_DM 信号是否正确连接到设备。此外,请确保正确安装软件配置。作为参考,您可以参考 LPCopen 库中提供的USB主机演示。 Alice_Yang_0-1757931704656.pngAlice_Yang_0-1757931704656.pngAlice_Yang_0-1757931704656.png BR 爱丽丝 Re: LPC43S57 USB1 Host Configuration issue 好吧,让我们来解开这个 USB 的难题!是内部 PHY 还是某些硬件怪癖在捣乱?控制器出错总是让人头疼。寻找合适的 USB 配置就像在迷宫中穿行。有一次,我正在与一个顽固的 Arduino 设置搏斗,试图让它与一个项目中的传感器通信。花了几个小时追踪电线和调试代码,最后才发现一个简单的电源问题就是根本原因,这让我这个充满 @geometrydash的下午彻底泡汤了。有时,显而易见的事情会被我们忽略,不是吗? Re: LPC43S57 USB1 Host Configuration issue 这是 USBH_Initialize 函数的一个棘手问题!我记得以前也遇到过类似的硬件连接问题。有时,即使是设置中看似微小的细节也会让人头疼。虽然我无法在此提供具体的硬件调试建议,但您是否考虑过查看 Geometry Dash论坛?那里的社区出人意料地了解各种技术挑战,可能有人在USB设备初始化时遇到了类似的问题。 Re: LPC43S57 USB1 Host Configuration issue 听起来你遇到了棘手的硬件配置问题!我肯定用过 USB 设置。关于片上 PHY,仔细检查芯片的具体硅修订版和勘误表可能会有所帮助。在您排除故障的同时,还可以在 CPS 测试中测试您的反应时间和鼠标技能。 CPS 测试网站上测试您的反应时间和鼠标技能,这可以分散您的注意力。它有助于突出重点!希望你能尽快解决 USB 问题! Re: LPC43S57 USB1 Host Configuration issue 您好 @UnblockedGames感谢您分享示意图快照。除了 PHY 问题外,了解 USB0 在同一块主板上能否正常工作会很有帮助,因为这可以帮助确定问题是与硬件还是软件有关。 Re: LPC43S57 USB1 Host Configuration issue 您在使用 LPC43S57 的 USB1 外设时遇到了问题,这很有意思,尤其是考虑到数据手册表明它具有片上全速 PHY。“控制器不存在”错误确实令人沮丧。我很想知道是否有人成功地将 USB1 用作该芯片上的主机,比如用于Pokerogue之类的程序。祝你好运,希望你能弄明白! Re: LPC43S57 USB1 Host Configuration issue “控制器不存在”这条消息听起来很令人沮丧。我可能会先检查 USB1 时钟配置、引脚分配,以及 USB1 主机初始化是否与选定的全速配置匹配。这里,片上全速 PHY 和外部 PHY 要求之间的区别尤为重要。在一次性更改多个设置之前,最好先分别测试设置的每个部分。在花费太多时间排查硬件故障后,我通常会玩一会儿像《几何冲刺》这样的小游戏休息一下,然后再以全新的思维方式重新解决问题。
查看全文
i.MX95:EdgeLock Enclave 密钥导入错误 - SAB CMD [0x47] Resp [0x1829](无效签名) 大家好, 我们目前正在按照应用笔记 AN14898 中的指南,将私钥导入 i.MX95 设备。 环境与参考文献: 目标设备: i.MX95 演示应用程序: imx_sec_apps/imx-ele-apps SPSDK 版本:最新标准工具集 目前已完成的活动: 已安装 Python、pip 和 SPSDK 工具集。 已成功构建主机应用程序和设备应用程序。 将 device/bin/ele_key_import 和 device/scripts/run_test_on_board.sh 复制到我们的目标i.MX95硬件。 执行设备端流程以生成 nxp_prod_ka_puk.bin。 已将 nxp_prod_ka_puk.bin 传输回我们的主机环境。 由于我们还没有最终的生产密钥,因此根据 SPSDK 文档,使用 SPSDK 工具生成了 SRK 密钥 (secp384r1)。 在主机端使用标准密钥导入模板生成 signed_msg.bin(-k 参数设置为 secp384r1)。 将生成的 signed_msg.bin 传输到i.MX95硬件。 用于生成签名邮件的命令: nxpimage signed-msg export -c key_exchange_temp.yaml -w assets 附件为 key_exchange_temp.yaml 文件,供您参考。 在 i.MX95 目标设备上运行 run_test_on_board.sh 时,所有文件均已找到,但 EdgeLock Enclave 拒绝了已签名消息块上的签名。以下是目标终端日志: nxp_prod_ka_puk.bin 文件存在。 oem_public_key.pem 文件存在。 signed_msg.bin 文件存在。 你好,世界!2026年7月16日 06:54:40 9547bbd 签名消息:728 字节 02d802890200000000000000b8000000000000000000000000000000000000000000000000000000000000000000000000000000e6a7000000004701000000000000000000000000000000004707000000454c45090102090000000000920001010000000040000009010008000000000100000000000070577819deccdf2670d801e8f4291d3539081da49b1e1b63d55039e5993242b30f0000000000000000000000000000000000000000000000000000000000000000011c029000001000b40100000000000000a4015a01000000d7340143e14c00270102000030003000c2a99777d1fc00dc7e14d3d43ac3f68a44d9b52c882d3c09eac0db7fac1901242576bac6143785e5815db546e385d81000000000000000000000000000000000e14c00270102000030003000e358e1159c0cb645e7059c1b04b49e39b3563167472507278245d4dee439dd32e7ce3da413e397cbd7959cf147d25c2300000000000000000000000000000000e14c00270102000030003000482fb4f1ceb6e266221b0a13dbbb04c637a1c238b76b108397e98eb4557cafb2075036e05b9a0ee4fa6aa09a5f3951e500000000000000000000000000000000e14c00270102000030003000c93a6b4881ae912da31da8249e4f58473eb88cc1dc46f5ec6d363dc52b8a5c12c91e711ad726153d382dabbe6bef27cc000000000000000000000000000000000068005d00000000a5e31e11bfb02c62756d9d3ba5152768e5bea9aab8f3f13ccf3bd287a0438e9708088cafc5671e2aaf1bc3b413457b6a59a691dcef672fa65dac12ed328effac963c41ec0200b0a9acf67e0f2755f752872f77d2c20d6987f80e8008ac26de3d006800d800000000f4cf9cc965b3643d5dc5c5070a506196649daf898d328afd18e88eb9ece96e39646bf6385b9d42e1fc2f93f07f66e9c8c914becef9394c0c3cf549766483c7f94b6a9325bea51b79280eb76484e064637570c0ef7387ec0ffb8398ec36966c3a00000000 OEM 导入 PUK 码:65 字节 0451c46d24d30864c5275c634a3a339949654b34c0a4f294a8c107c504360ff4b 55044918b71b16109a7bbfba8fbcf49b91720ad8e9c0109e6b2eed8f6a504ab64 hsm_open_session 成功 hsm_open_key_store_service 成功 hsm_open_key_management_service 成功 SAB 错误:SAB CMD [0x47] Resp [0x1829] - SIGNED 消息中的签名无效。 hsm_key_exchange 失败,错误代码:0xfe 密钥交换失败:254 非常感谢您能提供任何关于解决 i.MX95 签名验证问题的见解。 谢谢, 安基特·阿格拉瓦尔 Re: i.MX95: EdgeLock Enclave Key Import Error - SAB CMD [0x47] Resp [0x1829] (Invalid Signature) 你好@Ankit_Agrawal 我想知道你是否会在SRK一代之后把SRK烧掉。请查看我附上的sign.yaml文件,其中包含必要的信息。 请尝试以下命令(前提是您已安装 flash.bin 文件):(系统引导加载程序)生成SRKH。 nxpimage ahab sign -c sign.yaml -b flash.bin -o flash_directsign.bin -fs outputs 输出结果如下所示。 Jessie_Lee_0-1786699088609.pngJessie_Lee_0-1786699088609.pngJessie_Lee_0-1786699088609.pngJessie_Lee_0-1786699088609.pngJessie_Lee_0-1786699088609.pngJessie_Lee_0-1786699088609.png 在输出文件夹中,可以看到 bcf 文件(ahab_oem0_srk0_hash_nxpele.bcf)。 您可以按照以下熔丝命令(索引 128 至 143)来熔丝 SRKH。 # nxpele AHAB SRKH 融合编程脚本 # 由 SPSDK 3.4.0 生成 # 系列:mimx9596,版本:最新 # 值:0xCCC0605919B6400771CF88A002FB6BF27DFA9CE09BAD94516DD7E4D399369A8FF5A6A1A671809DF4A71A7CB208B4EDC009CDF3FF25EC074DECBBEE8300D5D44C # 描述:四个 SRK 密钥的哈希值的 SHA512 哈希摘要 # 分组寄存器名称:SRKH # OTP ID:OEM_SRKH0,值:0x5960C0CC write-fuse --index 128 --data 0x5960C0CC # OTP ID:OEM_SRKH1,值:0x0740B619 write-fuse --index 129 --data 0x740B619 # OTP ID:OEM_SRKH2,值:0xA088CF71 write-fuse --index 130 --data 0xA088CF71 # OTP ID:OEM_SRKH3,值:0xF26BFB02 write-fuse --index 131 --data 0xF26BFB02 # OTP ID:OEM_SRKH4,值:0xE09CFA7D write-fuse --index 132 --data 0xE09CFA7D # OTP ID:OEM_SRKH5,值:0x5194AD9B write-fuse --index 133 --data 0x5194AD9B # OTP ID:OEM_SRKH6,值:0xD3E4D76D write-fuse --index 134 --data 0xD3E4D76D # OTP ID:OEM_SRKH7,值:0x8F9A3699 write-fuse --index 135 --data 0x8F9A3699 # OTP ID:OEM_SRKH8,值:0xA6A1A6F5 write-fuse --index 136 --data 0xA6A1A6F5 # OTP ID:OEM_SRKH9,值:0xF49D8071 write-fuse --index 137 --data 0xF49D8071 # OTP ID:OEM_SRKH10,值:0xB27C1AA7 write-fuse --index 138 --data 0xB27C1AA7 # OTP ID:OEM_SRKH11,值:0xC0EDB408 write-fuse --index 139 --data 0xC0EDB408 # OTP ID:OEM_SRKH12,值:0xFFF3CD09 write-fuse --index 140 --data 0xFFF3CD09 # OTP ID:OEM_SRKH13,值:0x4D07EC25 write-fuse --index 141 --data 0x4D07EC25 # OTP ID:OEM_SRKH14,值:0x83EEBBEC write-fuse --index 142 --data 0x83EEBBEC # OTP ID:OEM_SRKH15,值:0x4CD4D500 write-fuse --index 143 --data 0x4CD4D500 您可以使用以下命令来烧录SRKH nxpele -f mimx9596 批处理输出\ahab_oem0_srk0_hash_nxpele.bcf 如果您已经烧录了SRKH但出现以下无效的鸣唱错误,请将singed_message.bin文件连同您的SRKH文件(包括所有SRKH输出)一起发送给我们。 Re: i.MX95: EdgeLock Enclave Key Import Error - SAB CMD [0x47] Resp [0x1829] (Invalid Signature) 你好@Ankit_Agrawal , 我们的内部团队正在审核您的问题,并将根据审核结果向您汇报最新情况。 与此同时,请查看以下案例,该案例与您遇到的问题类似。 建议的解决方案是验证fuse_version是否匹配正确。 https://community.nxp.com/t5/i-MX-Processors/hsm-import-key-returns-with-0xF0-Bad-Signature/td-p/2163777 谢谢! 顺祝商祺! 理查德 Re: i.MX95: EdgeLock Enclave Key Import Error - SAB CMD [0x47] Resp [0x1829] (Invalid Signature) 你好@Ankit_Agrawal 请按照以下步骤使用 SPSDK 刻录 SRK 步骤1 。启动设备时,停在 u-boot 控制台,运行 u-boot=> fastboot 0 步骤2 。在 SPSDK 控制台中,您必须使用以下命令(没有 ahab 事件)。 nxpele -f mimx9596 获取事件 步骤3 。如果没有事件发生,您现在可以在 SPSDK 控制台中烧录 SRK 密钥。 nxpele -f mimx9596 批处理输出\ahab_oem2_srk0_hash_nxpele.bcf BRS 杰西 Re: i.MX95: EdgeLock Enclave Key Import Error - SAB CMD [0x47] Resp [0x1829] (Invalid Signature) 嗨@Jessie_Lee , 谢谢你提供的信息。 我们已经找到了 flash.bin 文件,并能够执行生成 SRKH 的必要步骤。 生成 SRKH 后,我们需要将其熔丝到硬件中。要执行熔断操作,硬件/电路板必须处于以下状态: Fastboot 模式。请问您能否帮我们把设备切换到 Fastboot 模式? 在尝试熔接钥匙时,我们遇到以下错误: Ankit_Agrawal_0-1787636692485.pngAnkit_Agrawal_0-1787636692485.pngAnkit_Agrawal_0-1787636692485.pngAnkit_Agrawal_0-1787636692485.pngAnkit_Agrawal_0-1787636692485.png 设备目前似乎未处于 Fastboot 模式。非常感谢您能提供如何启用 Fastboot 模式的指导。 谢谢, 安基特 Re: i.MX95: EdgeLock Enclave Key Import Error - SAB CMD [0x47] Resp [0x1829] (Invalid Signature) @Jessie_Lee 据报道,情况如下所示,目前存在一些问题。能否获得一些帮助? -------------------------------------------------------------------------------------------------------------- 但是,当我执行熔丝操作的命令时,遇到了以下错误。 我也尝试过重置硬件,但问题依旧存在。您知道这究竟是什么原因造成的吗? rakhyoung_0-1789101296622.pngrakhyoung_0-1789101296622.pngrakhyoung_0-1789101296622.pngrakhyoung_0-1789101296622.png @Ankit_Agrawal 如有必要,请随时提供补充说明。 Re: i.MX95: EdgeLock Enclave Key Import Error - SAB CMD [0x47] Resp [0x1829] (Invalid Signature) 来自@Ankit_Agrawal 的反馈,存在 fastboot 进入问题。 @rakhyoung你是说你也遇到了无法进入fastboot模式的问题吗? 你试过我上面分享的那个命令吗?在 uboot 阶段尝试执行 fastboot 0 以下命令时,出现什么错误? 步骤1 。启动设备时,停在 u-boot 控制台,运行 u-boot=> fastboot 0 BRS 杰西 Re: i.MX95: EdgeLock Enclave Key Import Error - SAB CMD [0x47] Resp [0x1829] (Invalid Signature) 你好@Jessie_Lee 很抱歉回复晚了。 我成功地在设备端的 U-Boot 控制台停止了运行。但是,当尝试使用以下命令从主机端熔丝密钥时: nxpele -f mimx9596 -p /dev/ttyUSB1 batch outputs/ahab_oem2_srk0_hash_nxpele.bcf 我遇到了以下错误: Screenshot from 2026-09-13 21-29-30.png截图来自 2026-09-13 21-29-30.png 我也尝试过重置硬件,但问题依旧存在。您知道这究竟是什么原因造成的吗? 谢谢, 安基特
查看全文
S32G274A 上 PFE HIF DMA 到 DDR 通信对 QuadSPI MCR 配置的意外依赖性 你好,专家 我们正在调查运行 QNX 7.1 的 S32G274A 上 QuadSPI 和 PFE HIF 数据路径之间意想不到的依赖关系。如果 QuadSPI 未初始化,PFE0 和 PFE2 将成功完成 PHY、EMAC、固件和 HIF 初始化。EMAC 可以接收有效帧,但 HIF DMA 不消耗 TX 或 RX 描述符,因此数据包无法在 PFE 和 DDR 之间传输,ARP/ping 失败。通过逐步简化 QuadSPI 初始化序列,我们发现只需一次写入即可恢复 PFE 通信:将 0x020F000C 写入 QuadSPI 模块配置寄存器 QuadSPI_MCR,其偏移量为 0x0000,距离 QuadSPI 基地址 0x40134000(即物理地址 0x40134000)不等。如果删除此写入操作,PFE 通信将持续失败。Flash 识别、JEDEC 事务、QNX F3S 框架、/dev/fs0 和启动延迟均已被排除在必要条件之外。我们目前的解释是,相关的效果可能是将 QuadSPI_MCR[MDIS] 清除为 0,从而启用 QuadSPI 时钟。 请问清除 QuadSPI_MCR[MDIS] 是否可以激活 S32G274A 上与 PFE HIF DMA-to-DDR/XBAR/NoC 路径共享的任何时钟请求、桥接或互连状态?PFE HIF DDR 访问与 QuadSPI 时钟或互连状态之间是否存在任何未记录或间接的依赖关系?或者这是否表明平台启动期间缺少共享时钟/NoC 初始化步骤?应该配置哪个 MC_CGM、RDC、MC_ME、NoC 或 PFE 平台寄存器来独立建立所需的状态,而不是让 PFE 驱动程序访问 QuadSPI MCR? 我们目前正在进行补充测试,以确认单独清除 MDIS 是否既必要又充分;目前,已确认的触发条件是完整的 MCR 写入值 0x020F000C。 Re: Unexpected Dependency of PFE HIF DMA-to-DDR Communication on QuadSPI MCR Configuration on S32G27 嗨,维特旺 感谢您与我们联系。 1. 您是否在使用客户板? 2.您的PFE版本是什么? BR 乔伊 Re: Unexpected Dependency of PFE HIF DMA-to-DDR Communication on QuadSPI MCR Configuration on S32G27 嗨 Joey,是的,我们使用的是基于 S32G274A 的定制电路板。PFE0 和 PFE2 通过 RGMII 连接到 KSZ9031 PHY。操作系统为QNX 7.1。PFE软件版本如下: - NXP PFE QNX驱动程序版本:PFE-DRV_S32G_QNX_1.9.0 - PFE固件版本:PFE-FW_S32G_1.12.0 - 驱动程序报告的PFE硬件版本:0x00050300 如果您需要完整的启动日志、时钟配置、原理图部分或寄存器转储以进行比较,请告知。此致敬礼,Waitewang Re: Unexpected Dependency of PFE HIF DMA-to-DDR Communication on QuadSPI MCR Configuration on S32G27 您好, 感谢您的回复。 1.你们的S32G启动方法是什么?早期阶段是否没有对QSPI进行初始化? 2.尝试只操作 MDIS 位,看看是否会影响结果。 BR 乔伊 Re: Unexpected Dependency of PFE HIF DMA-to-DDR Communication on QuadSPI MCR Configuration on S32G27 嗨,乔伊, 1.我们在 U-Boot 中通过 TFTP 加载 QNX IFS 和 DTB,并使用 bootm 启动 QNX。QNX 不是从 QSPI Flash 加载的。在启动 PFE 驱动程序之前,QNX 不会启动 devf-qspi-s32g 或显式初始化 QuadSPI 控制器。 2. 我们使用对 QuadSPI 模块配置寄存器(QuadSPI_MCR,基地址 0x40134000,偏移量 0x0000)进行读-修改-写操作来测试 MDIS 位。 测试 A — 无 QuadSPI MCR 操作 QSPI驱动程序未启动,QuadSPI_MCR未写入。PFE通信失败。 测试 B — 仅设置 MDIS MCR 之前 = 0x030F00CC MCR 写入 = 0x030F40CC MCR 后 = 0x030F40CC MDIS = 1 PFE沟通成功 只有 MDIS 的第 14 位从 0 变为 1。QSPI Flash 文件系统未启动,/dev/fs0 未创建,且未执行 JEDEC 访问。测试程序在寄存器操作后正常退出。 测试 C — 仅通过 MDIS 初始 MDIS 值已经是 0,因此未更改的 MCR 值 0x030F00CC 被写回。PFE通信失败。 我们之前也测试过将完整值 0x020F000C 写入 QuadSPI_MCR。在这种情况下,PFE通信成功了。 请问为什么仅将 QuadSPI MCR MDIS 位从 0 设置为 1 会影响 S32G274A 上的 PFE0/PFE2 通信?QuadSPI MCR 操作与 PFE HIF/DMA 到 DDR 路径之间是否存在任何必需的初始化顺序、已知的错误或已记录的依赖关系? BR, 怀特旺 Re: Unexpected Dependency of PFE HIF DMA-to-DDR Communication on QuadSPI MCR Configuration on S32G27 嗨,维特旺 感谢您的回复。 我目前正在就此事对您进行内部调查。我会尽快向您汇报进展情况! BR 乔伊
查看全文
Unexpected Dependency of PFE HIF DMA-to-DDR Communication on QuadSPI MCR Configuration on S32G274A hello expert We are investigating an unexpected dependency between QuadSPI and the PFE HIF data path on an S32G274A running QNX 7.1. If QuadSPI is not initialized, PFE0 and PFE2 complete PHY, EMAC, firmware, and HIF initialization successfully. The EMAC can receive valid frames, but the HIF DMA does not consume TX or RX descriptors, so packets are not transferred between PFE and DDR, and ARP/ping fails. After reducing the QuadSPI initialization sequence step by step, we found that a single write is sufficient to restore PFE communication: writing 0x020F000C to the QuadSPI Module Configuration Register, QuadSPI_MCR at offset 0x0000 from QuadSPI base address 0x40134000—that is, physical address 0x40134000. If this write is removed, PFE communication consistently fails. Flash identification, JEDEC transactions, the QNX F3S framework, /dev/fs0, and startup delay have all been excluded as necessary conditions. Our current interpretation is that the relevant effect may be clearing QuadSPI_MCR[MDIS] to 0, which enables the QuadSPI clocks. Could you please confirm whether clearing QuadSPI_MCR[MDIS] can activate any clock request, bridge, or interconnect state shared with the PFE HIF DMA-to-DDR/XBAR/NoC path on S32G274A? Is there any undocumented or indirect dependency between PFE HIF DDR access and the QuadSPI clock or interconnect state, or could this indicate a missing shared-clock/NoC initialization step during platform startup? Which MC_CGM, RDC, MC_ME, NoC, or PFE platform register should be configured to establish the required state independently, instead of having the PFE driver access the QuadSPI MCR? We are currently performing complementary tests to confirm whether clearing MDIS alone is both necessary and sufficient; at this stage, the confirmed trigger is the complete MCR write value 0x020F000C. Re: Unexpected Dependency of PFE HIF DMA-to-DDR Communication on QuadSPI MCR Configuration on S32G27 Hi,waitewang Thank you for contacting us. 1. Are you using a customer board? 2.What is your PFE version? BR Joey Re: Unexpected Dependency of PFE HIF DMA-to-DDR Communication on QuadSPI MCR Configuration on S32G27 Hi Joey, Yes, we are using a custom board based on the S32G274A. PFE0 and PFE2 are connected through RGMII to KSZ9031 PHYs. The operating system is QNX 7.1. The PFE software versions are as follows: - NXP PFE QNX driver version: PFE-DRV_S32G_QNX_1.9.0 - PFE firmware version: PFE-FW_S32G_1.12.0 - PFE hardware version reported by the driver: 0x00050300 Please let me know if you need the complete startup log, clock configuration, schematic section, or register dump for comparison. Best regards, Waitewang Re: Unexpected Dependency of PFE HIF DMA-to-DDR Communication on QuadSPI MCR Configuration on S32G27 Hi, Thank you for your reply. 1.What is your method of S32G booting? Was there no initialization of QSPI in the early stage? 2.Try operating only the MDIS bit to see if it affects the results. BR Joey Re: Unexpected Dependency of PFE HIF DMA-to-DDR Communication on QuadSPI MCR Configuration on S32G27 Hi Joey, 1. We load the QNX IFS and DTB via TFTP in U-Boot and start QNX with bootm. QNX is not loaded from QSPI Flash. Before starting the PFE driver, QNX does not start devf-qspi-s32g or explicitly initialize the QuadSPI controller. 2. We tested the MDIS bit using read-modify-write operations on the QuadSPI Module Configuration Register (QuadSPI_MCR, base address 0x40134000, offset 0x0000). Test A — No QuadSPI MCR operation The QSPI driver was not started and QuadSPI_MCR was not written. PFE communication failed. Test B — Set only MDIS MCR before = 0x030F00CC MCR write = 0x030F40CC MCR after = 0x030F40CC MDIS = 1 PFE Communication successful Only MDIS, bit 14, was changed from 0 to 1. The QSPI Flash filesystem was not started, /dev/fs0 was not created, and no JEDEC access was performed. The test program exited normally after the register operation. Test C — Clear only MDIS The initial MDIS value was already 0, so the unchanged MCR value 0x030F00CC was written back. PFE communication failed. We also previously tested writing the complete value 0x020F000C to QuadSPI_MCR. PFE communication succeeded in that case. Could you please advise why setting only the QuadSPI MCR MDIS bit from 0 to 1 affects PFE0/PFE2 communication on S32G274A? Is there any required initialization sequence, known erratum, or documented dependency between QuadSPI MCR operations and the PFE HIF/DMA-to-DDR path? BR, Waitewang Re: Unexpected Dependency of PFE HIF DMA-to-DDR Communication on QuadSPI MCR Configuration on S32G27 Hi,waitewang Thank you for your reply. I am currently conducting an internal investigation into this matter for you. I will get back to you with the progress! BR Joey
查看全文
i.MX95: EdgeLock Enclave Key Import Error - SAB CMD [0x47] Resp [0x1829] (Invalid Signature) Hi Team, We are currently working on importing a private key to an i.MX95 device following the guidelines in application note AN14898. Environment & References: Target Device: i.MX95 Demo Application: imx_sec_apps/imx-ele-apps SPSDK Version: Latest standard toolset Activities Completed So Far: Installed Python, pip, and the SPSDK toolset. Successfully built both the Host and Device applications. Copied device/bin/ele_key_import and device/scripts/run_test_on_board.sh to our target i.MX95 hardware. Executed the device-side flow to generate nxp_prod_ka_puk.bin. Transferred nxp_prod_ka_puk.bin back to our host environment. Generated SRK keys (secp384r1) using the SPSDK utility according to the SPSDK Documentation since we do not have final production keys yet. Generated the signed_msg.bin on the host side using the standard key import template (with the -k parameter set to secp384r1). Transferred the generated signed_msg.bin to the i.MX95 hardware. Command used to generate signed message: nxpimage signed-msg export -c key_exchange_temp.yaml -w assets Attached key_exchange_temp.yaml for reference. When running run_test_on_board.sh on the i.MX95 target device, all files are found, but the EdgeLock Enclave rejects the signature on the signed message block.Here is our target terminal log: nxp_prod_ka_puk.bin exists. oem_public_key.pem exists. signed_msg.bin exists. Hello, World! Jul 16 2026:06:54:40 9547bbd Signed Message: 728 bytes 02d802890200000000000000b8000000000000000000000000000000000000000000000000000000000000000000000000000000e6a7000000004701000000000000000000000000000000004707000000454c45090102090000000000920001010000000040000009010008000000000100000000000070577819deccdf2670d801e8f4291d3539081da49b1e1b63d55039e5993242b30f0000000000000000000000000000000000000000000000000000000000000000011c029000001000b40100000000000000a4015a01000000d7340143e14c00270102000030003000c2a99777d1fc00dc7e14d3d43ac3f68a44d9b52c882d3c09eac0db7fac1901242576bac6143785e5815db546e385d81000000000000000000000000000000000e14c00270102000030003000e358e1159c0cb645e7059c1b04b49e39b3563167472507278245d4dee439dd32e7ce3da413e397cbd7959cf147d25c2300000000000000000000000000000000e14c00270102000030003000482fb4f1ceb6e266221b0a13dbbb04c637a1c238b76b108397e98eb4557cafb2075036e05b9a0ee4fa6aa09a5f3951e500000000000000000000000000000000e14c00270102000030003000c93a6b4881ae912da31da8249e4f58473eb88cc1dc46f5ec6d363dc52b8a5c12c91e711ad726153d382dabbe6bef27cc000000000000000000000000000000000068005d00000000a5e31e11bfb02c62756d9d3ba5152768e5bea9aab8f3f13ccf3bd287a0438e9708088cafc5671e2aaf1bc3b413457b6a59a691dcef672fa65dac12ed328effac963c41ec0200b0a9acf67e0f2755f752872f77d2c20d6987f80e8008ac26de3d006800d800000000f4cf9cc965b3643d5dc5c5070a506196649daf898d328afd18e88eb9ece96e39646bf6385b9d42e1fc2f93f07f66e9c8c914becef9394c0c3cf549766483c7f94b6a9325bea51b79280eb76484e064637570c0ef7387ec0ffb8398ec36966c3a00000000 OEM Import PUK: 65 bytes 0451c46d24d30864c5275c634a3a339949654b34c0a4f294a8c107c504360ff4b55044918b71b16109a7bbfba8fbcf49b91720ad8e9c0109e6b2eed8f6a504ab64 hsm_open_session success hsm_open_key_store_service success hsm_open_key_management_service success SAB Error: SAB CMD [0x47] Resp [0x1829] - Invalid Signature in SIGNED message. hsm_key_exchange failed err:0xfe Key exchange failed: 254 Any insight on resolving this signature verification issue for the i.MX95 would be greatly appreciated. Thanks, Ankit Agrawal Re: i.MX95: EdgeLock Enclave Key Import Error - SAB CMD [0x47] Resp [0x1829] (Invalid Signature) Hi @Ankit_Agrawal  I am wondering if you burn SRKH  after SRK generation.  for necessary sign.yaml file please check my attached file.  Please try below command (precondition is you should have flash.bin: bootloader of system) to generate SRKH.   nxpimage ahab sign -c sign.yaml -b flash.bin -o flash_directsign.bin -fs outputs output will be as below. Jessie_Lee_0-1786699088609.pngJessie_Lee_0-1786699088609.pngJessie_Lee_0-1786699088609.pngJessie_Lee_0-1786699088609.pngJessie_Lee_0-1786699088609.pngJessie_Lee_0-1786699088609.png and from the ouputs folder, you could see bcf file(ahab_oem0_srk0_hash_nxpele.bcf).  you could follow below fuse command  (index 128 ~143) that you need to fuse for SRKH.  # nxpele AHAB SRKH fuses programming script # Generated by SPSDK 3.4.0 # Family: mimx9596, Revision: latest # Value: 0xCCC0605919B6400771CF88A002FB6BF27DFA9CE09BAD94516DD7E4D399369A8FF5A6A1A671809DF4A71A7CB208B4EDC009CDF3FF25EC074DECBBEE8300D5D44C # Description: SHA512 hash digest of hash of four SRK keys # Grouped register name: SRKH # OTP ID: OEM_SRKH0, Value: 0x5960C0CC write-fuse --index 128 --data 0x5960C0CC # OTP ID: OEM_SRKH1, Value: 0x0740B619 write-fuse --index 129 --data 0x740B619 # OTP ID: OEM_SRKH2, Value: 0xA088CF71 write-fuse --index 130 --data 0xA088CF71 # OTP ID: OEM_SRKH3, Value: 0xF26BFB02 write-fuse --index 131 --data 0xF26BFB02 # OTP ID: OEM_SRKH4, Value: 0xE09CFA7D write-fuse --index 132 --data 0xE09CFA7D # OTP ID: OEM_SRKH5, Value: 0x5194AD9B write-fuse --index 133 --data 0x5194AD9B # OTP ID: OEM_SRKH6, Value: 0xD3E4D76D write-fuse --index 134 --data 0xD3E4D76D # OTP ID: OEM_SRKH7, Value: 0x8F9A3699 write-fuse --index 135 --data 0x8F9A3699 # OTP ID: OEM_SRKH8, Value: 0xA6A1A6F5 write-fuse --index 136 --data 0xA6A1A6F5 # OTP ID: OEM_SRKH9, Value: 0xF49D8071 write-fuse --index 137 --data 0xF49D8071 # OTP ID: OEM_SRKH10, Value: 0xB27C1AA7 write-fuse --index 138 --data 0xB27C1AA7 # OTP ID: OEM_SRKH11, Value: 0xC0EDB408 write-fuse --index 139 --data 0xC0EDB408 # OTP ID: OEM_SRKH12, Value: 0xFFF3CD09 write-fuse --index 140 --data 0xFFF3CD09 # OTP ID: OEM_SRKH13, Value: 0x4D07EC25 write-fuse --index 141 --data 0x4D07EC25 # OTP ID: OEM_SRKH14, Value: 0x83EEBBEC write-fuse --index 142 --data 0x83EEBBEC # OTP ID: OEM_SRKH15, Value: 0x4CD4D500 write-fuse --index 143 --data 0x4CD4D500 you could use below command to burn SRKH nxpele -f mimx9596 batch outputs\ahab_oem0_srk0_hash_nxpele.bcf If you burn the SRKH already but failed with below invalid singing, please share the singed_message.bin to us.  with your SRKH (including srk output all).  Re: i.MX95: EdgeLock Enclave Key Import Error - SAB CMD [0x47] Resp [0x1829] (Invalid Signature) Hello @Ankit_Agrawal, Our internal team is reviewing your issue and will update you accordingly. In the meantime, please review the case below, which is similar to the issue you are encountering. The suggested solution is to verify that the fuse_version matches correctly. https://community.nxp.com/t5/i-MX-Processors/hsm-import-key-returns-with-0xF0-Bad-Signature/td-p/2163777 Thank you. Best Regards, Richard Re: i.MX95: EdgeLock Enclave Key Import Error - SAB CMD [0x47] Resp [0x1829] (Invalid Signature) Hi @Jessie_Lee , Thanks for the information. We have located the flash.bin file and are able to perform the necessary steps to generate the SRKH. After generating the SRKH, we need to fuse it to the hardware. To perform the fuse operation, the hardware/board must be in Fastboot mode. Could you please help us switch the device to Fastboot mode? While attempting to fuse the keys, we are encountering the following error: Ankit_Agrawal_0-1787636692485.pngAnkit_Agrawal_0-1787636692485.pngAnkit_Agrawal_0-1787636692485.pngAnkit_Agrawal_0-1787636692485.pngAnkit_Agrawal_0-1787636692485.pngAnkit_Agrawal_0-1787636692485.png It appears that the device is not currently in Fastboot mode. Any guidance on how to enable Fastboot mode on the board would be greatly appreciated. Thanks,  Ankit Re: i.MX95: EdgeLock Enclave Key Import Error - SAB CMD [0x47] Resp [0x1829] (Invalid Signature) Hi @Ankit_Agrawal  Please follow up below steps to burn SRK using SPSDK step#1. when you boot device, stop at u-boot console , run  u-boot=> fastboot 0 step#2.  In SPSDK console , you must there is no ahab events) using below command. nxpele -f mimx9596 get-events  step#3. If there is no event,  you could burn SRK key now in SPSDK console. nxpele -f mimx9596 batch outputs\ahab_oem2_srk0_hash_nxpele.bcf BRs jessie Re: i.MX95: EdgeLock Enclave Key Import Error - SAB CMD [0x47] Resp [0x1829] (Invalid Signature) @Jessie_Lee  It is reported that things are not working as shown below. Is it possible to get some support? -------------------------------------------------------------------------------------------------------------- However, when I execute the command to perform the fuse operation, I encounter the error below. I tried resetting the hardware too, but I'm still facing the same issue. Do you have any ideas on why this might be happening? rakhyoung_0-1789101296622.pngrakhyoung_0-1789101296622.pngrakhyoung_0-1789101296622.pngrakhyoung_0-1789101296622.png @Ankit_Agrawal  Feel free to provide additional explanation if necessary. Re: i.MX95: EdgeLock Enclave Key Import Error - SAB CMD [0x47] Resp [0x1829] (Invalid Signature) from @Ankit_Agrawal  , there was fastboot entering issue.  @rakhyoung  Do you mean you are also having issue to enter fastboot ? did you try to  below command..? that I shared.. above?  what is error when you try to below fastboot 0 at uboot stage?  step#1. when you boot device, stop at u-boot console , run  u-boot=> fastboot 0 BRs jessie Re: i.MX95: EdgeLock Enclave Key Import Error - SAB CMD [0x47] Resp [0x1829] (Invalid Signature) Hello @Jessie_Lee  Sorry for the delayed response. I successfully managed to stop at the U-Boot console on the device side. However, when trying to fuse the key from the host side using the following command: nxpele -f mimx9596 -p /dev/ttyUSB1 batch outputs/ahab_oem2_srk0_hash_nxpele.bcf I encountered the following error: Screenshot from 2026-09-13 21-29-30.pngScreenshot from 2026-09-13 21-29-30.png I tried resetting the hardware too, but I'm still facing the same issue. Do you have any ideas on why this might be happening? Thanks, Ankit
查看全文
LEARNING I am new to NXP S32K144. What is the recommended development environment for a beginner, and what should I learn first?
查看全文
S32DS activation code The software version is S32DS_ARM_Win32_v2018.R1_b180326. Could you provide the activation code? PEG GUI Re: S32DS activation code Dear customer, S32 Design Studio is free of charge software that just requires to be activated. The activation process is incorporated into the S32DS installer. Before you proceed to the installation you always need to get an activation code. The activation code is typically sent automatically to your email registered on www.nxp.com  account when you proceed to downloading of S32DS installer. Please follow the instructions:  https://community.nxp.com/t5/S32-Design-Studio-Knowledge-Base/HOWTO-Activate-S32-Design-Studio/ta-p/1128340 If still the issue please let me know. Thank you. Have a nice day. Best regards Pavla
查看全文
フラッシュドライブ # 今 マーケット で一番良いフラッシュドライブはどれか ## どうか教えて
查看全文
使用 S32K3X8EVB-Q289 板载调试器对自定义 S32K358 目标进行编程 我目前正在使用 S32K3X8EVB-Q289 评估板,并基于 S32K358 MCU 开发了定制硬件设计。 请问您能否澄清一下: 官方是否支持使用 EVB 板载调试器对外部 S32K358 目标进行编程/调试? 如果支持,EVB 需要进行哪些跳线设置或硬件修改? 为此应该使用哪个调试连接器? 与使用 S32 调试探针相比,有哪些局限性? 是否有相关文档或应用笔记描述此配置? 感谢您的支持。 问候, 亚什·古普塔 Re: Using S32K3X8EVB-Q289 On-Board Debugger to Program a Custom S32K358 Target 你好@Yash2530 , 1. 是的,支持使用 S32K3X8EVB-Q289 板载调试器对外部 S32K358 目标进行编程/调试。实际上,EVB 板载 OpenSDA 调试器使用的是 P&E Micro 开发的引导加载程序/调试应用程序 - https://community.nxp.com/t5/S32-Design-Studio/Which-debugging-interface-is-better/mp/1715877 2. 对于此使用情况,EVB 上不需要焊接返工或跳线设置。 3. J55 USB 主机连接器。 4. 实际上,对于外部 S32K358 目标的标准烧录和源代码级调试,EVB 的板载调试器应该足够了。由于我不知道您最看重哪些功能,请您自行比较各项功能: https://www.nxp.com/design/design-center/software/automotive-software-and-tools/s32-design-studio-ide/s32-debugger-for-s32-platform:S32DBG-S32PLATFORM https://www.pemicro.com/products/product_viewDetails.cfm?product_id=15320180&productTab=5045 5. 是的, https://www.nxp.com/webapp/Download? colCode=S32K3X8EVB-Q289HWUM 顺祝商祺! 帕维尔 Re: Using S32K3X8EVB-Q289 On-Board Debugger to Program a Custom S32K358 Target @PavelL , 尝试对外部控制器进行编程时出现此错误。 CMD>VC 正在验证目标文件 CRC-16 校验值是否与设备范围匹配…… 区块 00400000-0042F4B7 ... 计算出的 CRC-16 值与数据块不匹配。(文件 = $A9EE,设备 = $EDEF) 验证设备闪存时出错 Flash编程过程中发生错误。 信息:DAP IDCODE = 0x6BA02477 信息:DAP 已成功启动。DP CTRL/STAT = 0xF0000000 启动 RESET 脚本 (C:\NXP\S32DS.3.6.7\eclipse\plugins\com.pemicro.debug.gdbjtag.pne_6.1.8.202603121731\supportFiles_ARM\NXP\S32K3xx\S32K358.mac)... REM 启用 MC_ME 模块中选定内核的时钟 延迟200毫秒…… 完毕。 REM 初始化 RAM 和 DMA: REM 初始化 DMA TCD: REM 将有效的可执行代码复制到每个要使用的核心的 RAM 中。 REM 启用 MC_ME 中所需的内核: 延迟20毫秒…… 完毕。 延迟20毫秒…… 完毕。 重置脚本 (C:\NXP\S32DS.3.6.7\eclipse\plugins\com.pemicro.debug.gdbjtag.pne_6.1.8.202603121731\supportFiles_ARM\NXP\S32K3xx\S32K358.mac)完全的。 PEmicro GDB 启动失败:闪存编程期间出错。调试会话结束。 PE错误:下载到设备时出错。调试会话结束。 通过 127.0.0.1 与“127.0.0.1”断开连接。通过端口“53100”与6224断开连接 PE-ERROR:错误:尝试发送响应,但连接已关闭。 通过 127.0.0.1 与“127.0.0.1”断开连接。通过端口“53104”与7224断开连接 信息:DAP IDCODE = 0x6BA02477 目标设备已断开连接。 Yash2530_0-1789183717483.jpegYash2530_0-1789183717483.jpeg 请帮我解决这些问题。 问候, 亚什·古普塔
查看全文
PIC CLBのユーレカ 特定のPIC MCU(例:pic16f13145ファミリ)には、Configurable Logic Blockと呼ばれるFPGA風のプログラム可能なロジックがあります。 私が使用しているpic16f13115は、それぞれ4入力ルックアップテーブルとDフリップフロップを備えた32個のセルで構成されています。 ツールの使い方を学ぶために、今日はPWM明るさ制御付き6つのLEDのチャーリープレックス対応を実装し、シミュレーションしました。ロジックCADキャンバスを使用する代わりに、Verilogを使用して回路を定義しました。 私は時間の半分くらいを壁に頭を打ち付けて過ごしていた。少しずつ、Verilogを正しく記述し、合成(ビルド)を行い、そしてシミュレーションを実行できるようにした。 CLBでプログラムされたロジックがCPUがスリープ状態でも動作するのは素晴らしい。セーフティに関わるアプリケーションに最適です。例えば、複雑な割り込みトリガーロジックの実装に利用できます。CLBロジックをペリフェラルに接続する際の柔軟性は非常に高いです。これは、PICの定番となっている、扱いにくいCLCプログラマブルロジックよりもはるかに柔軟性が高い。 私のEureka体験を共有したかっただけです。 パワー
查看全文
Using iMX8MP GPU on a process that call mlockall(MCL_FUTURE) causes kernel BUG() A customer reported an issue related to the use of the iMX8MP GPU (drawing using EGL). When the process that initializes the GPU previously called mlockall(MCL_FUTURE), as soon as the CMA area is mapped into userspace, the kernel reports the following BUG(): Kernel BUG at remap_pfn_range_internal+0x23c/0x2c8 Internal error: Oops - BUG: 00000000f2000800 [#1] PREEMPT SMP CPU: 0 PID: 3197 Comm: galcore_window_ Tainted: G O 6.6.142-7.7.0-devel #1-Torizon Hardware name: Toradex Verdin iMX8M Plus WB on Verdin Development Board (DT) pc : remap_pfn_range_internal+0x23c/0x2c8 x27: 00000000a2100000 x20: 0068000000000fcb x19: 0000007f90000000 ^^^^^^^^^^^^^^^^^^^^^^ the PTE already present Call trace: remap_pfn_range_internal+0x23c/0x2c8 remap_pfn_range+0x24/0x58 dma_direct_mmap+0xf4/0x150 dma_mmap_attrs+0x18/0x3c _CMAFSLMapUser+0x9c/0x150 [galcore] gckOS_LockPages+0xe4/0x148 [galcore] gckKERNEL_MapVideoMemory+0x90/0x1dc [galcore] gckVIDMEM_NODE_LockCPU+0x1b4/0x250 [galcore] _LockVideoMemory.isra.0+0x1f4/0x28c [galcore] gckKERNEL_Dispatch+0x210/0x1730 [galcore] gckDEVICE_Dispatch+0xcc/0x220 [galcore] drv_ioctl+0x340/0x444 [galcore] __arm64_sys_ioctl+0xac/0xf0 Kernel panic - not syncing: Oops - BUG: Fatal exception mlockall(MCL_FUTURE) is commonly used by real time applications, and the customer who reported the issue is using CODESYS to drive their HMI. We executed an AI-assisted analysis of the issue, and uncovered a plausible explanation for the reason the issue is being triggered: The CMA allocator in the galcore driver doesn't include an .mmap() hook. During the _CMAFSLMapUser() execution, it calls mmap() to get a vma, which is then used to locate the CMA area using find_vma(). The way mmap() is called causes the kernel to lazilly allocate a SHM area to fullfil the request. In normal cases, this allocation gets discarded moments later when the CMA are is found and remapped. However, when MCL_FUTURE is active the kernel cannot lazilly allocate the SHM area anymore, so it goes and populates the entire area before mmap() returns. In this case we have valid pages on this address, and the later call to remap_pfn_range() would end up silently discarding the memory management housekeeping information, which is exactly what the BUG() prevents. I'll attach a zip file which contains the source code of a program that reproduces the issue consistently without the need to run CODESYS. The AI agent suggested the following patch to fix it: diff -uNr a/hal/kernel/inc/gc_hal_options.h b/hal/kernel/inc/gc_hal_options.h --- a/hal/kernel/inc/gc_hal_options.h 2026-09-04 13:00:44.596621860 +0000 +++ b/hal/kernel/inc/gc_hal_options.h 2026-09-04 13:01:15.643862002 +0000 @@ -1471,9 +1471,17 @@ * Enable this macro can replace the /dev/zero by anon_inode: * [galcore] in /proc/ /maps. * Without the macro, run 'cat /proc/ /maps' will print "/dev/zero". + * + * It is also what gives the allocators an ->mmap handler, which is + * required so that the reservation made by vm_mmap() is created as a + * device mapping (VM_IO | VM_PFNMAP) rather than as ordinary anonymous + * memory. Without it, a process that has called mlockall(MCL_FUTURE) + * gets the range pre-faulted inside vm_mmap(), and the subsequent + * remap_pfn_range() then hits BUG_ON(!pte_none()) in remap_pte_range(). + * See tmp_mmap() in gc_hal_kernel_allocator.c. */ #ifndef gcdANON_FILE_FOR_ALLOCATOR -# define gcdANON_FILE_FOR_ALLOCATOR 0 +# define gcdANON_FILE_FOR_ALLOCATOR 1 #endif /* diff -uNr a/hal/os/linux/kernel/allocator/freescale/gc_hal_kernel_allocator_cma.c b/hal/os/linux/kernel/allocator/freescale/gc_hal_kernel_allocator_cma.c --- a/hal/os/linux/kernel/allocator/freescale/gc_hal_kernel_allocator_cma.c 2026-09-04 13:00:44.605314869 +0000 +++ b/hal/os/linux/kernel/allocator/freescale/gc_hal_kernel_allocator_cma.c 2026-09-04 13:01:15.644216883 +0000 @@ -400,7 +400,13 @@ gcmkHEADER_ARG("Allocator=%p Mdl=%p Cacheable=%d", Allocator, Mdl, Cacheable); #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 4, 0) +#if gcdANON_FILE_FOR_ALLOCATOR + /* Same as the gfp, dma and reserved_mem allocators: go through the + * allocator's anon file so that its ->mmap handler runs. */ + userLogical = (gctPOINTER)vm_mmap(Allocator->anon_file, +# else userLogical = (gctPOINTER)vm_mmap(gcvNULL, +# endif 0L, Mdl->numPages * PAGE_SIZE, PROT_READ | PROT_WRITE, diff -uNr a/hal/os/linux/kernel/gc_hal_kernel_allocator.c b/hal/os/linux/kernel/gc_hal_kernel_allocator.c --- a/hal/os/linux/kernel/gc_hal_kernel_allocator.c 2026-09-04 13:00:44.603242857 +0000 +++ b/hal/os/linux/kernel/gc_hal_kernel_allocator.c 2026-09-04 13:01:15.644041018 +0000 @@ -104,6 +104,36 @@ static int tmp_mmap(struct file *fp, struct vm_area_struct *vma) { + /* + * Declare the reservation as a device mapping with raw PFNs, before + * mmap() returns it to the caller. remap_pfn_range() sets both flags + * anyway; setting them here only makes them effective from the moment + * the VMA is created, and that is what matters: + * + * - the kernel treats VM_IO | VM_PFNMAP as VM_SPECIAL, documented in + * include/linux/mm.h as "Special vmas that are non-mergable, + * non-mlock()able". mmap_region() therefore clears VM_LOCKED from + * this VMA and leaves mm->locked_vm alone, and __mm_populate() + * skips it outright ("if (vma->vm_flags & (VM_IO | VM_PFNMAP)) + * continue;" in mm/gup.c). + * + * - so a process that has called mlockall(MCL_FUTURE) no longer has + * this range pre-faulted inside vm_mmap(). Every other mapping in + * that process keeps being locked and pre-faulted as before; only + * device memory, which is neither pageable nor swappable and gains + * nothing from being pre-faulted, is left out. + * + * - and the allocator's own remap_pfn_range(), a few microseconds + * later, therefore finds an empty range instead of one the kernel + * has just populated, so it no longer trips + * BUG_ON(!pte_none(ptep_get(pte))) in remap_pte_range(). + */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0) + vm_flags_set(vma, VM_IO | VM_PFNMAP); +#else + vma->vm_flags |= VM_IO | VM_PFNMAP; +#endif + return 0; } The upstream driver uses a different mechanism which bypasses this issue. Other galcore allocators use the same pattern (calling vm_mmap to get a vma) and thus are likely succeptible to the same BUG(). Could you please look into this and fix the galcore driver? This issue prevents a real use case from working properly, and is affecting our customer directly. Thank you, Rafael
查看全文
S32K3X8EVB-Q289HWUMのオープンボードデバッガを用いた外部MCU(S32K358)のプログラミング こんにちは、 外部MCU S32K358を、S32K3X8EVB-Q289HWUMボードのオンボードデバッガと20ピンのCortex Debug D ETMコネクタに接続し、J55ケーブルケーブルを使ってプログラムしようとしています。しかし、エラーが発生します。コントローラーをうまくプログラムするために実際に何をすればいいのか教えてください。 Yash2530_0-1789183591258.jpegYash2530_0-1789183591258.jpeg CMD>VC オブジェクトファイルのCRC-16をデバイス範囲と照合しています... ブロック 00400000-0042F4B7 ... 計算されたCRC-16がブロックと一致しません。(ファイル = $A9EE、デバイス = $EDEF) デバイスのフラッシュメモリの検証エラー Flashプログラミング中にエラーが発生しました。 情報: DAP IDCODE = 0x6BA02477 情報:DAPの電源投入に成功しました。DP CTRL/STAT = 0xF0000000 リセットスクリプトを開始します (C:\NXP\S32DS.3.6.7\eclipse\plugins\com.pemicro.debug.gdbjtag.pne_6.1.8.202603121731\supportFiles_ARM\NXP\S32K3xx\S32K358.mac)... REM MC_MEモジュールで選択したコアのクロックを有効にする 200ミリ秒遅延します... 終わり。 REM RAMとDMAを初期化します。 REM DMA TCD の初期化: REM 使用する各コアに対して、有効な実行可能コードをRAMにコピーします。 REM MC_ME で必要なコアを有効にする: 20ミリ秒遅延します... 終わり。 20ミリ秒遅延します... 終わり。 リセットスクリプト (C:\NXP\S32DS.3.6.7\eclipse\plugins\com.pemicro.debug.gdbjtag.pne_6.1.8.202603121731\supportFiles_ARM\NXP\S32K3xx\S32K358.mac)完了しました。 PEmicro GDB 起動失敗: フラッシュプログラミング中にエラーが発生しました。デバッグセッションを終了します。 PEエラー:デバイスへのダウンロード中にエラーが発生しました。デバッグセッションを終了します。 127.0.0.1 経由で「127.0.0.1」から切断されました。ポート「53100」による6224からの切断 PEエラー: エラー: 応答を送信しようとしましたが、接続が既に閉じられています。 127.0.0.1 経由で「127.0.0.1」から切断されました。ポート「53104」による7224からの切断 情報: DAP IDCODE = 0x6BA02477 ターゲットとの接続が切断されました。 よろしくお願いいたします。 ヤシュ・グプタ
查看全文