Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
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.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は定義されたブートデータ内に含まれます Re: Test HAB on IMXRT1024 without burning fuses こんにちは、 @Abhay2080 さん。 おっしゃる通りです。バイト順序の誤りについてお詫び申し上げます。両方のブートデータサイズ(4MBと256KB)にはIVTが含まれているため、以前の説明は誤りでした。 根本原因:スタートアップコードによってHABイベントログが消去された ブートROMは両方のイメージに対して同じ4つの失敗イベント情報(CSF=0、認証試行)を生成します。違いは、プロジェクトファームウェアのCランタイム起動時が、HABライブラリがイベントログやステータスを保存する領域を含む大きなOCRAM領域をゼロにし、HAB監査コードが実行される 前に ゼロ化することです。そのため、 report_status() は 0xF0 返却し、イベント情報は0でした。HAB状態自体が消去されたのです。 修正方法: HAB監査コールをBSSのゼロイニットループの前に Reset_Handler に移動すると、イベント情報が見えます。 他に何かご質問がありましたら、お気軽にお知らせください。 すてきな一日を、 カン ------------------------------------------------------------------------------- 注記: この投稿があなたの質問への回答になっている場合は、「正解としてマーク」ボタンをクリックしてください。ありがとうございます! - 前回の投稿から7週間Threadをフォローしており、その後の返信は無視しています もし後で関連する質問があれば、新しいThreadを開き、閉じたThreadを参照してください。 -------------------------------------------------------------------------------
View full article
TJA1410_10Base_T1s こんにちは、NXP S32K5とTJA1410を使用して10BASE-T1Sのテストを行っています。現在、TXピンに波形が見え、RXピンとEDピンにも波形があり、これはMDIで信号が受信できることを示しています。しかし、TXピンはMDIにデータを送信できません。 TX_RX_ED-2026-09-10-19-26-50.bmpTX_RX_ED-2026-09-10-19-26-50.bmpTX_RX_ED-2026-09-10-19-26-50.bmpTX_RX_ED-2026-09-10-19-26-50.bmp よろしくお願いいたします。 シアンロン イーサネット PHY Re: TJA1410_10Base_T1s こんにちは@wuxianlongさん MDIはどのように測定しましたか?MDIは差動インターフェースなので、差動オシロスコーププローブを使う必要があります。MDIは適切な差動終端を必要とします。AN14787 - アプリケーションノート10BASE-T1S イーサネットPMDトランシーバ TJA1410、Rev. 1.0、第3.3章を参照してください。 よろしくお願いいたします。 パベル Re: TJA1410_10Base_T1s こんにちは@wuxianlongさん このメールが、あなたがお元気でいらっしゃる時に届くことを願っています。現在お手元にある製品、NPI(新製品紹介)S32K5についてお手伝いしていますが、まだ正式に発売されていません。 これらの製品の早期アクセス権を得たお客様は、現場エンジニアを割り当てていることにご注意ください。指定されたフィールドエンジニアが、この製品に関する問題や懸念、問い合わせの主要なサポートチャネルとなります。 正式リリース後、オンラインサポートチームはより幅広いサポートを展開していきます。それまでは、私たちは必要な支援を提供する体制が整っていません。 この件についてご理解いただき感謝いたします。 ご理解いただきありがとうございます。 よろしくお願いいたします。 パベル Re: TJA1410_10Base_T1s こんにちは、 @PavelL 私は差動プローブを使用しませんでした。私が送信(TX)すると、オシロスコープ上のMDIには変動が見られず、平坦/水平な状態が維持されます。しかし、PCがデータを送信すると、MDIには明確な差動波形が表示される。TJA1410が正しく送信モードに切り替わっておらず、チップは通常モードのままにしているように感じます。PHYの現在のモードを確認する方法はありますか?現在、私たちのTJA1410はSMIインターフェースに接続されていませんが、どのような注意点を取るべきでしょうか? 敬具 仙龍 Re: TJA1410_10Base_T1s こんにちは@wuxianlongさん S32K5はNPIデバイスであるため、現時点では弊社側でS32K5とTJA1410の完全なセットアップを検証することができませんのでご了承ください。   TJA1410動作モードはSMIインターフェースを通じて選択されません。通常モードと送信モード間の遷移は、TXピンで受信したコマンドによって制御されます。したがって、TXでデータアクティビティを観測したとしても、TJA1410が送信モードに入ったことを必ずしも確認できるわけではありません。前述のTRANSMITコマンドとそのタイミングは、TJA1410データシートに指定されているタイミングにも準拠する必要があります。   TJA1410データシートの図10に従って、通常モードから送信モードへの遷移を確認してください。特に、TXコマンドと差動VLINE信号、およびED出力を併せて取得してください。これにより、TJA1410がTRANSMITコマンドを認識し、MDIトランスミッタを起動するかどうかが確認されます。   よろしくお願いいたします。 パベル
View full article
TJA1410_10Base_T1s Hi,NXP I am testing 10BASE-T1S using the S32K5 and TJA1410. Currently, I can see waveforms on the TX pin, and there are also waveforms on the RX and ED pins, which indicates that signals can be received on the MDI. However, the TX pin is unable to send data to the MDI. TX_RX_ED-2026-09-10-19-26-50.bmpTX_RX_ED-2026-09-10-19-26-50.bmpTX_RX_ED-2026-09-10-19-26-50.bmpTX_RX_ED-2026-09-10-19-26-50.bmp Best Reagrds. xianlong Ethernet PHY Re: TJA1410_10Base_T1s Hello @wuxianlong , How have you measured the MDI? MDI is differential interface so you need to use differential oscilloscope probe. MDI requires proper differential termination - please refer to AN14787 - Application note 10BASE-T1S Ethernet PMD transceiver TJA1410, Rev. 1.0 , chapter 3.3. Best regards, Pavel Re: TJA1410_10Base_T1s Hello @wuxianlong , I hope this email finds you well. I am writing to you in regard to a product currently in your possession – an NPI (New Product Introduction) - S32K5 - which has not been officially launched yet. Please be advised that customers who have been granted early access to such products have assigned their field engineers. Your designated field engineer should serve as your primary support channel for any issues, concerns or queries you may have about this product. Our online support team will be opening a wider range of support for this product once it has been officially released. Until then, we will not be equipped to provide the desired assistance. We appreciate your understanding in this matter. Thank you for your understanding. Best regards, Pavel Re: TJA1410_10Base_T1s Hi,@PavelL  I did not use a differential probe. When I transmit (TX), the MDI shows no fluctuation on the oscilloscope — it remains flat/horizontal. However, when the PC sends data, the MDI clearly shows a differential waveform. It feels like the TJA1410 is not being correctly switched into transmit mode and the chip remains in normal mode. Are there any methods to verify the PHY's current mode? Currently, our TJA1410 is not connected to an SMI interface — what precautions should we take regarding this? Best Regards, xianlong Re: TJA1410_10Base_T1s Hello @wuxianlong , Since S32K5 is an NPI device, please note that we are currently unable to validate the complete S32K5 and TJA1410 setup on our side.   The TJA1410 operating mode is not selected through the SMI interface. The transitions between Normal and Transmitting modes are controlled by commands received on the TX pin. Therefore, observing data activity on TX does not necessarily confirm that the TJA1410 has entered Transmitting mode. The preceding TRANSMIT command and its timing must also comply with the timing specified in the TJA1410 data sheet.   Please verify the transition from Normal to Transmitting mode according to Figure 10 in the TJA1410 data sheet. In particular, please capture the TX command together with the differential VLINE signal and ED output. This should confirm whether the TJA1410 recognizes the TRANSMIT command and activates its MDI transmitter.   Best regards, Pavel
View full article
Programming External MCU (S32K358) using open board debugger of S32K3X8EVB-Q289HWUM Hello,  I am trying to program my external MCU S32K358 using an onboard debugger of S32K3X8EVB-Q289HWUM board connected at 20-pin Cortex Debug D ETM connector, along with cable J55 cable. But I get errors. Please let me know what I actually need to do to successfully program my controller. Yash2530_0-1789183591258.jpegYash2530_0-1789183591258.jpegYash2530_0-1789183591258.jpeg CMD>VC Verifying object file CRC-16 to device ranges ... block 00400000-0042F4B7 ... Calculated CRC-16 does not match block. (File = $A9EE, Device = $EDEF) Error verifying flash of device Error occured during Flash programming. INFO: DAP IDCODE = 0x6BA02477 INFO: DAP successfully powered up. DP CTRL/STAT = 0xF0000000 Starting reset script (C:\NXP\S32DS.3.6.7\eclipse\plugins\com.pemicro.debug.gdbjtag.pne_6.1.8.202603121731\supportFiles_ARM\NXP\S32K3xx\S32K358.mac) ... REM Enable clocks for selected cores in MC_ME module Delaying for 200mS ... Done. REM Initialize RAM and DMA: REM Initialize DMA TCD: REM Copy valid executable code to RAM for each core to be used. REM Enable required cores in MC_ME: Delaying for 20mS ... Done. Delaying for 20mS ... Done. Reset script (C:\NXP\S32DS.3.6.7\eclipse\plugins\com.pemicro.debug.gdbjtag.pne_6.1.8.202603121731\supportFiles_ARM\NXP\S32K3xx\S32K358.mac) completed. PEmicro GDB Launch Failure : Error during flash programming. Terminating debug session. PE-ERROR: Error downloading to the device. Terminating debug session. Disconnected from "127.0.0.1" via 127.0.0.1. Disconnection by port "53100" from 6224 PE-ERROR: Error : Attempted to send response but connection already closed. Disconnected from "127.0.0.1" via 127.0.0.1. Disconnection by port "53104" from 7224 INFO: DAP IDCODE = 0x6BA02477 Target Disconnected. Regards, Yash Gupta Re: Programming External MCU (S32K358) using open board debugger of S32K3X8EVB-Q289HWUM Hi First of all, I do not recommend using the onboard debugger. The onboard debugger on the S32K3X8EVB is designed for programming and debugging the MCU on the evaluation board itself. Using this debugger to program or debug an external custom S32K358 board is not an officially recommended use case by PEmicro; therefore, NXP cannot guarantee proper operation in this configuration. Limitations regarding the onboard debugger were previously mentioned in the "Program/Debug issue with S32K142-Q48" discussion. I am not aware if PEmicro has changed the limitations for the S32K3 onboard debugger. Even if there are no such limitations from PEmicro, you must still ensure that the onboard S32K358 is not being powered through the debugger interface circuitry (verify by measuring onboard VDD_HV_A, VDD_HV_B, V11, etc.) or that the JTAG_TCLK/SWD_CLK lines are disconnected from the onboard S32K358. Additionally, you need to verify that the signal voltage of the onboard debugger interface matches the voltage on your custom board. Best Regards, Robin
View full article
IW416 Wi-Fi RFテストモード – EN300 328用のPN9 / ペイロードパターン こんにちは、 当社は、AN14114 Rev.7.0を使用して、EN 300 328規制試験におけるIW416の評価を行っています。 当社の認証機関は、PN9データシーケンスを用いた連続変調送信を要求しています。 しかし、Wi-Fi TX連続コマンドにおいて、AN14114は固定ペイロードパターンのみを規定している。 echo "tx_continuous=<開始/停止> " そして、次のような例を挙げています。 echo "tx_continuous=1 0 0xAAA 0 3 0x8" 確認いただけますか: 1. IW416 Wi-Fi RFテストモードは直接PN9/PRBS9生成に対応していますか? 2. そうでない場合、NXPはEN 300 328試験にどのようなペイロードパターンを推奨しますか? 3. 0xAAAは連続パケットモードのPN9の推奨代替として使用可能か? 4. これらの設定は、連続変調送信に対して正しいですか? - 送信モード = 0 - cs モード = 0 - アクティブなサブチャネル = 3 よろしくお願いします。
View full article
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.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 Re: Test HAB on IMXRT1024 without burning fuses Hi @Abhay2080 , You're right — apologies for the byte order error. Both Boot Data sizes (4 MB and 256 KB) include the IVT, so my previous explanation was incorrect. Root cause: HAB event log cleared by startup code The Boot ROM generates the same 4 failure events for both images (CSF=0, authentication attempted). The difference is that your project firmware's C runtime startup zeroes a larger OCRAM region — which includes the area where the HAB library stores its event log and status — before your HAB audit code runs. This is why report_status() returns 0xF0 and 0 events are found; the HAB state itself was wiped. How To Fix: Move your HAB audit calls to Reset_Handler , before the BSS zero-init loop, and the events will be visible. Please kindly let me know if you have any further question. 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. -------------------------------------------------------------------------------
View full article
i.MX8QXP C0:崩溃证据捕获 ramoops 跨越 SCwatchdogresetCortex-M4 监督 A35 集群 NXP团队您好, 平台详情: SoC:i.MX8QXP C0,基于 MEK 参考芯片的定制板 BSP:NXP Linux 6.6.3 [状态精确标签,例如:lf-6.6.3-1.0.0],约克托·斯卡斯盖普 SCFW 版本:[运行 scu_rm / 检查启动日志 — 粘贴版本] SECO/AHAB:[已启用/未启用,版本] U-Boot:[2024.04/tag] Cortex-M4 (CM4_0):当前未使用,未加载固件 应用案例:量产汽车仪表盘;A35 运行 Linux/Weston HMI 问题陈述: 在生产环境中,我们偶尔会看到 A35 复合体崩溃或死机(内核崩溃/锁定)。目前我们没有持久的崩溃证据,也没有自主恢复功能——集群会一直处于崩溃状态,直到手动重启电源,并且无法调试现场/DV 事件。我们希望实现 (a) 使用 pstore/ramoops 在看门狗重置时保持 panic 日志的持久性,以及 (b) 由 CM4_0 监督 A35,并能够仅重置 A35 分区。 在 i.MX8QXP C0 上,当系统看门狗(imx-sc-wdt,由 SCFW 处理)触发时,执行的是哪种类型的 RESET——完整的 SoC/板 RESET 还是 A 集群分区 RESET?这可以通过SCFW板级文件或sc_pm API进行配置吗? Re: i.MX8QXP C0: crashevidence capture ramoops across SCwatchdogresetCortex-M4 supervision A35 clus 你好, 是的,您可以使用由 SCFW 管理的虚拟看门狗来重置分区 SC_TIMER_WDOG_ACTION_PARTITION 的行为正是您想要的,它只会重置 Linux/A35 分区。 此外,还可以通过 SCFW sc_pm API 直接调用 A35 分区上的 sc_pm_reset_partition() 函数,从 CM4_0 固件中实现同样的效果,这使得 CM4_0 能够独立于看门狗机制进行完全的监控控制。 您可以在您所使用的特定版本的 SCFW 移植指南中找到更多相关信息。 此致敬礼/Saludos, 阿尔多。
View full article
学ぶ 私はNXP S32K144を使い始めたばかりです。初心者におすすめの開発環境は何ですか?また、最初に何を学ぶべきでしょうか? Re: LEARNING こんにちは、 @JASAMANG さん、 初心者には、 S32 Design Studio for S32 Platform とS32K144評価ボードを組み合わせて使うことをおすすめします。 IDEに加えて、 S32K1リアルタイム・ドライバ (RTD) パッケージをインストールしてください。現在の開発フローでは、推奨される組み合わせは S32 Design Studio v3.6.0とS32K1 RTD 3.0.0です。RTDパッケージはHelp > S32DS拡張機能とアップデートを通じてインストール可能です。 以下の学習経路をたどることをお勧めします。 既存のS32K144 RTDサンプル(LED点滅サンプルやGPIOサンプルなど)をインポートして実行します。 基本的なプロジェクト構造、ビルドプロセス、フラッシュ書き込み、デバッグについて学びます。 S32の設定ツール、特にピン、クロック、ペリフェラルの設定に慣れておく。 GPIO、割り込み、タイマー、PWM、ADCについて引き続き説明します。 これらの基礎が明らかになったら、FreeMASTERやMCATなどのモータ制御の例やツールに進みましょう。 既存の例から始める方が、最初からアプリケーション全体を作るよりも一般的に簡単です。 RTDの設置手順については、 S32K1 RTDオフライン設置ガイドを参照してください。この記事は古いS32DS/RTDの組み合わせを示しつつ、パッケージ依存関係や一般的なオフラインインストールフローについて説明しています。ダウンロードするRTDバージョンのリリースノートで、必要なS32DSバージョンおよび依存パッケージを必ず確認してください。 この議論も役立つかもしれません: S32 Design StudioにSDK/RTDをインストールする。レガシーSDKとRTDの違いを説明し、AUTOSARおよび非AUTOSARの点滅LED例へのリンクを提供しています S32Kナレッジベースには、役立つ事例や技術記事も掲載されています。 問題が発生した場合は、まずS32Kコミュニティフォーラムを検索することをお勧めします。多くのよくある質問や問題点は、すでにそこで議論され、回答されています。 また、特定の問題に直面した場合は 専用Thread を作成してください。これにより議論が明確になり、他のユーザーが関連情報を見つけやすくなります。   最後の返信から7日間Threadを積極的に監視しています。その後は、更新のための購読メールのみを受け取り、それらは時折見逃されることもあります。この期間以降に関連する質問があれば、新しいThreadを作成し、元のThreadを参照してください。   回答がご質問への回答となっている場合は、 「解決策として承認」をクリックしてください。関連する質問がある場合は、新しいThreadを作成し、元のThreadを参照してください。   よろしくお願いいたします。 パベル
View full article
在不烧断熔丝的情况下测试 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.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 属于已定义的启动数据范围。 Re: Test HAB on IMXRT1024 without burning fuses 你好@Abhay2080 , 你说得对——很抱歉出现了字节顺序错误。两种启动数据大小(4 MB 和 256 KB)都包含 IVT,所以我之前的解释是错误的。 根本原因:HAB 事件日志被启动代码清除 Boot ROM 为两个映像生成相同的 4 个故障事件(CSF=0,尝试身份验证)。区别在于,你的项目固件的 C 运行时启动会在 HAB 审计代码运行之前,将一个更大的 OCRAM 区域(包括 HAB 库存储其事件日志和状态的区域)清零。这就是为什么 report_status() 返回 0xF0 且未找到任何事件;HAB 状态本身已被清除。 解决方法:将 HAB 审计调用移至 Reset_Handler ,在 BSS 零初始化循环之前,事件就会可见。 如果您还有其他问题,请随时告诉我。 祝你有美好的一天, 坎 ------------------------------------------------------------------------------- 笔记: - 如果此回复解答了您的问题,请点击“标记为正确答案”按钮。谢谢你! - 我们会持续关注帖子,从最后一条回复发出后持续7周,之后的回复将被忽略。 如果您之后有相关问题,请另开新帖并引用已关闭的帖子。 -------------------------------------------------------------------------------
View full article
i.MX8QXP C0: crashevidence capture ramoops across SCwatchdogresetCortex-M4 supervision A35 cluster Hi NXP Team,  Platform details: SoC: i.MX8QXP C0, custom board based on MEK reference BSP: NXP Linux 6.6.3 [state exact tag, e.g. lf-6.6.3-1.0.0], Yocto Scarthgap SCFW version: [run scu_rm / check boot log — paste version] SECO/AHAB: [enabled/not enabled, version] U-Boot: [2024.04/tag] Cortex-M4 (CM4_0): currently unused, no firmware loaded Use case: production automotive instrument cluster; A35 runs Linux/Weston HMI Problem statement: In production we occasionally see the A35 complex crash or hard-hang (kernel panic / lockup). Today we have no persisted crash evidence and no autonomous recovery — the cluster stays dead until a manual power cycle, and field/DV occurrences cannot be debugged. We want to implement (a) panic-log persistence across a watchdog reset using pstore/ramoops, and (b) supervision of the A35 by the CM4_0 with the ability to reset only the A35 partition. On i.MX8QXP C0, when the system watchdog (imx-sc-wdt, handled by SCFW) fires, what type of reset is performed — full SoC/board reset or A-cluster partition reset? Is this configurable via SCFW board file or sc_pm API? Re: i.MX8QXP C0: crashevidence capture ramoops across SCwatchdogresetCortex-M4 supervision A35 clus Hello, yes, you may use a virtual watchdog managed by the SCFW to reset the partition SC_TIMER_WDOG_ACTION_PARTITION behavior is what you want it resets only the Linux/A35 partition. Also, there is a way to achieve the same effect from CM4_0 firmware directly by calling sc_pm_reset_partition() on the A35 partition via the SCFW sc_pm API, which gives the CM4_0 full supervisory control independent of the watchdog mechanism. You can find more information about this on the SCFW porting guide for the specific version that you are using. Best regards/Saludos, Aldo.
View full article
S32K3X8EVB-Q289HWUMのオープンボードデバッガを用いた外部MCU(S32K358)のプログラミング こんにちは、 外部MCU S32K358を、S32K3X8EVB-Q289HWUMボードのオンボードデバッガと20ピンのCortex Debug D ETMコネクタに接続し、J55ケーブルケーブルを使ってプログラムしようとしています。しかし、エラーが発生します。コントローラーをうまくプログラムするために実際に何をすればいいのか教えてください。 Yash2530_0-1789183591258.jpegYash2530_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 ターゲットとの接続が切断されました。 よろしくお願いいたします。 ヤシュ・グプタ Re: Programming External MCU (S32K358) using open board debugger of S32K3X8EVB-Q289HWUM ハイ まず第一に、オンボードデバッガーの使用はお勧めしません。S32K3X8EVBのオンボードデバッガは、評価ボード上でMCUのプログラミングとデバッグを行うために設計されています。このデバッガを使って外部カスタムS32K358ボードをプログラムまたはデバッグすることは、PEmicroによる公式推奨のユースケースではありません。したがって、NXPはこの構成での適切な動作を保証することはできません。 オンボードデバッガに関する制限事項については、以前に「 S32K142-Q48のプログラム/デバッグに関する問題」という議論の中で言及しました。PEmicroがS32K3オンボードデバッガの制限を変更したかどうかは把握していません。 たとえPEmicroにそのような制限がなくても、オンボードS32K358がデバッグャインターフェース回路を通じて電源供給されていないか(オンボードVDD_HV_A、VDD_HV_B、V11などを測定して確認)、またはJTAG_TCLK/SWD_CLKラインがオンボードS32K358から切り離されているかを必ず確認してください。 さらに、オンボードのデバッガインターフェースの信号電圧がカスタムボードの電圧と一致しているかも確認する必要があります。 よろしくお願いいたします ロビン
View full article
使用 S32K3X8EVB-Q289HWUM 的开放式板调试器对外部 MCU (S32K358) 进行编程 你好, 我正在尝试使用连接到 20 针 Cortex Debug D ETM 连接器的 S32K3X8EVB-Q289HWUM 板的板载调试器,以及 J55 电缆,对我的外部 MCU S32K358 进行编程。但我遇到了错误。请告诉我我究竟需要做些什么才能成功对我的控制器进行编程。 Yash2530_0-1789183591258.jpegYash2530_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 启动 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 目标设备已断开连接。 问候, 亚什·古普塔 Re: Programming External MCU (S32K358) using open board debugger of S32K3X8EVB-Q289HWUM HI 首先,我不建议使用板载调试器。S32K3X8EVB 板载调试器设计用于在评估板上对 MCU 进行编程和调试。使用此调试器对外部定制的 S32K358 板进行编程或调试并非 PEmicro 官方推荐的使用场景;因此,NXP 无法保证在此配置下正常运行。 关于板载调试器的局限性,之前在“ S32K142-Q48 的程序/调试问题”讨论中已经提到过。我不知道 PEmicro 是否更改了 S32K3 板载调试器的限制。 即使 PEmicro 没有此类限制,您仍然必须确保板载 S32K358 没有通过调试器接口电路供电(通过测量板载 VDD_HV_A、VDD_HV_B、V11 等进行验证),或者 JTAG_TCLK/SWD_CLK 线已与板载 S32K358 断开。 此外,您还需要验证板载调试器接口的信号电压是否与您的定制板上的电压相匹配。 此致敬礼, Robin
View full article
如何编写NFC芯片 我正在尝试用iPhone 12 Pro Max对NFC 215芯片进行编程。我正在使用NXP标签写入器应用程序。在NXP标签写入器应用程序中,我点击“新建”、“网站”,然后输入描述信息以及URI类型和URI数据。然后我点击“保存并写入”,我收到一条通知,提示“NDEF 记录已成功保存到我的数据集中”。当我关闭应用程序并点击芯片时,没有任何反应。我还尝试用另一部手机,但仍然不行。大家有什么想法或建议吗? nfc error.PNGnfc error.PNGNFC错误.PNG Re: How to write nfc chip 你好@Erik3 “已保存到我的数据集中”这条消息表示数据已存储在应用程序本地,尚未写入芯片。请尝试: 在 TagWriter 中,转到“我的数据集”→ 选择您的条目 → TAP “写入” 将 iPhone 靠近芯片,直到看到写入标签确认信息。 此外,您还可以使用 NFC TagInfo 应用程序扫描芯片,并验证其当前内容和状态。
View full article
LEARNING I am new to NXP S32K144. What is the recommended development environment for a beginner, and what should I learn first? Re: LEARNING Hello @JASAMANG , For a beginner, I recommend using S32 Design Studio for S32 Platform together with an S32K144 evaluation board. In addition to the IDE, please install the S32K1 Real-Time Drivers (RTD) package. For the current development flow, the recommended combination is S32 Design Studio v3.6.0 with S32K1 RTD 3.0.0. The RTD package can be installed through Help > S32DS Extensions and Updates. I suggest following this learning path: Import and run an existing S32K144 RTD example, such as a blinking LED or GPIO example. Learn the basic project structure, build process, flashing, and debugging. Become familiar with the S32 Configuration Tools, particularly pin, clock, and peripheral configuration. Continue with GPIO, interrupts, timers, PWM, and ADC. Once these fundamentals are clear, proceed to motor-control examples and tools such as FreeMASTER and MCAT. Starting from an existing example is generally easier than creating the complete application from scratch. For RTD installation guidance, please refer to the S32K1 RTD offline installation guide. Although the article demonstrates an older S32DS/RTD combination, it explains the package dependencies and the general offline installation flow. Always verify the required S32DS version and dependent packages in the release notes of the RTD version you download. You may also find this discussion useful: Install SDK/RTD into S32 Design Studio. It explains the difference between the legacy SDK and RTD and provides links to both AUTOSAR and non-AUTOSAR blinking LED examples You may also find useful examples and technical articles in the S32K Knowledge Base.  If you encounter a problem, I recommend searching the S32K Community forum first. Many common questions and issues have already been discussed and answered there.  Also, please create a dedicated thread if you encounter a specific issue. This helps keep us the discussions clear and makes it easier for other users to find relevant information.   We actively monitor threads for seven days after the last reply. After that period,  we only receive subscription emails for updates and those can occasionally be missed. For any related questions after this period, please create a new thread and refer to the original one.   If a response answers your question, please click “Accept as Solution.” For any related questions please create a new thread and refer to the original one.   Best regards, Pavel
View full article
学习 我是NXP S32K144的新手。对于初学者来说,推荐的开发环境是什么?我应该首先学习什么? Re: LEARNING 你好@JASAMANG , 对于初学者,我建议使用S32 Design Studio for S32 Platform以及 S32K144 评估板。 除了 IDE 之外,请安装S32K1 实时驱动程序 (RTD)软件包。对于当前的开发流程,推荐的组合是S32 Design Studio v3.6.0 与 S32K1 RTD 3.0.0 。可以通过“帮助”>“S32DS 扩展和更新”安装 RTD 软件包。 我建议按照以下学习路径进行学习: 导入并运行现有的 S32K144 RTD 示例,例如闪烁 LED 或 GPIO 示例。 学习项目的基本结构、构建过程、烧录和调试。 熟悉 S32 配置工具,特别是引脚、时钟和外设配置。 继续讲解 GPIO、中断、定时器、PWM 和 ADC。 一旦这些基本概念清晰明了,就可以开始学习电机控制示例和工具,例如 FreeMASTER 和 MCAT。 通常来说,从现有示例入手比从头开始创建完整的应用程序要容易得多。 有关 RTD 安装指导,请参阅S32K1 RTD 离线安装指南。虽然这篇文章演示的是较旧的 S32DS/RTD 组合,但它解释了软件包依赖关系和一般的离线安装流程。务必在下载的 RTD 版本的发行说明中核实所需的 S32DS 版本和依赖软件包。 您可能也会发现以下讨论很有用:将 SDK/RTD 安装到 S32 Design Studio 中。它解释了传统 SDK 和 RTD 之间的区别,并提供了 AUTOSAR 和非 AUTOSAR LED 闪烁示例的链接。 您还可以在S32K 知识库中找到有用的示例和技术文章。 如果遇到问题,我建议先在S32K 社区论坛上搜索一下。许多常见问题和疑虑已经在那里讨论并得到了解答。 另外,如果您遇到具体问题,请另开新帖。这有助于保持讨论的清晰性,也使其他用户更容易找到相关信息。   我们会在最后一条回复发出后的七天内持续监测帖子。此后,我们只会收到更新订阅邮件,偶尔可能会错过这些邮件。此后如有任何相关问题,请另开新帖并引用原帖。   如果某个回复解答了您的问题,请点击“接受为解决方案”。如有任何相关问题,请另开新帖并引用原帖。   顺祝商祺! 帕维尔
View full article
How to write nfc chip I am trying to write an NFC 215 chip with an i phone 12 pro max.  I am using NXP tag writer app.  on the NXP tag writer app I click "new", "website" then i enter the description information along with the URI type and URI data.  I then click "save and write" I get a notification saying "NDEF recorded saved successfully in my dataset". When i close the app and tap the chip it doesn't do anything.  I also tried using another phone and still no luck.  Anyone have any ideas or suggestions?    nfc error.PNGnfc error.PNGnfc error.PNG Re: How to write nfc chip Hello @Erik3  The message "saved in my dataset" means the data was stored locally in the app, not yet written to the chip. Please try: In TagWriter, go to "My Datasets" → select your entry → tap "Write" Hold your iPhone close to the chip until you see a write-to-tag confirmation Also, you can use the NFC TagInfo app to scan the chip and verify its current contents and status.
View full article
Access to intA and intB of DMA descriptors when using SPI Hello, I am using the microcontroller LPC55S69 to communicate with a device via SPI, using DMA. The device is spitting data every 2ms, and i am saving it automatically in each descriptor. I have 4 descriptors, when descriptor 2 concludes saving the data, i want it to flag intA, and when descriptor 4 finished filling the data in the buffer i want it to flag intB. I have the following callback functions: void SPI_DMA_master_callback(SPI_Type *base, spi_dma_handle_t *masterHandle, status_t status, void *userData) void SPI_RxDMACallback(dma_handle_t *handle, void *param, bool transferDone, uint32_t tcds) void SPI_TxDMACallback(dma_handle_t *handle, void *param, bool transferDone, uint32_t tcds) To know the state of intA or intB, i should read the variable "tcds", however it never enters in the SPI_RxDMACallback() or SPI_TxDMACallback(), the code only gets into the function SPI_DMA_master_callback() after finishing all the descriptors. Is there a way to check when it occurs intA and intB? Thank you, Kans LPC55xx Re: Access to intA and intB of DMA descriptors when using SPI Hello, The reason your code only triggers SPI_DMA_master_callback() at the end of the entire chain is that MCUXpresso’s high-level spi_dma_handle_t driver overwrites the individual DMA callbacks and disables intermediate descriptor interrupts (INTA/INTB) by default. The high-level driver only notifies you when the final descriptor completes. Re: Access to intA and intB of DMA descriptors when using SPI Thank you for the response. Indeed i have noticed that, so i was trying to find a way to still have access to the descriptor interrupts (INTA/INTB) I have tried to use a custom Callback, and it seems to be working for now, to have access to intA and intB states: *defenitions* dma_callback g_nxp_rx_callback = NULL; void *g_nxp_rx_userData = NULL; void Custom_RxDmaCallback(dma_handle_t *handle, void *userData, bool transferDone, uint32_t tcds); *initialisation* g_nxp_rx_callback = FLEXCOMM0_RX_Handle.callback; g_nxp_rx_userData = FLEXCOMM0_RX_Handle.userData; DMA_SetCallback(&FLEXCOMM0_RX_Handle, Custom_RxDmaCallback, NULL); *callback* void Custom_RxDmaCallback(dma_handle_t *handle, void *userData, bool transferDone, uint32_t tcds) { // 1. Intercept intermediate descriptor interrupts if (tcds == kDMA_IntA) { // Descriptor middle finished: 1st buffer filled transferDone = false; } else if (tcds == kDMA_IntB) { // Descriptor final finished: 2nd buffer filled transferDone = true; } if (transferDone && g_nxp_rx_callback != NULL) { g_nxp_rx_callback(handle, g_nxp_rx_userData, transferDone, tcds); } } This way it also goes to the SPI callback function when the communication is finished, however (correct me if i am wrong), by going into the SPI callback function it changes the internal state of SPI from kSPI_Busy to kSPI_Idle, while in reality i am in an infinite loop of descriptors (after last descriptor goes straight to first descriptor), so maybe this could generate some conflicts?  Also avoiding to move from callback to callback.  So i decided to keep it simple: *initialisation* DMA_SetCallback(&FLEXCOMM0_RX_Handle, Custom_RxDmaCallback, NULL); *callback* void Custom_RxDmaCallback(dma_handle_t *handle, void *userData, bool transferDone, uint32_t tcds) { // 1. Intercept intermediate descriptor interrupts if (tcds == kDMA_IntA) { // Descriptor middle finished: 1st buffer filled } else if (tcds == kDMA_IntB) { // Descriptor final finished: 2nd buffer filled } }
View full article
MTRCKTSPS5744P 应用软件安装 你好, 我在安装可以从这里下载的软件时遇到了这个问题。 MPC5744P 三相永磁同步电机开发套件 | 恩智浦半导体 错误提示为“文件未找到”。该软件尝试从服务器获取文件,但失败了。 谢谢! Re: MTRCKTSPS5744P Application Software Installation 你好, 我刚刚下载好了,没有任何问题。 不过我记得你需要先手动安装 AMMCLIB,因为安装链接好像坏了。 https://www.nxp.com/design/design-center/software/automotive-software-and-tools/automotive-math-and-motor-control-library-ammclib:AMMCLIB 关于这个问题,请参阅我之前发布的另一篇文章: https://community.nxp.com/t5/MPC5xxx/How-to-obtain-the-complete-source-code-of-MPC5744P-3-phase-PMSM/m-p/1737179 顺祝商祺! Peter
View full article
IW610G 802.15.4/SPI completely silent Hi, We're integrating an IW610G module (Murata TYPE2LL) on a custom embedded Linux board and need help getting 802.15.4/Thread working over SPI. WiFi and BLE work perfectly on the same hardware/firmware only the 802.15.4 RCP is an issue. Posting with as much detail as possible to save round-trips. Hardware/software setup - Host: QCA9531 SoC (MIPS 24Kc), OpenWrt-based Linux 6.12, ath79 target - IW610G (Murata TYPE2LL) connected via USB for WLAN and BLE, and SPI for 802.15.4 matching the standard IW610 host interface architecture - Firmware: usbusbspi_iw610.bin.se, pulled from the public nxp-imx/imx-firmware repo - otbr-agent/ot-daemon built with -DOT_POSIX_RCP_SPI_BUS=ON and related options, using its built-in spinel+spi:// transport (spidev-based, no custom kernel SPI driver we understand this matches NXP's intended architecture, since NXP doesn't ship an in-kernel driver for the SPI/802.15.4 side) What works - WiFi: full association, throughput and stability tests over USB, 5 GHz, confirmed with real traffic under sustained load - BLE: advertising, scanning, and coexistence with WiFi all confirmed working over USB with real nearby devices detected What doesn't work - 802.15.4 over SPI: the host correctly asserts CS, clocks out well-formed Spinel RESET frames, and the RCP never replies anything always a zero-filled header. This is consistent: - Across every SPI clock speed from the controller's hardware floor up to 20 MHz - With or without a GPIO reset pulse on IND_RST_WL/IND_RST_NB (chip-select/reset lines tested individually and combined) - Across multiple wake/reset GPIO (WL_WAKE_IN, NB_WAKE_IN) - On a chip confirmed freshly and cleanly power-sequenced What we've already ruled out on our side - Electrical signals confirmed clean and correctly timed scope-verified - SPI mode (CPOL=0/CPHA=0) and timing verified against the IW610 datasheet's own SPI host interface timing diagram - Firmware confirmed present, correctly loaded, and up to date (matches the latest commit on nxp-imx/imx-firmware) The FP92/FP99 discrepancy Our driver reports: wlan: version = USBIW610--18.99.8.p52--MM6X18543.p18-GPL-(FP92) We found an existing thread ("IW610 802.15.4 problems") where another user hit the exact same symptom with the exact same (FP92) tag, using sduartspi_iw610.bin.se. RN00104 documents USB-WLAN-USB-BLE-FP99-IW610 as the official validated configuration for IW610 over USB (WLAN over USB, BLE over USB matching our exact bus topology). Digging further: -The public nxp-imx/mwifiex repo has FPNUM="92" hardcoded in the Makefile on every branch we checked, including current HEAD - The public nxp-imx/mwifiex-iw612 repo does have a real FPNUM="99", but it's IW612-only (no IW610 references in the source) and SDIO-only (no USB transport code at all) Our question Where can we obtain the actual FP99 driver + firmware + config bundle corresponding to the USB-WLAN-USB-BLE-FP99-IW610 entry documented in RN00104 doc? Is this combination available through a channel other than the public GitHub repos (direct support request, NDA, module vendor distribution)? Any pointer to what's actually different between an FP92 and FP99 build beyond the version-string macro would also help us understand whether this is even the right lead. Thanks in advance Re: IW610G 802.15.4/SPI completely silent Hi, I sent you a private message. Regards, Daniel.
View full article
使用SPI时访问DMA描述符的intA和intB 你好, 我正在使用 LPC55S69 微控制器通过 SPI 和 DMA 与设备通信。 该设备每 2 毫秒输出一次数据,我会自动将其保存到每个描述符中。 我有 4 个描述符,当描述符 2 完成数据保存时,我希望它标记 intA,当描述符 4 完成缓冲区数据填充时,我希望它标记 intB。 我使用了以下回调函数: void SPI_DMA_master_callback(SPI_Type *base, spi_dma_handle_t *masterHandle, status_t status, void *userData) void SPI_RxDMACallback(dma_handle_t *handle, void *param, bool transferDone, uint32_t tcds) void SPI_TxDMACallback(dma_handle_t *handle, void *param, bool transferDone, uint32_t tcds) 要了解 intA 或 intB 的状态,我应该读取变量“tcds”,但是它从未进入 SPI_RxDMACallback() 或 SPI_TxDMACallback(),代码只有在完成所有描述符后才会进入函数 SPI_DMA_master_callback()。 有没有办法检查 intA 和 intB 何时发生? 谢谢! 堪萨斯 LPC55xx Re: Access to intA and intB of DMA descriptors when using SPI 谢谢你的回复。 我确实注意到了这一点,所以我一直在尝试找到一种方法,仍然能够访问描述符中断(INTA/INTB)。 我尝试使用自定义回调函数,目前看来可以正常工作,能够访问 intA 和 intB 的状态: *defenitions* dma_callback g_nxp_rx_callback = NULL; void *g_nxp_rx_userData = NULL; void Custom_RxDmaCallback(dma_handle_t *handle, void *userData, bool transferDone, uint32_t tcds); *initialisation* g_nxp_rx_callback = FLEXCOMM0_RX_Handle.callback; g_nxp_rx_userData = FLEXCOMM0_RX_Handle.userData; DMA_SetCallback(&FLEXCOMM0_RX_Handle, Custom_RxDmaCallback, NULL); *callback* void Custom_RxDmaCallback(dma_handle_t *handle, void *userData, bool transferDone, uint32_t tcds) { // 1. Intercept intermediate descriptor interrupts if (tcds == kDMA_IntA) { // Descriptor middle finished: 1st buffer filled transferDone = false; } else if (tcds == kDMA_IntB) { // Descriptor final finished: 2nd buffer filled transferDone = true; } if (transferDone && g_nxp_rx_callback != NULL) { g_nxp_rx_callback(handle, g_nxp_rx_userData, transferDone, tcds); } } 这样一来,通信结束后它也会跳转到SPI回调函数,但是(如果我理解有误请指正),进入SPI回调函数会将SPI的内部状态从kSPI_Busy更改为kSPI_Idle,而实际上我陷入了一个描述符的无限循环(最后一个描述符结束后直接跳转到第一个描述符),所以这可能会产生一些冲突? 同时避免在回调函数之间频繁跳转。 所以我决定化繁为简: *initialisation* DMA_SetCallback(&FLEXCOMM0_RX_Handle, Custom_RxDmaCallback, NULL); *callback* void Custom_RxDmaCallback(dma_handle_t *handle, void *userData, bool transferDone, uint32_t tcds) { // 1. Intercept intermediate descriptor interrupts if (tcds == kDMA_IntA) { // Descriptor middle finished: 1st buffer filled } else if (tcds == kDMA_IntB) { // Descriptor final finished: 2nd buffer filled } } Re: Access to intA and intB of DMA descriptors when using SPI 你好, 您的代码只在整个链的末尾触发 SPI_DMA_master_callback() 的原因是,MCUXpresso 的高级 spi_dma_handle_t 驱动程序默认会覆盖各个 DMA 回调并禁用中间描述符中断 (INTA/INTB)。高级驱动程序仅在最终描述符完成后才会通知您。
View full article