Multi Source Translation Content

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

Multi Source Translation Content

ディスカッション

ソート順:
Kinetis MCX Wxx (MCX W71/72 & MCX W23) Power Profile Tools for IIoT This page is dedicated to the Kinetis MCX Wx (MCX W71/72 & MCX W23) Power Profile Tools for IIoT. It will help you to estimate the power consumption in your application (Automotive, IIoT, Trackers/Tags and Continuous Glucose Monitoring [CGM]) and evaluate the battery life time of your solution. This page contains 4 dedicated power profile tools for: Bluetooth LE for the MCX W71/MCX W72 product in standalone. Bluetooth LE for the MCX W23 product in standalone. 802.15.4 Matter ICD SIT & LIT and ZED for the MCX W71 & W72 product in standalone. Aliro Doorlock application (BLE MCX W72/UWB/NFC/Motor) 1. MCX W71 / MCX W72 Bluetooth LE power profiling: AN14389 MCX W71 Bluetooth LE Power Consumption Analysis AN14739 MCX W72 Bluetooth LE Power profile analysis.pdf 2. MCX W23 Bluetooth LE power profiling AN14659: MCX W23 Bluetooth Low Energy Power Consumption Analysis | NXP Semiconductors 3. 802.15.4 Matter ICD SIT & LIT and ZED MCX W71/W72 Power profiling AN14841 MCX W72 802.15.4 Matter and Zigbee Power profile analysis.pdf 4. Doorlock application (BLE/UWB/NFC/Motor)
記事全体を表示
MCU-Link - Linkserver - 性能テストにおける不要サイクルカウントの注入 こんにちは、 まず最初に、書かれている内容はすべてClaudeエージェントによるものです。なぜなら、私が作成するものはすべてObsidianリポジトリ内で作成され、エージェントに書き込ませる方が速いからです。 🙂  私は修士論文のために、FRDM-MCXN947を用いてサイクル精度のタイミング測定を行っており、いくつかのリアルタイムオペレーティングシステムのスケジューリングオーバーヘッドを比較しています。報告するすべての数値は2つのDWT->CYCCNT読み取り値の差なので、測定は1サイクル単位で繰り返し可能でなければなりません。違いますし、かなり長い調査の末、原因はドキュメントから確認できない一つのメカニズムに絞り込みました。私の説明が本当に正しいかどうか確認したいのですが、もし間違っているとしたら、他の可能性をすべて排除してしまい、候補が一人も残っていないことになります。 質問の要点を簡潔にまとめると、デバッグセッションが開いている間、LinkServerは定期的にDHCSRとCPACRを読み取り、コアが停止したかどうかを確認します。これらはどちらもプライベート周辺バス内のSCSレジスタであり、アクセスはコア内で処理され、コードバスやシステムバスには表示されません。私の仮定では、そのようなアクセスはコア内部の命令フェッチやデータアクセスと競合しており、これが測定ウィンドウ内にポールが届くたびに数サイクルのコストを落とす原因だと思います。その推測は正しいですか? 設定 ボードはFRDM-MCXN947で、コア0のみを使用しています。実際の測定では150MHz、後述する制御実験では12MHzを使用しています。搭載MCU-Linkを使ってLinkServerを使ってデバッグしており、これはUSBでCMSIS-DAP v2を言語し、SWDの50と500のワイヤークロックも試しました。起動設定は--no-rtosと--semihost-port=-1を通過し、liveWatchは無効化されているため、コアが動作している間はIDEがターゲットから何かを読み取ることはありません。 テスト対象のコードは、RAMのアドレス0x2000_0000から実行されます。つまり、システムバス経由でフェッチされるということです。キャッシュとRAM ECCは無効になっています。画像がRAMに入る方法にはもう一つ別のバリエーションがあります。ほとんどの作業ではプローブが単にRAMに読み込みますが、ある実験では画像をフラッシュに保存し、起動時にRAMにコピーしました。なぜなら、RAMにしか存在しないイメージはプローブなしでは起動できないからです。その区別はその実験に限っていて、今ここで言及するのは後で明確に設定できるようにするためです。 計測対象は、指定された回数だけ実行される空のカウントループであり、実行前後にCYCCNTを読み取ることで時間を計測します。私はそれぞれの測定を64回繰り返します。 問題 同じ測定を2回行っても、同じ結果は得られない。空ループでは64の値が3〜6サイクルにわたって分散し、実際のアプリケーションコードでは10万回中約9回が他のすべての反復より1〜10サイクル上に出てきます。偏差は常に上昇する一方であり、下降することは決してなく、最小値は完全に安定しており、再現性も高い。最も参考になったのは、測定間隔の長さに応じて変動するコストが、測定呼び出しごとの固定コストではないという点です。これは、私の計測機器のどこかに一定のオーバーヘッドが存在する可能性をすでに排除しています。 これが全容です。各セルは空のループの64回の測定値です。「外れ値」は、64回のうち最初の値を超えた回数をカウントし、minとmaxはループのクリーン値からのサイクル数として示されます。 コアループ数 SWD 50: 外れ値最小値最大値 SWD 500: 外れ値最小値最大値 コアF ループ 64回の測定あたりの外れ値 最小ジッター数 最大ジッター数 外れ値/64mea。 最小ジッター 最大ジッター 12MHz 100 0 +13 +13 0 +13 +13   1000 4 +13 +15 7 +13 +16   10000 24 +13 +16 18 +13 +17   100000 55 +13 +23 57 +13 +22   1,000,000 56 +40 +69 59 +45 +102 150MHz 100 0 +13 +13 0 +13 +13   1000 0 +13 +13 1 +13 +15   10000 4 +13 +15 3 +13 +15   100000 13 +13 +15 16 +13 +17   1,000,000 53 +13 +20 60 +13 +25 この表からは3つのことが分かります。まず、定数+13は問題の一部ではありません。これは、コアクロックとワイヤ速度の両方において、飽和していないすべてのセルで最小値として現れ、ループのプロローグとCYCCNTの読み取り自体に単純に一致します。これはコアクロックとプローブの両方から独立しているため、私が減算する固定バイアスであり、+13を超える値はすべて私が実際に追い求めているものです。 第二に、そしてこれが重要な点だが、この障害は実行されたサイクル数ではなく、実際の時間経過に比例する。同じループ回数で2つのクロックを比較すると、150 MHzよりも12 MHzの方が一貫して外れ値が多くなります。1000回の反復では4対0、7対1、1万回の反復では24対4、18対3、10万回の反復では55対13、57対16です。命令ストリームは両者とも同一であるため、同じサイクル数を実行し、唯一の違いは12 MHzの実行がリアルタイムで12.5倍長くかかることです。 第三に、SWDワイヤークロックは全く影響しません。上記の10組の一致した対では、カウントは両方向に散乱し、カウントノイズ内にとどまるため、ワイヤーレートが10倍に変化してもカウントは残ります。何がペースを決めるにせよ、それはワイヤーではない。 根本原因から除外 最初に断っておきたいのは、リセット時のデフォルト値がまだ有効であると仮定するのではなく、セッションを開いた状態でターゲットから関連するレジスタを実際に読み戻すことによって、これらの可能性の多くが排除されたということです。 SoC側では、CPU1、eDMA0、eDMA1、SmartDMAはすべて無効化されており、RAMのECCもコードキャッシュもオフなので、他のメモリが競合していません。トレース側では、ITMが無効化され、刺激ポートも有効化されず、タイムスタンプもオフ、ストール・フォー・トレースビットはクリアでETMもオフになります。つまり、トレースパケットが何も生成されていないため、何もストールしていないため、それを配信するものが何も起こらないということです。DWT内では、PCサンプリングがオフで、例外トレースがオフで、すべてのイベントカウンタがオフで、ウォッチポイントコンパレータも使われず、パフォーマンスモニターもオフです。TRCENAはもちろん設定されていますが、CYCCNTが依存しているため、妨害されたCASEと未攪乱のCASEの両方に設定されている必要があります。したがって、それが両者の違いにはなりません。 割り込みと例外は、その規模の大きさという理由だけで除外されます。このコアにおける例外処理は、25~50サイクル程度のコストがかかり、私の場合は1~10の誤差が生じる。例外の小さなバージョンは存在せず、割り込みマスクが何を言おうとクラス全体が除外されます。ブレークポイントも同様の理由で使われていません。FPBコンパレータはマッチするまでコストがかかり、マッチするとコアを停止させるため、わずかに遅延しません。 対照実験の結果、テスト対象のコードは除外されました。空ループにはデータ依存的な仕事が一切含まれないため、それ自体で変化することはなく、いずれにせよ変化します。つまり、原因は私が測定しているものではなくプラットフォームにあります。 左デバッガメモリの読み取り値は、これまでで最も有望な説明であり、私がそれを却下した理由を説明したいと思います。なぜなら、それはほとんどの人が合理的に疑うであろうメカニズムだからです。SRAMのデバッグリードはコアから離れ、バスポートをめぐってコアと戦うため、この仕組みは完璧に機能します。問題は、それが起こらないということだ。IDEが行うすべての読み取りはGDB mパケットとして移動し、gdbserverログには$vCont間に単一のパケットはありません。実行を開始し、ホストが32秒後に割り込みます。そのログで読み取られるすべてのメモリは停止後に残っており、これはコアが停止した後にIDEがビューを埋めるだけです。同じ議論は、デバッガがCYCCNT自体を読み取っているという、さらに魅力的な理論を否定する。この理論は私の測定結果と直接矛盾する。なぜなら、それもmパケットとして現れるはずだが、実際には現れず、いずれにせよliveWatchは無効になっているからだ。 どうやら プローブをセッションから分離するために、プローブを物理的に接続した状態で同一のバイナリを実行しました。 しかし、デバッグセッションは開かれていません。これは、起動時にフラッシュメモリからRAMへのコピーが必要だった実験です。 前述したように、RAMのみのイメージはプローブなしではロードする方法がないためです。探査機はそのまま残った 両方のランでコネクテッドだったので、違いはセッションが接続されているかどうかだけでした。 デバッグセッションを行わないと、ジッターは解消される。同じバイナリ、同じクロック、同じブートパス。SO、 プローブがコネクテッドなのではなく、単に接続されているだけで「いいえ」を発信するプローブではありません トランザクションはコストがかかりませんし、セッションを接続するとジッターが戻ります。 その時点で、セッション自体が確実に引き起こした乱れがあり、リアルタイムでペースが調整されています コアクロックでではなく、私は考えられる限りのあらゆるメカニズムを排除していました。 コアが稼働している間にLinkServerが何を送信しているかを調べるために、USBPcapとWiresharkでMCU-LinkのCMSIS-DAPバルクエンドポイントをキャプチャしました。2つのDAP_Transferリクエストが、約50ミリ秒ごとに継続的に繰り返される。 その数字については、すぐに補足説明をしなければなりません。ポーリングは固定タイマーのようには見えません。なぜなら、ホストは前の応答が返ってきた後に次のリクエストを送るように見えるため、この間隔は少なくとも部分的にイベント駆動型です — ホストのターンアラウンドとUSBレイテンシ、さらにホストが自ら挿入する遅延が加わるのです。つまり50ミリ秒は、繰り返しの頻度を示す桁違いの数字であり、引用したい期間ではありません。また、その速度からきれいに逆算することもできません。 最初の要求では、DHCSRとCPACRが一緒に記載されています。回線上のデータは 05 00 06 08 00 00 00 00 05 f0 ed 00 e0 0f 08 00 00 00 00 05 88 ed 00 e0 0f であり、これをデコードすると次のようになります。 # Req デコードデータ ターゲットアクセス 1 08 DP書き込みSELECT 0x00000000 なし(DP内部) 2 05 AP は TAR を書きます 0xE000EDF0 (DHCSR) なし(AP内部) 3 0F AP通信はDRWを読んだ。 — 1読了、PPB 4 08 DP書き込みSELECT 0x00000000 なし(DP内部) 5 05 AP は TAR を書きます 0xE000ED88 (CPACR) なし(AP内部) 6 0F AP通信はDRWを読んだ。 — 1読了、PPB 回答は、DHCSR = 0x01100001 であり、これはコアがセキュアデバッグを有効にして命令をリタイアしていることを意味します。また、CPACR = 0x00F00003 であり、これはFPUに完全にアクセスできることを意味します。2 番目の要求は 05 00 03 08 00 00 00 00 05 f0 ed 00 e0 0f で、これは上記の前半部分のみで、FPU チェックなしでコアが停止したかどうかのみを尋ねます。 SO、測定ウィンドウ中にターゲットに到達する全トラフィックは2PPB読み取り、短いリクエストの場合は1回です。SELECTとTARの書き込みは、それぞれDPとAP内部にあるため、ターゲットアクセスは一切発生しません。実際にどこかへ行くのは2回のDRW読み取りだけです。転送カウントとデータワードカウントを照合し、このアダプターでposted-readシフトなしの直接的な値-レジスタ対応を確認したので、どの値がどのアドレスに属しているか確信を持っています。 両方のアドレスはPPB内のSCSレジスタであり、どちらもSoCバスマトリックスには表示されません。この中にはSRAMアクセスはなく、コアレジスタファイルにもアクセスできません。なぜなら、DCRSR/DCRDRキーホールを通るものは一切入らないため、コアを先に停止させる必要があるからです。補足として、S0からS31およびFPSCRの71転送分のダンプが別途キャプチャに含まれていますが、これはコアがstopAtSymbolブレークポイントで停止した時点のみであり、実行中ではありません。私の推測では、CPACRはDHCSRとセットされているため、コアが停止した瞬間に浮動小数点レジスタが稼働しているかどうかをアダプターがすでに把握できるようにしているのだと思います。 確認すべき前提条件: 私が現在考えているのは、こういうことです。リクエストはD-AHBデバッグを通じてコアに入ります ポートはコア内部のインターコネクトによって、コア自身の命令に対して仲裁されます フェッチやデータアクセス。コア内で解決されているからといって、アクセスが 実行から分離;それでも実行は共有された内部段階で行われます。コアが優先され、 SO、通常のCASEではデバッグアクセスが待機し、コアは影響を受けずに継続されます。残留費用 デバッグビートがすでに進行中でプリエンプトできない場合にのみ現れ、その場合コアは そのビートが終わるのを待たなければなりません。その待ち時間はまさに私が観察している通りです。数サイクル、いつも 上昇傾向を示し、しかも世論調査がたまたま含まれる測定期間のごく一部に限られる。 質問: 私が上で説明したメカニズムは、実際には正しいのでしょうか?DHCSRやCPACRなどのPPBやSCSレジスタのDAP発端読み取りは、D-AHBデバッグポート経由で到着し、M33内で実行中のコア自身のアクセスと競合し、わずかなサイクルだけストップさせることができるのでしょうか?それとも、デバッグポートはPPBターゲットの実行パスから本当に切り離していて、すべて除外してしまい、本当の原因が見つからないのでしょうか? これはどこかに文書化されていますか?私はCortex-M33 TRM(100230_0100_07_en)を持っていて、D-AHBと内部インターコネクトが見えますが、コアが稼働している間にコア内部PPB空間へのデバッグアクセスにかかる費用については何も見つかりませんでした。適切な箇所、あるいはMCXN947特有のDAPの統合方法に関する情報があれば、大変助かります。 CYCCNTはそもそもそのような停滞を認識できるだろうか?言い換えれば、コアは本当に支えられていて、CYCCNTがカウントする実際の実行サイクルであり、他のルートによって妨害されているのではないかということです。 LinkServerの停止状態ポーリングを遅くしたり、無効にしたりする方法はありますか?そうすれば、私が求めている明確な確認が得られるでしょう。つまり、投票頻度を変更して、外れ値の発生率がそれに追随するかどうかを確認するのです。それに関する設定は見つからず、コアの実行中に定期的なDHCSR読み取りを減らすか停止させるものであれば、このテストには有効です。 もしその仕組みが実在するなら、セッションを接続せずに測定することは、この部品のサイクル精度を正確に測定するための正しい方法なのでしょうか?それが今の私のやり方で、セッションが避けられない場合は、複数のウィンドウにわたって最小値を取得し、どれだけのウィンドウがどれだけずれたかを報告するという方法に頼っています。それが一般的な回答なのか、それともライブセッションで正確に測定するための適切な方法があるのかを知りたいです。 コアとメモリ 開発ボード Re: MCU-Link - Linkserver - Injection of unwanted cyclecounts at performance tests こんにちは、 @hms-isyu さん。 詳細な分析をありがとうございました。 申し訳ありませんが、この質問はNXP MCUアプリケーションのサポートの通常の範囲を超えています。MCXN947、MCU-Link、SDK、デバイス使用に関する質問にはお手伝いできます。しかし、あなたが調査している挙動はCortex-M33のデバッグアーキテクチャとサイクル精度の高いパフォーマンス解析に関わっており、私の専門外です。 パフォーマンス測定時に追加サイクルカウントを注入することに関する質問は、Armサポートにお問い合わせください。 ご理解いただきありがとうございます。 BR アリス
記事全体を表示
TDA8954TH 音声出力なし こんにちは! 低音が出ないスピーカー(Mackie Thump12など)をいくつか持っています。出力ICのTDA8954THと10Ωの抵抗器を交換しました。全く音がしない。このICで他に問題が発生している方はいらっしゃいますか? 私はAliExpressで異なる販売者から3つのICを注文しました。 よろしくお願いいたします。 ヨハネス Re: TDA8954TH no sound output こんにちは、ヨハネスさん。 このTDA8954THは旧製品であり、現在は生産中でなく、技術サポートも提供していません。もしかしたら、使っている他の方が助けてくれるかもしれません。   BRs、トーマス
記事全体を表示
Kinetis MCX Wxx(MCX W71/72 和 MCX W23)工业物联网电源我的工具 本页面专用于 Kinetis MCX Wx(MCX W71/72 和 MCX W23)工业物联网电源我的工具。 它将帮助您估算应用(汽车、工业物联网、追踪器/标签和连续血糖监测 [CGM])中的功耗,并评估解决方案的电池寿命。 此页面包含 4 个专用的电源配置文件工具,分别用于: MCX W71/MCX W72 产品独立组网 \(SA\)蓝牙低功耗 (Bluetooth LE) 功能。 MCX W23 产品独立组网 (SA)的蓝牙低功耗 (Bluetooth LE)。 802.15.4 Matter ICD SIT & LIT 和 ZED 用于 MCX W71 & W72 产品的独立组网 \(SA\)。 Aliro 门锁应用(BLE MCX W72/UWB/NFC/电机) 1. MCX W71 / MCX W72 蓝牙低功耗功率配置文件: AN14389 MCX W71 蓝牙低功耗功耗分析 AN14739 MCX W72 蓝牙低功耗功率我的分析.pdf 2. MCX W23 蓝牙低功耗功率配置文件 AN14659:MCX W23 低功耗蓝牙功耗分析 | 恩智浦半导体 3. 802.15.4 Matter ICD SIT & LIT 和 ZED MCX W71/W72 功率分析 AN14841 MCX W72 802.15.4 物质和 Zigbee 功率我的分析.pdf 4.门锁应用(BLE/UWB/NFC/Motor)
記事全体を表示
MCU-Link - 链路服务器 - 性能测试中注入不必要的周期计数 你好呀, 首先:所有代码都是由 Claude 代理编写的,因为我所有的工作都在 Obsidian 仓库中完成,让代理编写代码速度更快。 🙂  我正在对 FRDM-MCXN947 进行周期精确计时测量,作为我的硕士论文的一部分,我在其中比较了一些实时操作系统的调度开销。我报告的每个数字都是两次 DWT->CYCCNT 读数的差值,因此测量结果必须能够重复到单个循环。事实并非如此,经过相当长时间的调查,我已将原因缩小到一种我无法从文档中确认的机制。我想请问一下我的解释是否正确,因为如果我的解释是错误的,那么我已经排除了所有其他可能性,就没有剩下的候选人了。 问题的简短版本是:当调试会话打开时,LinkServer 会定期读取 DHCSR 和 CPACR,以确定核心是否已停止运行。这两个都是私有外设总线内的 SCS 寄存器,因此访问是在内核内部进行的,永远不会出现在代码总线或系统总线上。我的假设是,这种访问仍然会与核心内部的指令获取和数据访问发生竞争,而这正是每次轮询落在测量窗口内时,我的测量都会消耗几个周期的原因。这个假设正确吗? 设置 该板为 FRDM-MCXN947,我只使用了 core0,实际测量频率为 150 MHz,而对照实验(详见下文)频率为 12 MHz。我通过板载 MCU-Link 和 LinkServer 进行调试,它通过 USB 批量传输 CMSIS-DAP v2,我已经尝试了 50 和 500 的 SWD 线时钟。用上市,不用发布配置传递了 --no-rtos 和 --semihost-port=-1,并且 liveWatch 已禁用,因此在核心运行时,IDE 不应该从目标读取任何内容。 被测代码从 RAM 的 0x2000_0000 处执行,这意味着它是通过系统总线获取的。缓存和内存纠错功能已关闭。图像进入 RAM 的方式还有第二种不同的变化:对于大多数工作,探针会直接将其加载到 RAM 中,但在一个实验中,我将图像存储在闪存中,并在启动时将其复制到 RAM 中,因为如果没有探针首先加载它,仅存在于 RAM 中的图像就无法启动。这种区别只对那一次实验有意义,我现在提一下是为了避免以后的设置产生歧义。 被测量的是一个空的计数循环,执行给定的次数,并通过在执行前后读取 CYCCNT 来计时。每项测量重复64次。 问题 两次进行相同的测量并不会得到相同的结果。在空循环中,64 个值分布在三到六个周期内;而在实际应用程序代码中,大约每十万次迭代中就有九次比其他所有迭代多出一到十个周期。偏差只会向上,不会向下,最小值完全稳定且可重复。最有启发性的是,价差会随着测量窗口长度的增加而增长,而不是每次测量调用都有固定成本,这已经排除了我的仪器中存在恒定开销的可能性。 以下是全部内容。每个单元格是空循环的 64 次测量;“异常值”统计了 64 次测量中有多少次高于第一次测量值,最小值和最大值以高于循环干净值的循环次数表示。 核心循环计数 SWD 50:异常值最小值最大值 SWD 500:异常值最小值最大值 核心 F 循环 每 64 次测量中的异常值 最小抖动计数 最大抖动计数 异常值/64mea。 最小抖动 最大抖动 12 MHz 100 0 +13 +13 0 +13 +13   1000 4 +13 +15 7 +13 +16   10000 24 +13 +16 18 +13 +17   100000 55 +13 +23 57 +13 +22   100万 56 +40 +69 59 +45 +102 150 MHz 100 0 +13 +13 0 +13 +13   1000 0 +13 +13 1 +13 +15   10000 4 +13 +15 3 +13 +15   100000 13 +13 +15 16 +13 +17   100万 53 +13 +20 60 +13 +25 从这张表格中可以得出三点结论。首先,常数 +13 不是问题的一部分。在两种核心时钟和两种线速下,它在每个未饱和的单元格中都显示为最小值,它只是循环序言加上 CYCCNT 读取本身。因为它与核心时钟和探针都无关,所以我减去的是一个固定的偏置,而所有高于 +13 的值都是我实际追求的目标。 其次,也是最重要的一点,干扰遵循的是实际时钟时间,而不是执行的周期数。如果比较两个时钟在相同循环次数下的情况,12 MHz 的异常值始终比 150 MHz 的异常值多:在 1000 次迭代时,12 MHz 的异常值比 150 MHz 的异常值多 4 个,150 MHz 的异常值比 0 个;在 10000 次迭代时,12 MHz 的异常值比 150 MHz 的异常值多 7 个,150 MHz 的异常值比 1 个;在 10000 次迭代时,12 MHz 的异常值比 150 MHz 的异常值多 24 ...50 MHz 的异常值多 24 个,150 MHz 的异常值比 150 MHz 的异常值多 24 个,150 MHz两种情况下指令流完全相同,因此执行的周期数也相同,唯一的区别是 12 MHz 的运行时间比 12 MHz 的运行时间长 12.5 倍。 第三,SWD 线时钟没有任何作用。在上述十对匹配数据中,计数结果在两个方向上分散,并且保持在计数噪声范围内,因此即使线路速率变化十倍也不会影响它们。决定节奏的因素并非电线。 排除根本原因 我想坦白地说,很多可能性都是通过在会话打开的情况下实际从目标读取相关寄存器来排除的,而不是假设RESET默认值仍然有效。 在 SoC 端,CPU1、eDMA0、eDMA1 和 SmartDMA 都被禁用,RAM ECC 也已关闭,代码缓存也已关闭,因此没有其他任何东西会争用内存。在跟踪方面,ITM 已禁用,未启用激励端口,时间戳已关闭,跟踪暂停位已清除,ETM 也已关闭,这意味着没有任何东西会生成跟踪数据包,因此也没有任何东西会暂停以传递它们。在 DWT 中,PC 采样已关闭,异常跟踪已关闭,所有事件计数器均已关闭,监视点比较器未使用,性能监测也已关闭。TRCENA 当然是设置好的,但是无论是否受到干扰,都必须设置 TRCENA,因为 CYCCNT 依赖于它,所以它不可能是两者之间的区别。 仅从大小角度来看,中断和异常就被排除在外。任何对这一核心的例外情况都会花费二十五到五十个周期,而我的偏差是一到十个周期。没有小版本的例外情况,因此无论中断掩码如何规定,整个类都会被排除在外。出于类似的原因,断点也被弃用了:FPB 比较器在匹配之前不消耗任何资源,而匹配时会停止核心运行,而不是稍微延迟核心运行。 由于需要进行对照实验,被测代码已移除。空循环不包含任何与数据相关的工作,因此它本身不会发生变化,但它仍然会发生变化。所以问题出在平台上,而不是我所衡量的指标上。 这样看来,调试器内存读取是目前为止最有希望的解释,我想解释一下我为什么放弃了它,因为这是大多数人都会合理怀疑的机制。对 SRAM 的调试读取会离开内核,并且会与内核争夺总线端口,因此该机制可以完美地工作。问题是,这种情况并没有发生。IDE 执行的每次读取操作都会以 GDB m 数据包的形式传输,但在 gdbserver 日志中,从开始执行的 $vCont;c 到 32 秒后的主机中断之间,没有一个数据包。日志中读取的每一次内存都是在程序停止后才出现的,这只是 IDE 在核心停止后填充其视图的过程。同样的论点也驳斥了调试器正在读取 CYCCNT 本身这一更具吸引力的理论,该理论将直接与我的测量结果相冲突:它也会显示为 m 数据包,但事实并非如此,而且 liveWatch 无论如何都被禁用了。 它看起来像是 为了将探针与会话分离,我运行了相同的二进制文件,同时将探针物理连接到电脑上。 但是没有打开调试会话。这项实验需要在启动时进行闪存到内存的复制。 如前所述,由于仅 RAM 映像没有探测就无法加载。探测器仍在运行 两次运行都连接上了,所以它们之间的唯一区别是是否附加了会话。 如果没有调试会话,抖动就会消失。相同的二进制文件、相同的时钟、相同的启动路径。所以这不是…… 探针已连接,但并非版本:探针只是连接上但没有发出任何信号。 交易无需任何费用,但附加会话又会恢复抖动。 那时我受到了干扰,这肯定是由会话引起的,而且会话的节奏是实时的。 而不是通过核心时钟,为此我已经排除了我能想到的所有机制。 为了找出 LinkServer 在核心运行时发送的内容,我使用 USBPcap 和 Wireshark 捕获了 MCU-Link 的 CMSIS-DAP 批量端点。两个 DAP_Transfer 请求持续重复,大约每隔 50 毫秒重复一次。 我应该立即对这个数字进行限定。轮询看起来不像是一个固定的计时器,因为主机似乎只有在收到前一个响应后才会发送下一个请求,这使得间隔至少部分是由事件驱动的——主机周转时间加上 USB 延迟加上主机自行插入的任何延迟。所以 50 毫秒是一个数量级数字,表示它重复的频率,而不是一个我想引用的周期,这也意味着我不能从速率中清晰地反推。 第一个请求同时读取了 DHCSR 和 CPACR。线路上的信息为 05 00 06 08 00 00 00 00 05 f0 ed 00 e0 0f 08 00 00 00 00 05 88 ed 00 e0 0f,解码后为: # 请求解码数据目标访问 1 08 DP 写入 SELECT 0x00000000 无(DP内部) 2 05 AP 写 TAR 0xE000EDF0 (DHCSR) 无(AP内部) 3 0F AP 阅读 DRW — 1次阅读,PPB 4 08 DP 写入 SELECT 0x00000000 无(DP内部) 5 05 AP 写 TAR 0xE000ED88(CPACR) 无(AP内部) 6 0F AP 阅读 DRW — 1次阅读,PPB 答案是 DHCSR = 0x01100001,表示内核正在启用安全调试并执行指令,CPACR = 0x00F00003,表示 FPU 完全可访问。第二个请求是 05 00 03 08 00 00 00 00 05 f0 ed 00 e0 0f,它只是上面请求的前半部分,只询问核心是否已停止运行,而没有进行 FPU 检查。 因此,在我的测量窗口期间到达目标的全部流量为两次 PPB 读取,或者在较短的请求情况下为一次。SELECT 和 TAR 写入操作根本不会产生任何目标访问,因为它们分别是 DP 和 AP 内部的,只有两个 DRW 读取操作才会真正访问目标。我检查了传输计数与数据字计数,确认了该适配器上存在直接的值到寄存器映射,没有读取后移位,因此我确信哪个值属于哪个地址。 这两个地址都是 PPB 内部的 SCS 寄存器,并且都没有出现在 SoC 总线矩阵上。其中没有任何 SRAM 访问,也没有对核心寄存器文件的访问,因为没有任何东西会通过 DCRSR/DCRDR 密钥孔进行访问,这需要先停止核心运行。为了完整起见:捕获中确实出现了 S0 到 S31 和 FPSCR 的单独 71 次传输转储,但仅在核心在 stopAtSymbol 断点处停止时出现,而不是在运行期间出现。我的猜测是,CPACR 与 DHCSR 捆绑在一起,正是为了使适配器在内核停止运行的那一刻就已经知道浮空寄存器是否处于活动状态。 待检验的假设: 我目前认为正在发生的事情是这样的。请求通过 D-AHB 调试进入核心。 端口,然后由核心内部互连仲裁,以对抗核心自身的指令。 获取和数据访问。在核心内部解决并不意味着访问路径一定是这样的 虽然与执行过程脱节,但它仍然在共享的内部阶段与执行过程相遇。核心优先。 因此,在正常情况下,调试访问会等待,而核心程序会继续运行而不受影响。剩余成本 仅当调试节拍已在进行中且无法被抢占时才会出现,在这种情况下,核心 必须等到那个节拍结束。我观察到的正是这种等待:几个周期,总是如此。 向上,并且仅在民意调查恰好落入的测量窗口的一部分上。 问题: 我上面描述的机制是否正确?通过 D-AHB 调试端口到达的 DAP 发起的对 PPB 或 SCS 寄存器(例如 DHCSR 或 CPACR)的读取操作,是否会与 M33 内部正在运行的内核自身的访问操作发生冲突,从而导致 M33 停滞几个周期?或者,调试端口是否真的与 PPB 目标的执行路径不相干?如果是这样,我已经排除了所有可能的原因,但仍然找不到真正的原因。 这方面有任何书面记录吗?我有 Cortex-M33 TRM (100230_0100_07_en),可以看到其中的 D-AHB 和内部互连,但我没有找到任何关于在内核运行时对内核内部 PPB 空间进行调试访问的成本的说明。如果能提供指向正确章节的链接,或者任何关于 MCXN947 中 DAP 如何集成到该部件上的具体信息,将对我有很大的帮助。 CYCCNT 会出现这样的停滞吗?换句话说,核心是否真的被阻塞,以至于这些是 CYCCNT 计算的真实执行周期,而不是 CYCCNT 受到其他途径干扰的周期? 有没有办法减慢或禁用 LinkServer 中的停止状态轮询?这样就能给我想要的明确确认:改变轮询率,看看异常值率是否随之改变。我一直没能找到相关的设置,任何能在核心运行时减少或停止周期性 DHCSR 读取的操作都适用于此测试。 如果该机制是真实存在的,那么对于该零件而言,在不附加任何测量步骤的情况下进行测量是否就是进行周期精确工作的正确做法?这就是我现在所做的,如果无法避免进行会话,我会取多个窗口中的最小值,并报告有多少窗口偏离了最小值以及偏离了多少。我想知道这是否是公认的答案,或者是否有官方支持的方法可以在实时会话中进行干净利落的测量。 核心与内存 开发板 Re: MCU-Link - Linkserver - Injection of unwanted cyclecounts at performance tests 你好@hms-isyu 感谢您详尽的分析。 很抱歉,这个问题超出了恩智浦MCU应用支持的通常范围。我可以解答有关 MCXN947、MCU-Link、SDK 和设备使用方面的问题。但是,您正在调查的行为涉及 Cortex-M33 调试架构和周期精确性能分析,这超出了我的专业领域。 对于有关在性能测量期间注入额外循环计数的问题,我建议联系 Arm 支持部门以获取进一步指导。 感谢您的理解。 BR 爱丽丝
記事全体を表示
TDA8954TH no sound output Hello! I have several speakers (Mackie Thump12) with no bass output. I changed the output IC TDA8954TH and the 10R resistors. No sound at all. Does anybody else have problems with this IC? I ordered 3 ICs from different sellers on ALI Express. Best regards, Johannes Re: TDA8954TH no sound output Hello Johannes, The TDA8954TH is a legacy product that is no longer in production and we no longer provide technical support for this device. Perhaps someone else who uses it could help.   BRs, Tomas
記事全体を表示
MCU-Link - Linkserver - Injection of unwanted cyclecounts at performance tests Hello there, First of all: everything written is from a claude agent, because everything I make is done inside an obsidian Repo and it is faster to let the agent write 🙂  I am doing cycle-accurate timing measurements on an FRDM-MCXN947 for my master's thesis, where I compare the scheduling overhead of some real-time operating systems. Every number I report is a difference of two DWT->CYCCNT reads, so the measurement has to be repeatable down to the single cycle. It is not, and after a fairly long investigation I have narrowed the cause down to one mechanism that I cannot confirm from the documentation. I would like to ask whether my explanation is actually correct, because if it is wrong then I have excluded everything else and have no candidate left. The short version of the question: while a debug session is open, LinkServer periodically reads DHCSR and CPACR to find out whether the core has halted. Both of these are SCS registers inside the private peripheral bus, so the access is serviced inside the core and never appears on the code bus or the system bus. My assumption is that such an access nevertheless competes with the core's own instruction fetches and data accesses somewhere inside the core, and that this is what costs my measurement a few cycles every time a poll lands inside the measured window. Is that assumption right? Setup The board is an FRDM-MCXN947 and I am using core0 only, at 150 MHz for the real measurements and at 12 MHz for a control experiment described further down. I debug through the on-board MCU-Link with LinkServer, which speaks CMSIS-DAP v2 over USB bulk, and I have tried SWD wire clocks of both 50 and 500. The launch configuration passes --no-rtos and --semihost-port=-1, and liveWatch is disabled, so the IDE should not be reading anything from the target while the core runs. The code under test executes from RAM at 0x2000_0000, which means it is fetched over the system bus. Caches and RAM ECC are off. There is a second, separate variation in how the image gets into RAM: for most of the work the probe simply loads it there, but for one experiment I stored the image in flash and copy it into RAM during startup, because an image that only exists in RAM cannot start without a probe to load it in the first place. That distinction matters only for that one experiment, and I mention it now so the setup is unambiguous later. The thing being measured is an empty counting loop, executed a given number of times and timed by reading CYCCNT before and after. I repeat each measurement 64 times. Problem Running the identical measurement twice does not give the identical answer. On the empty loop the 64 values spread over three to six cycles, and on real application code roughly nine out of a hundred thousand iterations come out one to ten cycles above all the others. The deviations only ever go upward, never downward, and the minimum value is perfectly stable and reproducible. What was most informative is that the spread grows with the length of the measurement window rather than being a fixed cost per measurement call, which already rules out a constant overhead somewhere in my instrumentation. Here is the full sweep. Each cell is 64 measurements of the empty loop; "outliers" counts how many of the 64 came out above the first one, and min and max are given as cycles above the loop's clean value. Core Loop count SWD 50: outliers min max SWD 500: outliers min max Core F loops outliers per 64 MEasurements min jitter count max jitter count outliers/64mea. min jitter max jitter 12 MHz 100 0 +13 +13 0 +13 +13   1 000 4 +13 +15 7 +13 +16   10 000 24 +13 +16 18 +13 +17   100 000 55 +13 +23 57 +13 +22   1 000 000 56 +40 +69 59 +45 +102 150 MHz 100 0 +13 +13 0 +13 +13   1 000 0 +13 +13 1 +13 +15   10 000 4 +13 +15 3 +13 +15   100 000 13 +13 +15 16 +13 +17   1 000 000 53 +13 +20 60 +13 +25 Three things come out of this table. First, the constant +13 is not part of the problem. It shows up as the minimum in every cell that has not saturated, at both core clocks and at both wire speeds, and it is simply the loop prologue plus the CYCCNT read itself. Because it is independent of both the core clock and the probe, it is a fixed bias that I subtract, and everything above +13 is what I am actually chasing. Second, and this is the important one, the disturbance follows wall-clock time and not the number of cycles executed. If you compare the two clocks at the same loop count, there are consistently more outliers at 12 MHz than at 150 MHz: four against zero and seven against one at a thousand iterations, twenty-four against four and eighteen against three at ten thousand, fifty-five against thirteen and fifty-seven against sixteen at a hundred thousand. The instruction stream is identical in both cases and therefore executes the same number of cycles, and the only thing that differs is that the 12 MHz run takes 12.5 times longer in real time. Third, the SWD wire clock makes no difference at all. Across the ten matched pairs above the counts scatter in both directions and stay within counting noise, so a tenfold change in wire rate leaves them alone. Whatever sets the pace, it is not the wire. Excluded as root cause I want to be upfront that a lot of this was ruled out by actually reading the relevant register back from the target with the session open, rather than by assuming that the reset default still held. On the SoC side, CPU1, eDMA0, eDMA1 and the SmartDMA are all disabled, RAM ECC is off and the code cache is off, so nothing else is contending for memory. On the trace side, ITM is disabled, no stimulus port is enabled, timestamps are off, the stall-for-trace bit is clear and ETM is off, which means nothing is generating trace packets and therefore nothing can be stalling in order to deliver them. Within the DWT, PC sampling is off, exception trace is off, all the event counters are off, the watchpoint comparators are unused, and the performance monitor is off. TRCENA is of course set, but it has to be set in both the disturbed and the undisturbed case because CYCCNT depends on it, so it cannot be the difference between them. Interrupts and exceptions are out on grounds of size alone. Any exception on this core costs somewhere between twenty-five and fifty cycles, and my deviations are one to ten. There is no small version of an exception, so the entire class is excluded regardless of what the interrupt masks say. Breakpoints are out for a similar reason: an FPB comparator costs nothing until it matches, and when it matches it halts the core rather than delaying it slightly. The code under test is out because of a control experiment. An empty loop contains no data-dependent work whatsoever and therefore cannot vary on its own, and it varies anyway. So the cause is in the platform, not in what I am measuring. That left debugger memory reads as by far the most promising explanation, and I would like to explain why I dropped it, because it is the mechanism most people would reasonably suspect. A debug read of SRAM does leave the core and would genuinely fight the core for the bus port, so the mechanism would work perfectly. The trouble is that it does not happen. Every read the IDE performs travels as a GDB m packet, and in the gdbserver log there is not a single packet between the $vCont;c that starts execution and the host interrupt thirty-two seconds later. Every memory read in that log sits after the halt, which is just the IDE filling its views once the core has stopped. The same argument disposes of the even more attractive theory that the debugger is reading CYCCNT itself, which would contend with my measurement directly: that would also appear as an m packet, and it does not, and liveWatch is disabled anyway. What it seems to be To separate the probe from the session I ran the identical binary with the probe physically plugged in but with no debug session open. This is the experiment that needed the flash-to-RAM copy at startup I mentioned earlier, since a RAM-only image has no way to get loaded without a probe. The probe stayed connected for both runs, so the only difference between them was whether a session was attached. Without a debug session the jitter is gone. Same binary, same clock, same boot path. So it is not the probe being connected, and it is not the build: a probe that is merely attached but issuing no transactions costs nothing, and attaching a session brings the jitter back. At that point I had a disturbance that is definitely caused by the session, that is paced by real time rather than by the core clock, and for which I had eliminated every mechanism I could think of. To find out what LinkServer sends while the core is running, I captured the MCU-Link's CMSIS-DAP bulk endpoints with USBPcap and Wireshark. Two DAP_Transfer requests repeat continuously, roughly every fifty milliseconds. I should immediately qualify that number. The polling does not look like a fixed timer, because the host appears to send the next request only after the previous response has come back, which makes the interval at least partly event-driven — host turnaround plus USB latency plus whatever delay the host inserts of its own accord. So fifty milliseconds is an order-of-magnitude figure for how often it repeats, not a period I would want to quote, and it also means I cannot cleanly reason backwards from the rate. The first request reads DHCSR and CPACR together. On the wire it is 05 00 06 08 00 00 00 00 05 f0 ed 00 e0 0f 08 00 00 00 00 05 88 ed 00 e0 0f, which decodes as: # Req Decode Data Target access 1 08 DP write SELECT 0x00000000 none (DP-internal) 2 05 AP write TAR 0xE000EDF0 (DHCSR) none (AP-internal) 3 0f AP read DRW — 1 read, PPB 4 08 DP write SELECT 0x00000000 none (DP-internal) 5 05 AP write TAR 0xE000ED88 (CPACR) none (AP-internal) 6 0f AP read DRW — 1 read, PPB The answers were DHCSR = 0x01100001, meaning the core is running with secure debug enabled and instructions retiring, and CPACR = 0x00F00003, meaning the FPU is fully accessible. The second request is 05 00 03 08 00 00 00 00 05 f0 ed 00 e0 0f, which is just the first half of the above and asks only whether the core has halted, without the FPU check. So the entire traffic reaching the target during my measurement window is two PPB reads, or one in the case of the shorter request. The SELECT and TAR writes produce no target access at all, since they are internal to the DP and the AP respectively, and only the two DRW reads actually go anywhere. I checked the transfer count against the data-word count and confirmed a direct value-to-register mapping with no posted-read shift on this adapter, so I am confident about which value belongs to which address. Both addresses are SCS registers inside the PPB, and neither appears on the SoC bus matrix. There is no SRAM access anywhere in this, and there is no access to the core register file either, since nothing goes through the DCRSR/DCRDR keyhole, which would require the core to be halted first. For completeness: a separate seventy-one-transfer dump of S0 to S31 and FPSCR does appear in the capture, but only at a moment when the core was halted at a stopAtSymbol breakpoint, not during the run. My guess is that CPACR is bundled with DHCSR precisely so that the adapter already knows whether the floating-point registers are live at the instant the core does halt. Assumption to check:  What I currently believe is happening is this. The request enters the core through the D-AHB debug port and is then arbitrated by the core's internal interconnect against the core's own instruction fetches and data accesses. Being resolved inside the core does not put the access on a path that is disjoint from execution; it still meets execution at a shared internal stage. The core holds priority, so in the normal case the debug access waits and the core carries on unaffected. The residual cost appears only when a debug beat is already in flight and cannot be preempted, in which case the core has to wait for that beat to finish. That wait would be exactly what I observe: a few cycles, always upward, and only on the fraction of measurement windows that a poll happens to fall inside. Questions: Is the mechanism I described above actually correct? Does a DAP-originated read of a PPB or SCS register such as DHCSR or CPACR, arriving over the D-AHB debug port, contend with the running core's own accesses inside the M33 in a way that can stall it by a small number of cycles? Or is the debug port genuinely disjoint from the execution path for PPB targets, in which case I have excluded everything and am still missing the real cause? Is this documented anywhere? I have the Cortex-M33 TRM (100230_0100_07_en) and can see the D-AHB and the internal interconnect in it, but I have not found any statement about what a debug access to core-internal PPB space costs while the core is running. A pointer to the right section, or to anything MCXN947-specific about how the DAP is integrated on this part, would help me a great deal. Would CYCCNT even see such a stall? In other words, is the core genuinely held up, so that these are real execution cycles that CYCCNT counts, rather than CYCCNT being perturbed by some other route? Is there any way to slow down or disable the halt-state poll in LinkServer? That would give me the clean confirmation I am after: change the poll rate and see whether the outlier rate follows. I have not been able to find a setting for it, and anything that reduces or stops the periodic DHCSR read while the core runs would work for this test. If the mechanism is real, is measuring with no session attached simply the correct practice for cycle-accurate work on this part? That is what I do now, and where a session is unavoidable I fall back on taking the minimum across many windows and reporting how many deviated and by how much. I would like to know whether that is the accepted answer, or whether there is a supported way to measure cleanly with a live session. Core and Memory Development Board Re: MCU-Link - Linkserver - Injection of unwanted cyclecounts at performance tests Hi @hms-isyu  Thank you for your detailed analysis. I'm sorry, but this question is beyond the typical scope of NXP MCU application support. I can help with MCXN947, MCU-Link, SDK, and device usage questions. However, the behavior you are investigating involves Cortex-M33 debug architecture and cycle-accurate performance analysis, which is outside my area of expertise. For questions related to the injection of additional cycle counts during performance measurements, I would recommend contacting Arm support for further guidance. Thank you for your understanding. BR Alice
記事全体を表示
TDA8954TH 无声音输出 您好! 我有几个音箱(Mackie Thump12),但它们没有低音输出。我更换了输出集成电路 TDA8954TH 和 10R 电阻。完全没有声音。还有其他人遇到过这款集成电路的问题吗? 我在速卖通上从不同的卖家那里订购了3个集成电路。 顺祝商祺! 约翰内斯 Re: TDA8954TH no sound output 你好,约翰内斯, TDA8954TH是一款已停产的旧产品,我们不再为此设备提供技术支持。或许其他使用者可以提供帮助。   BRs,托马斯
記事全体を表示
Kinetis (KW3x/4x) Power Profile Tools for Automotive This page is dedicated to the Kinetis (KW35/KW38/KW45/KW47) Power Profile Tools for Automotive. It will help you to estimate the power consumption in your Automotive application (keyfob/smartfob & anchor) and evaluate the battery life time of your solution. This page contains 3 dedicated power profile tools for: Bluetooth LE for the KW35/36 products in standalone. Bluetooth LE for the KW37/38/39 products in standalone. Bluetooth LE for the KW45/KW47 products in standalone. SmartFob application (BLE/KW45; UWB Ranger4; SE; motion sensor) SmartFob application (BLE/KW47; UWB Ranger5; SE; motion sensor)    1. KW35/36 Bluetooth LE power profiling standalone:  christophe_menard_0-1785491668653.png 2. KW37/38/39 Bluetooth LE power profiling standalone:  christophe_menard_1-1785491723947.png This tool includes 3 different use cases to get a rough estimation of the Anchor and Keyfob/Smartphone power consumptions:    1- CCC mobile phone connected to the car and exchange packets to unlock the door of the car    2- SCA Keyfob connected to the car and exchange packets continuously    3- CCC Smartphone connected to the car and exchange packets continuously : 2 row modes 3. KW45/KW47 Bluetooth LE power profiling standalone: AN13230 Kinetis KW45 Bluetooth LE Power Consumption Analysis AN14554 Kinetis KW47 Bluetooth LE Power profile analysis release.pdf 4. SmartFob application (BLE/KW45; UWB Ranger4; SE; motion sensor) power profiling 5. SmartFob application (BLE/KW47; UWB Ranger5; SE; motion sensor) power profiling christophe_menard_2-1785493894936.png id:wireless-connectivity [start:July 31 2026]
記事全体を表示
Kinetis (KW3x/4x) 汽车用电动我的工具 本页面专用于介绍 Kinetis(KW35/KW38/KW45/KW47)用动力我的工具 汽车。 它将帮助您估算汽车应用(钥匙扣/智能钥匙扣和锚点)中的功耗,并评估解决方案的电池寿命。 本页面包含 3 个专用的电源配置文件工具,分别用于: KW35/36 产品独立组网 (SA)的蓝牙低功耗功能。 KW37/38/39 产品独立组网 (SA)的蓝牙低功耗功能。 KW45/KW47 产品独立组网 \(SA\)的蓝牙低功耗功能。 SmartFob 应用(BLE/KW45;UWB Ranger4;SE;运动传感器) SmartFob 应用(BLE/KW47;UWB Ranger5;SE;运动传感器)    1. KW35/36 蓝牙低功耗独立组网 \(SA\)功率配置文件:  christophe_menard_0-1785491668653.png 2. KW37/38/39 蓝牙低功耗独立组网 (SA)功率配置文件:  christophe_menard_1-1785491723947.png 该工具包含 3 种不同的使用场景,用于粗略估算锚点和钥匙扣/智能手机的功耗: 1. CCC手机与汽车连接并交换数据包以解锁车门 2. SCA遥控钥匙与汽车连接并持续交换数据包 3- CCC智能手机连接到汽车并持续交换数据包:2行模式 3. KW45/KW47 蓝牙低功耗独立组网 \(SA\)功率我的: AN13230 Kinetis KW45 蓝牙低功耗功耗分析 AN14554 Kinetis KW47 蓝牙低功耗功率我的分析版本.pdf 4. SmartFob 应用(BLE/KW45;UWB Ranger4;SE;运动传感器)功率曲线分析 5. SmartFob 应用(BLE/KW47;UWB Ranger5;SE;运动传感器)功率曲线分析 christophe_menard_2-1785493894936.png id:无线连接 [开始日期:2026年7月31日]
記事全体を表示
S32K344 AB-Swap 在 HSE_ActivatePassiveBlock 后自动启动失败;固件仅可通过 J-Link Sta 启动 平台:S32K344,采用 AB 互换方案。主动模块和被动模块分别存储不同的固件镜像。观察:执行 HSE_ActivatePassiveBlock() 交换活动/被动分区后,完全断电重启不会触发固件自动启动。只有连接 J-Link 并通过调试器触发启动应用程序时,固件才能成功执行。请问有人能解释一下根本原因并提供建议的解决方案吗? Re: S32K344 AB-Swap auto-boot failure after HSE_ActivatePassiveBlock; firmware boots only via J-Link 嗨@HQZ 您确定被动分区中存在有效镜像吗?如果在启动目标后不RESET它,而是将调试器连接到正在运行的目标上,你会观察到什么现象?设备是否进入JTAG恢复模式?或者,您也可以直接通过调试器重置设备,然后检查它是否到达了应用程序的入口点。 如果设备在地址 0x2040012C 处陷入无限循环,则表明它已进入 JTAG 恢复模式。这也可能表明 IVT 配置或 IVT 完整性存在问题。 另外,被动分区中的映像是否链接到活动分区地址空间运行,即从 0x00400000 开始运行? 最后,你们是否启用了安全启动? 此致, Lukas Re: S32K344 AB-Swap auto-boot failure after HSE_ActivatePassiveBlock; firmware boots only via J-Link 你好@lukaszadrapa  平台:S32K344,AB-Swap架构。独立固件镜像分别存储在主动块和被动块中。HSE安全启动已禁用。问题描述:调用HSE_ActivatePassiveBlock()完成主动/被动分区切换后,设备在断电后RESET无法自动启动目标固件。但是,如果将J-Link调试器连接到芯片,并在调试器软件中点击“启动应用程序”,则切换后的固件可以正常运行。补充背景:固件同时存在于分区A和分区B中。两个镜像之间的唯一区别是LED闪烁频率。分区A固件的链接起始地址为0x400000,而分区B固件的链接起始地址为0x600000。调用HSE_ActivatePassiveBlock()并RESET后,我使用J-Link转储了闪存内容。分区A和分区B的内容已物理交换,证实HSE_ActivatePassiveBlock()已生效。问题:1. 此行为的根本原因是什么?为什么冷启动和调试器触发的“启动应用程序”的行为不同?2. AB分区交换后,有哪些可行的解决方案可以解决自动启动失败的问题?感谢您的支持。 Re: S32K344 AB-Swap auto-boot failure after HSE_ActivatePassiveBlock; firmware boots only via J-Link 嗨@HQZ “分区 B 固件链接起始地址为 0x600000”——这就是问题所在。两个映像必须链接才能使用活动分区地址 – 0x400000。应用程序始终在活动分区上运行,而不是在被动分区上运行。 解决方法——对两个项目使用同一个链接器文件。 它之所以能与你的调试器配合使用,是因为调试器会“手动”将程序计数器设置为入口点地址,该地址位于 elf 文件中。 此致, Lukas Re: S32K344 AB-Swap auto-boot failure after HSE_ActivatePassiveBlock; firmware boots only via J-Link 你好@lukaszadrapa 我已按照之前的建议尝试了 AB 分区交换,但问题仍然存在。 使用的 HSE 固件版本为 s32k344_hse_fw_1.5.0_2.40。 用于验证 AB 交换的测试设置: 具有基于应用程序的自我更新的单链接器脚本。该应用程序负责将新的固件映像编程到被动分区中。 链接器脚本:只使用一个链接器脚本,固件起始地址始终设置为 0x00400000。 工作流程: 1.在分区 A(逻辑地址 0x00400000)中运行的应用程序通过 CAN 接收新固件。A分区和B分区固件之间的唯一区别在于LED闪烁频率。 2. 该应用程序将新固件直接编程到被动分区的物理地址(0x00600000)中。 3.编程完成后,调用 HSE_ActivatePassiveBlock() 服务。 4. 然后 RESET 芯片。 观察: 固件RESET后无法运行。但是,当连接 J-Link 并从调试器触发“启动应用程序”时,分区 B 中的固件可以正确执行。 还有哪些其他根本原因会导致分区交换失败,相应的解决方法是什么? 问候 Re: S32K344 AB-Swap auto-boot failure after HSE_ActivatePassiveBlock; firmware boots only via J-Link 很抱歉回复晚了。 以下是一些常见问题: 运行 HSE_ActivatePassiveBlock() 并重置设备后,大约需要 1 秒 HSE 才能准备好接受新的服务请求。这是因为 HSE 会将 HSE 固件备份到被动分区。操作完成后,FSR 寄存器中的 HSE_STATUS_INIT_OK 标志将被置位。所以,在 HSE 完成之前,无法使用它。有时这就是麻烦的根源。 固件版本 0.2.55.0 及更高版本已对此进行了优化,并且仅当固件更新时才会将其复制到被动分区。如果结果仍然相同,HSE 将跳过此操作,交换速度会快得多。 然后我建议阅读 HSE 固件参考手册修订版中的描述。2.7 节: “14.6.5同步 HSE 和应用核心之间的闪存读/写访问: https://www.nxp.com/webapp/sd/collateral/1765990353647716033651?version=2.7 表 149、150 和 151 中提供了典型场景的详细信息。 就您的情况而言:当 HSE 将自身备份到被动分区时,无法访问闪存块 3,因为 HSE 在该块上执行闪存操作。 另外,您不能对块 1 执行刷写操作,因为 HSE 固件正在该块上运行。 还有一点,如果 HSE 正在运行,则无法更改 HSE_CLK。重置后,HSE 运行约 1 秒,此时可能会出现问题。 更改 HSE_CLOCK 时,HSE 必须处于IDLE状态。HSE 运行时无法更改时钟。这可能会导致不可预测的行为。S32K3 参考手册中明确提到了这一点: “在配置 HSE_CLK 之前,必须等待 SBAF 通过读取 HSE CPU 的核心状态寄存器 (PRTN0_CORE2_STAT) 进入 WFI 状态。” 使用旧版本的 RTD 驱动程序时可能会出现问题,因为这些驱动程序不会检查上述状态寄存器。 该检查已在 RTD 版本 5.0.0 及更高版本中实施。如果您使用的是旧版本,则需要在时钟初始化之前轮询 WFI。所以,这可能也是它失败的原因。 回复: S32K344 AB-Swap auto-boot failure after HSE_ActivatePassiveBlock; firmware boots only via J-Link 你好,兄弟 我也遇到了同样的问题。请问您是如何解决这个问题的?
記事全体を表示
i.MX8MQ: Does the Boot ROM support booting from FlexSPI/QSPI NOR flash? Hardware: - i.MX8MQ (REV A0), custom board based on EVK design - QSPI NOR: Micron MT25QL256A (32MB, 3.3V, Quad connected) - BSP: Yocto Scarthgap, NXP BSP, U-Boot 2024.04 (u-boot-imx) Goal: Boot the bootloader (SPL + ATF + U-Boot) from FlexSPI NOR flash. Kernel and rootfs remain on eMMC. What works: - U-Boot (loaded to RAM via uuu SDP/SDPV) runs fine - "sf probe" detects the flash correctly: mt25ql256a, 32 MiB - U-Boot can read and write the flash reliably (verified with read-back tests after "sf protect unlock") - Image is built with IMXBOOT_TARGETS = "flash_evk_flexspi" Flash layout (verified by reading back from the chip): 0x000000: FCFB header - "qspihdr check" reports "Found boot config header in Q(F)SPI" tag = 42464346, version = 56010000 0x001000: IVT - d1 00 20 41, entry = 0x007E1000, boot_data = 0x007E0FE0, self = 0x007E0FC0 0x060000: U-Boot proper FIT (d00dfeed), matches CONFIG_SYS_SPI_U_BOOT_OFFS=0x60000 Problem: With boot switches set to QSPI/FlexSPI boot and the USB cable physically disconnected, the board does not boot. Nothing is printed on the serial console (SPL banner never appears), and the ROM falls back to serial download mode: uuu -lsusb 2:1 MX8MQ SDP: 0x1FC9 0x012B NXP FLASH BT_FUSE_SEL is not blown; boot configuration is done via GPIO boot pins. What I have already tried: - Both header formats: scripts/qspi_header (c0ffee01 tag) and scripts/fspi_header (FCFB tag). Fixed soc.mak so that flash_evk_flexspi uses fspi_header with offset 0. - Varying FCFB parameters: sflashA1Size, serialClkFreq (50MHz -> 20MHz), dataSetupTime/dataHoldTime, sflashPadType - "uuu -b qspi" (the official built-in script) - "qspihdr update safe" and "qspihdr init safe" - Erasing the flash completely vs. writing the full image: boot behaviour is essentially identical (SDP appears after ~1.6s vs ~1.8s), which suggests the ROM may not be reading the flash at all. Questions: 1. Does the i.MX8MQ Boot ROM support booting from serial NOR flash over FlexSPI at all? The Reference Manual section I have lists NAND flash and SD/MMC as boot devices, but I could not find FlexSPI/QSPI NOR listed. i.MX8MM/8MN documentation seems to describe it, but I am unsure about 8MQ. 2. If it is supported, what is the exact expected flash layout? Should the IVT be at offset 0x400 or 0x1000 when an FCFB is present at 0x0? 3. What is the correct BOOT_MODE / BOOT_CFG combination to select FlexSPI NOR boot on i.MX8MQ? 4. Are there any known errata for REV A0 silicon regarding FlexSPI boot? Thank you.
記事全体を表示
i.MX8MQ: Boot ROMはFlexSPI/QSPI NOR FLASHからの起動をサポートしていますか? こんにちは、 ハードウェア: - i.MX8MQ(REV A0)、EVKデザインに基づくカスタムボード - QSPI NOR:マイクロンMT25QL256A(32MB、3.3V、クアッドコネクテッド) - BSP: Yocto Scarthgap、NXP BSP、U-BOOT 2024.04(u-BOOT-IMX) 目標:FlexSPI NORフラッシュからブートローダー(SPL + ATF + U-Boot)を起動する。 カーネルとルートファイルシステムはeMMC上に残ります。 効果的な点: - U-Boot(uuu SDP/SDPV経由でRAMにロード)は問題なく動作します - 「SFプローブ」がフラッシュを正しく検出します:MT25QL256A、32 MiB - U-Bootはフラッシュの読み書きが安定してできる(検証 「SF Protect Unlock」後の読み返しテスト) - 画像はIMXBOOT_TARGETS = 「flash_evk_flexspi」で構築されます フラッシュメモリのレイアウト(チップからの読み出しで検証済み): 0x000000: FCFB ヘッダー - 「qspihdr check」レポート 「Q(F)SPIにブート構成ヘッダーが見つかりました」 タグ = 42464346、バージョン = 56010000 0x001000: IVT - d1 00 20 41、エントリ = 0x007E1000、 boot_data = 0x007E0FE0、self = 0x007E0FC0 0x060000: U-Boot の適切な FIT (d00dfeed) が一致します CONFIG_SYS_SPI_U_BOOT_OFFS=0x60000 問題点: ブートスイッチをQSPI/FlexSPIに設定し、USBケーブルで起動した場合 物理的に切断されたため、ボードは起動しません。何もない シリアルコンソールに印刷され(SPLバナーは表示されません)、 ROMはシリアルダウンロードモードに切り替わります。 uuu -lsusb 2:1 MX8MQ SDP: 0x1FC9 0x012B NXP FLASH BT_FUSE_SELは焼損していません。ブート設定はGPIO経由で行われます。 ブートピン。 私が既に試したこと: - 両方のヘッダー形式: scripts/qspi_header (c0ffee01 タグ) および scripts/fspi_header (FCFBタグ)。soc.mak をSO修正した flash_evk_flexspiオフセット0のfspi_headerを使用します。 - 変動するFCFBパラメータ:sflashA1Size、serialClkFreq(50MHz -> 20MHz)、 dataSetupTime/dataHoldTime, sflashPadType - 「Uuu -B QSPI」(公式組み込みスクリプト) - 「Qspihdr Update Safe」および「Qspihdr init safe」 - フラッシュを完全に消去するのと、完全な画像を書き込むこと: 起動動作は基本的に同一です(SDPはその後に現れます) ~1.6秒対~1.8秒)を比較し、ROMが読み取っていない可能性を示唆しています フラッシュ自体が。 質問: 1.i.MX8MQブートROMはシリアルNORからの起動をサポートしていますか? FlexSPIでフラッシュを使うべきでしょうか?リファレンス・マニュアルのセクションは持っています NANDフラッシュとSD/MMCをブートデバイスとしてリストアップしていますが、できませんでした FlexSPI/QSPI NORのリストは見つかりません。i.MX8MM/8MNのドキュメントのようです 説明は難しいですが、8MQについてはよくわかりません。 2. もし対応しているなら、フラッシュの正確な予想レイアウトはどうなりますか? FCFB の場合、IVT はオフセット 0x400 または 0x1000 にあるべきでしょうか 0x0に存在しますか? 3. 選択すべき正しいBOOT_MODE / BOOT_CFGの組み合わせは何ですか? i.MX8MQでFlexSPI NORブートは可能ですか? 4. REV A0シリコンに関して既知の正誤表はありますか? FlexSPIブート? よろしくお願いします。 Re: i.MX8MQ: Does the Boot ROM support booting from FlexSPI/QSPI NOR flash? こんにちは、私も似たような作業に取り組んでいます。 同じ文書のいくつかのセクションでは、SPIを使用したブートオプションについて言及されています。 もう少し詳しく説明していただけますか? onurgoksu_0-1785737312799.png onurgoksu_1-1785737654143.png Re: i.MX8MQ: Does the Boot ROM support booting from FlexSPI/QSPI NOR flash? こんにちは、 主にRMの情報をご参照ください。i.MX8MQはQSPIブートをサポートしていません。 Zhiming_Liu_0-1785725904605.png よろしくお願いします、 志明 Re: i.MX8MQ: Does the Boot ROM support booting from FlexSPI/QSPI NOR flash? LinuxカーネルとrootファイルシステムをeMMCに残したまま、QSPI NOR Flashからi.MX8MQを起動する方法は絶対にないのでしょうか?私たちのハードウェアデザインはすでにこのアーキテクチャを中心に構築されているため、非常に重要です。 Re: i.MX8MQ: Does the Boot ROM support booting from FlexSPI/QSPI NOR flash? こんにちは@ayse-yilmaz @onur-goksu 第 6 章のドキュメントに関する問題 SNVS、リセット、ヒューズ、ブート 2018年にすでに報告されており、NXPは公式ウェブサイトで関連ドキュメントを訂正しました。 サポートされているブートデバイスについては、 6.1 システムブートを参照してください。 1.6 プライマリブートオプションについてですが、ドキュメントの残骸のように見えます。 よろしくお願いします、 志明 Re: i.MX8MQ: Does the Boot ROM support booting from FlexSPI/QSPI NOR flash? こんにちは、@Zhiming_Liu、@ayseイルマズさん  この問題に関連する以下のトピックを見つけました:https://community.nxp.com/t5/i-MX-Processors/Does-i-MX8M-support-boot-from-QSPI/m-p/904429#M136467 しかし、テクニカルサポートは「開発上の目的で、起動デバイスを判定するeFUSEはGPIOピン入力で上書きされる可能性がある」と述べましたが、ブートROMはそもそもサポートしていません。ちょっと混乱しています。ハードウェアはサポートしているのに、起動ROMはなぜ対応していないのでしょうか? ハードウェアやドキュメントがあっても、ROMのせいでQuadSPIから起動するのは不可能だと思います。私の理解は合っていますか?詳しくご説明いただけますでしょうか。 よろしくお願いします オヌール よろしくお願いします。 Re: i.MX8MQ: Does the Boot ROM support booting from FlexSPI/QSPI NOR flash? NXP技術サポートチームへ、 i.MX8MQのQSPIブートサポートのドキュメントについて、深刻な懸念を提起したいと思います。 エンジニアはハードウェア設計の意思決定において、リファレンスマニュアルを主要かつ権威ある情報源として頼ります。リファレンスマニュアルにブートソースが記載またはサポートされていると示唆されている場合、開発チームがその情報をもとにボードを設計するのは全く合理的です。 これは些細な誤植ではない。ブートソースの選択は、回路設計、PCBレイアウト、部品選択、製造、ファームウェアアーキテクチャ、復旧戦略、製品検証に直接影響します。QSPIブートの性能に関する誤った記述は、重大な技術的損失、追加の試作改良、遅延スケジュール、そして多額の財政的コストをもたらす可能性があります。 特に懸念すべきは、2017年から2018年頃からNXPコミュニティでも同様の質問やフィードバックが提起されている一方で、ドキュメントは長年にわたり不明瞭または誤りのままだったことです。もしNXPがi.MX8MQブートROMがQSPIからの直接ブートをサポートしていないことを知っていたなら、この制限はリファレンスマニュアル、デバイスエラッタ、アプリケーションノート、製品ドキュメントに明確に記載されているはずです。 このような重要な曖昧さを何年も放置するのは、プロフェッショナルおよび商業用ハードウェアデザインで使用される部品として容認できません。お客様は公式リファレンス・マニュアルに記載された情報を信頼できる必要があります。 つきましては、以下の点について明確かつ正式な回答をお願いいたします。 i.MX8MQブートROMは、電源オンリセット後にQSPI NORからの直接起動をサポートしていますか? もしそうでないなら、なぜQSPIがリファレンスマニュアルでサポートされているブートオプションとして提示されたり、暗示されたのでしょうか? NXPはこれを正式にドキュメントの誤りと分類していますか? この情報はどの文書改訂版で修正されますか? NXPは既存のドキュメントに基づいてハードウェアを設計した可能性のある顧客に警告する訂正表や製品通知を公表するのでしょうか? SDカードやeMMCを必要とせずに、ブートROMがQSPIから直接初期ブートイメージをロードできるようにする、公式にサポートされている回避策はありますか? 私たちは、この問題は非公式なフォーラムでの対応以上のものが必要だと強く信じています。他のエンジニアリングチームが同じ時間やファイナンシャル損失を被るのを防ぐためには、正式なドキュメント訂正と明示的な技術通知が必要です。 このマターはi.MX8MQ製品エンジニアリングおよびドキュメントチームにエスカレーションし、権威ある書面による説明をお願いいたします。
記事全体を表示
MIMXRT1060-EVKB - Debugger no longer reaches ResetISR/main, GDB disconnects after flash programming Hi NXP Team I'm facing a strange issue with my MIMXRT1060-EVKB that started suddenly. The board was working fine previously, but now I cannot debug any application, including the SDK examples. Environment Board: MIMXRT1060-EVKB IDE: MCUXpresso IDE 24.12.x Debug Probe: On-board LinkServer Connection: USB Problem When I start a debug session: The project builds successfully. Flash programming completes successfully. After programming, the debugger resets the target but never reaches ResetISR  or main(). The GDB session immediately terminates. Console output: Closing flash driver MIMXRT1060_SFDP_QSPI.cfx Flash Write Done Flash Program Summary: 850584 bytes in 0.06 seconds Starting execution using system reset and halt target Stopped (Was Reset) [Reset from Unknown] GDB stub (crt_emu_cm_redlink) terminating - GDB protocol problem: Pipe has been closed by GDB. What I have already tried Tested with a new SDK example (UART interrupt example) — same behavior. Placed a breakpoint at ResetISR — it is never hit. main() is never reached. Performed Mass Erase — no change. Rebooted the PC. Tried on another laptop with a fresh MCUXpresso installation — same issue. Verified the DIP switches are configured for QSPI Flash boot mode, not Serial Downloader (ISP) mode. Any suggestions would be greatly helpful. Thanks Prathyush. i.MXRT 106x Re: MIMXRT1060-EVKB - Debugger no longer reaches ResetISR/main, GDB disconnects after flash programm Hi @ShellyZhang , Thank you for your suggestion. I followed the exact sequence you recommended. I disconnected the power and debug cables, toggled the last two pins of SW4 to put the board into Serial Download Mode, reconnected the board, and performed a Mass Erase using the LinkServer GUI Flash Programmer. The mass erase completed successfully. After that, I restored the board to QSPI Boot Mode, reset the board, and started a new debug session. Unfortunately, the issue still persists. The application is programmed successfully, but the debugger does not reach ResetISR or main(). I also verified that the same behavior occurs with an unmodified SDK example project, so it does not appear to be specific to my application.   Thanks, Prathyush Re: MIMXRT1060-EVKB - Debugger no longer reaches ResetISR/main, GDB disconnects after flash programm Dear @Prathyush_27 , Please try this sequency: 1. Disconnect the power cable and the debug cable from the board, then set the board boot mode to Serial Download Mode. 2. Reconnect the power cable and the debug cable, then use MCUXpresso IDE → GUI Flash Tool / LinkServer GUI Flash Programmer → Erase Flash Memory → Mass Erase. 3. Restore the board to QSPI Boot Mode, reset the board, and then start a new debug session. Best Regards, Shelly  Re: MIMXRT1060-EVKB - Debugger no longer reaches ResetISR/main, GDB disconnects after flash programm Hi Prathyush_27, Thank you for your reply. Your feedback will help us better understand the issue and may also benefit others who encounter similar problems. Best Regards, Shelly Re: MIMXRT1060-EVKB - Debugger no longer reaches ResetISR/main, GDB disconnects after flash programm Hi @ShellyZhang , Thank you for your assistance. I was able to identify the root cause of the issue. It turned out to be the SW2 DIP switch configuration. The last two switches on SW2 had been accidentally toggled, which prevented the debugger from starting the application correctly. After restoring the last two SW2 switches to their original positions, everything worked as expected. The debugger now successfully reaches ResetISR and main(), and debugging works normally. This was a configuration issue on my board rather than a problem with the SDK or the debugger. Thank you again for your support. I hope this information is helpful to anyone who encounters a similar issue in the future. Re: MIMXRT1060-EVKB - Debugger no longer reaches ResetISR/main, GDB disconnects after flash programm Dear @Prathyush_27 , Could you please try the following two approaches? 1. Verify Flash Programming and Boot Please try using MCUXpresso Secure Provisioning Tool 26.06 to program a simple LED blink application while the board is in Serial Download Mode, and then switch the boot mode back to QSPI Boot Mode. If the LED application runs successfully after a reset, it indicates that the flash device and boot process are functioning correctly. In that case, I suspect that LinkServer GUI Flash Programmer may not have completed the flash erase operation successfully. If the LED application can boot and run after a reset, please try launching a normal debug session again to see whether the issue still occurs. 2. Run the Application from RAM Please modify the project configuration to run the application from RAM: 2.1 Enable Link application to RAM: ShellyZhang_0-1785828173999.png 2.2 Under Defined Symbols, configure: ShellyZhang_1-1785828247988.png XIP_EXTERNAL_FLASH=0 XIP_BOOT_HEADER_ENABLE=0 2.3 Rebuild the project. 2.4 Start a normal debug session and run the application. Please let us know the results of both tests, especially whether the LED application can boot successfully from QSPI flash and whether the RAM-based application can run under debug. Best regards, Shelly
記事全体を表示
S32K344 AB-Swap auto-boot failure after HSE_ActivatePassiveBlock; firmware boots only via J-Link Sta Platform: S32K344 with AB-Swap scheme. Separate firmware images reside in Active and Passive blocks. Observation: After executing HSE_ActivatePassiveBlock() to swap active/passive partitions, a full power cycle does not trigger automatic firmware startup. Firmware executes successfully only when J-Link is attached and Start Application is triggered from debugger. Could anyone explain the root cause and provide recommended fixes? Re: S32K344 AB-Swap auto-boot failure after HSE_ActivatePassiveBlock; firmware boots only via J-Link Hi @HQZ  Are you sure there is a valid image in the passive partition? What do you observe if you attach a debugger to the running target without resetting it after power-up? Did the device enter JTAG recovery mode? Or you can simply reset the device by your debugger and then check if it reached the entry point of your application.  If the device is stuck in an endless loop at address 0x2040012C, it indicates that it has entered JTAG recovery mode. This could also point to an issue with the IVT configuration or IVT integrity. Also, is the image in the passive partition linked to run from the active partition address space, i.e. starting at 0x00400000? Finally, are you using Secure Boot? Regards, Lukas Re: S32K344 AB-Swap auto-boot failure after HSE_ActivatePassiveBlock; firmware boots only via J-Link Hi @HQZ  “while Partition B firmware is linked starting at 0x600000” – this is the problem. Both images must be linked for active partition addresses – 0x400000. The applications are always running from active partition, not from passive partition. Solution – use the same linker file for both projects. It works with your debugger because debuggers set the program counter “manually” to entry point address which is found in elf file. Regards, Lukas Re: S32K344 AB-Swap auto-boot failure after HSE_ActivatePassiveBlock; firmware boots only via J-Link Hello@lukaszadrapa  Platform: S32K344, AB-Swap architecture. Independent firmware images are stored in Active Block and Passive Block separately. HSE Secure Boot is disabled. Problem Description: After calling HSE_ActivatePassiveBlock() to complete the Active/Passive partition switch, the device cannot automatically boot the target firmware after power cycle and reset. However, if the J-Link debugger is connected to the chip and "Start Application" is clicked within the debugger software, the swapped firmware runs normally. Additional background: Firmware resides in both Partition A and Partition B. The only difference between the two images is the LED blinking frequency. Partition A firmware is linked starting at 0x400000, while Partition B firmware is linked starting at 0x600000. After invoking HSE_ActivatePassiveBlock() and reset, I dumped flash contents with J-Link. The contents of Partition A and Partition B have been physically swapped, confirming that HSE_ActivatePassiveBlock() takes effect. Questions: 1. What is the root cause of this behavior? Why does cold power-on boot behave differently from debugger-triggered "Start Application"? 2. What feasible solutions can resolve the auto-boot failure after AB partition swap? Thanks for your support. Re: S32K344 AB-Swap auto-boot failure after HSE_ActivatePassiveBlock; firmware boots only via J-Link Hello@lukaszadrapa  I have tried the AB‑partition swap according to previous suggestions, but the issue still persists. The HSE firmware version used is s32k344_hse_fw_1.5.0_2.40. Test setup for validating AB‑swap: Single linker script with application‑based self‑update. The application is responsible for programming the new firmware image into the passive partition. Linker script: Only one linker script is used, and the firmware start address is always set to 0x00400000. Workflow: 1. The application running in Partition A (logical address 0x00400000) receives new firmware over CAN. The only difference between Partition A and Partition B firmware is the LED‑blinking frequency. 2. The application programs the new firmware directly into the physical address of the passive partition (0x00600000). 3. After programming completes, the HSE_ActivatePassiveBlock() service is called. 4. The chip is then reset. Observation: The firmware fails to run after reset. However, when J‑Link is connected and "Start Application" is triggered from the debugger, the firmware from Partition B executes correctly. What other root causes can lead to unsuccessful partition swap, and what are the corresponding solutions? Regards Re: S32K344 AB-Swap auto-boot failure after HSE_ActivatePassiveBlock; firmware boots only via J-Link I’m sorry for delayed response. Here are some typical issues: When you run HSE_ActivatePassiveBlock() and when you reset the device, it takes about 1s until HSE is ready to accept new service requests. That’s because HSE takes a backup of HSE firmware to passive partition. HSE_STATUS_INIT_OK flag in FSR register is set once the operation is completed. So, it’s not possible to use HSE until it’s finished. Sometimes this is the reason of troubles. This has been optimized in firmware versions 0.2.55.0 and newer and the firmware is copied to passive partition only if it is updated. If it is still the same, HSE will skip this operation and the swap is much faster. Then I recommend to read description in HSE Firmware reference manual rev. 2.7 in section: “14.6.5  Synchronizing flash read/write access between HSE and application core”: https://www.nxp.com/webapp/sd/collateral/1765990353647716033651?version=2.7 There are tables 149, 150 and 151 where you can find details about typical scenarios. In your case: when HSE takes backup of itself to passive partition, it is not possible to access flash block 3 because HSE performs flash operations on that block. Also you can’t perform flash operations on block 1 because HSE firmware is running from this block. Another thing is that if HSE is running, it is not possible to change HSE_CLK. This can be a problem after the swap when HSE is running about 1s after the reset. When changing HSE_CLOCK, HSE must be in idle state. It is not possible to change the clock while HSE is running. This can lead to unpredictable behavior. It is explicitly mentioned in the S32K3 reference manual: “Before configuring HSE_CLK, you must wait for the SBAF to enter WFI by reading core status register of HSE CPU (PRTN0_CORE2_STAT).” This could be a problem when using older versions of RTD drivers because the drivers did not check mentioned status register. This check was implemented to RTD version 5.0.0 and higher. If you have older version, it’s up to user to poll the WFI before clock initialization. So, this may be also the reason why it is failing. 回复: S32K344 AB-Swap auto-boot failure after HSE_ActivatePassiveBlock; firmware boots only via J-Link Hello,bro I also encountered the same problem. Could you please tell me how you solved it?
記事全体を表示
Kinetis MCX Wxx(MCX W71/72 および MCX W23)IIoT用パワープロファイルツール このページは、Kinetis MCX Wx(MCX W71/72およびMCX W23)のPower Profile Tools for IIoTに特化しています。 これにより、あなたのアプリケーション(オートモーティブ、IIoT、トラッカー/タグ、連続血糖モニタリング[CGM])の消費電力を推定し、ソリューションのバッテリー寿命を評価するのに役立ちます。 このページには、以下の用途に特化した4つの電源プロファイルツールが含まれています。 Bluetooth LEは単体でMCX W71/MCX W72製品用です。 MCX W23製品のBluetooth LEをスタンドアロンで提供します。 802.15.4 マター ICD SIT & LIT および ZED(単独で MCX W71 および W72 製品用)。 Aliroドアロックアプリケーション(BLE MCX W72/UWB/NFC/モーター) 1. MCX W71 / MCX W72 Bluetooth LEの電力プロファイリング: AN14389 MCX W71 Bluetooth LE 消費電力分析 AN14739 MCX W72 Bluetooth LE 電力プロファイル分析.pdf 2. MCX W23 Bluetooth LEの電力プロファイリング AN14659:MCX W23 Bluetooth Low Energy Power Consumption Analysis |NXP Semiconductors 3. 802.15.4 マター ICD SIT & LIT および ZED MCX W71/W72 パワープロファイリング AN14841 MCX W72 802.15.4 マターおよびZigBee電源プロファイルanalysis.pdf 4. ドアロックの適用(BLE/UWB/NFC/モーター)
記事全体を表示
MIMXRT1060-EVKB - 调试器无法到达 ResetISR/main 程序,GDB 在闪存编程后断开连接 您好,NXP团队 我的MIMXRT1060-EVKB突然出现了一个奇怪的问题。之前板工作正常,但现在我无法调试任何应用程序,包括 SDK 示例。 环境 电路板:MIMXRT1060-EVKB IDE:MCUXpresso IDE 24.12.x 调试探针:板载链路服务器 连接方式:USB 问题 当我启动调试会话时: 项目构建成功。 Flash编程成功完成。 编程完成后,调试器重置目标,但永远不会到达 ResetISR 或 main()。 GDB 会话立即终止。 控制台输出: 关闭闪存驱动程序 MIMXRT1060_SFDP_QSPI.cfx 闪存写入完成 Flash程序摘要:耗时0.06秒,写入850584字节 使用系统RESET和停止目标开始执行 已停止(已RESET)[RESET原因未知] GDB 短截线 (crt_emu_cm_redlink) 终止 - GDB 协议问题:管道已被 GDB 关闭。 我已经尝试过了 使用新的 SDK 示例(UART 中断示例)进行了测试——行为相同。 在 ResetISR 处设置了断点,但从未触发。 main() 函数永远不会被执行。 执行批量擦除操作——无变化。 重启了电脑。 我在另一台全新安装了 MCUXpresso 的笔记本电脑上进行了尝试——问题依旧。 已确认 DIP 开关配置为QSPI Flash 启动模式,而不是串行下载器 (ISP) 模式。 任何建议都将不胜感激。 谢谢 普拉蒂尤什。 i.MX RT106x Re: MIMXRT1060-EVKB - Debugger no longer reaches ResetISR/main, GDB disconnects after flash programm 你好@ShellyZhang , 谢谢你的建议。 我完全按照您推荐的步骤操作了。我断开了电源线和调试线,切换了SW4的最后两个引脚,使板进入串行下载模式,重新连接了板,并使用 LinkServer GUI Flash Programmer 执行了批量擦除。批量擦除操作已成功完成。 之后,我将板恢复到QSPI 启动模式,RESET了板,并开始了一个新的调试会话。 遗憾的是,这个问题依然存在。应用程序编程成功,但调试器无法到达 ResetISR 或 main() 函数。 我还验证了未经修改的 SDK 示例项目也会出现同样的情况,因此这似乎并非我的应用程序特有的问题。   谢谢! 普拉蒂尤什 Re: MIMXRT1060-EVKB - Debugger no longer reaches ResetISR/main, GDB disconnects after flash programm 亲爱的@Prathyush_27 , 请尝试以下顺序: 1. 断开板上的电源线和调试线,然后将板的启动模式设置为串行下载模式。 2. 重新连接电源线和调试线,然后使用MCUXpresso IDE → GUI Flash Tool / LinkServer GUI Flash Programmer → Erase Flash Memory → Mass Erase 。 3. 将板恢复到QSPI 启动模式,重置板,然后开始新的调试会话。 此致, 雪莉 Re: MIMXRT1060-EVKB - Debugger no longer reaches ResetISR/main, GDB disconnects after flash programm 你好@ShellyZhang , 谢谢你的帮助。 我找到了问题的根本原因。原来是 SW2 DIP 开关配置的问题。SW2 上的最后两个开关被意外拨动,导致调试器无法正确启动应用程序。 将最后两个 SW2 开关恢复到原来的位置后,一切都按预期运行了。调试器现在可以成功到达 ResetISR 和 main() 函数,调试功能正常。 这是我开发板上的配置问题,而不是SDK或调试器的问题。 再次感谢您的支持。我希望这些信息对将来遇到类似问题的人有所帮助。 Re: MIMXRT1060-EVKB - Debugger no longer reaches ResetISR/main, GDB disconnects after flash programm 亲爱的@Prathyush_27 , 请尝试以下两种方法? 1. 验证闪存编程和启动 请尝试使用MCUXpresso Secure Provisioning Tool 26.06在电路板处于串行下载模式时配置一个简单的 LED 闪烁应用程序,然后将启动模式切换回 QSPI 启动模式。 如果 RESET 后 LED 应用程序运行成功,则表明闪存设备和启动过程运行正常。在这种情况下,我怀疑 LinkServer GUI Flash Programmer 可能没有成功完成闪存擦除操作。 如果 LED 应用程序在 RESET 后可以启动并运行,请尝试再次启动正常的调试会话,看看问题是否仍然存在。 2. 从内存运行应用程序 请修改项目配置以从内存运行应用程序: 2.1 启用 Link 应用程序到 RAM: ShellyZhang_0-1785828173999.png 2.2 在“已定义符号”下,配置: ShellyZhang_1-1785828247988.png XIP_EXTERNAL_FLASH=0 XIP_BOOT_HEADER_ENABLE=0 2.3 重建项目。 2.4 启动正常的调试会话并运行应用程序。 请告知我们两项测试的结果,特别是 LED 应用程序能否从 QSPI 闪存成功启动,以及基于 RAM 的应用程序能否在调试模式下运行。 顺祝商祺! 雪莉 Re: MIMXRT1060-EVKB - Debugger no longer reaches ResetISR/main, GDB disconnects after flash programm 你好 Prathyush_27, 感谢你的回复。您的反馈将有助于我们更好地了解问题,也可能对遇到类似问题的人有所帮助。 此致, 雪莉
記事全体を表示
i.MX8MQ: Boot ROMはFlexSPI/QSPI NOR FLASHからの起動をサポートしていますか? ハードウェア: - i.MX8MQ(REV A0)、EVKデザインに基づくカスタムボード - QSPI NOR:マイクロンMT25QL256A(32MB、3.3V、クアッドコネクテッド) - BSP: Yocto Scarthgap、NXP BSP、U-BOOT 2024.04(u-BOOT-IMX) 目標:FlexSPI NORフラッシュからブートローダー(SPL + ATF + U-Boot)を起動する。 カーネルとルートファイルシステムはeMMC上に残ります。 効果的な点: - U-Boot(uuu SDP/SDPV経由でRAMにロード)は問題なく動作します - 「SFプローブ」がフラッシュを正しく検出します:MT25QL256A、32 MiB - U-Bootはフラッシュの読み書きが安定してできる(検証 「SF Protect Unlock」後の読み返しテスト) - 画像はIMXBOOT_TARGETS = 「flash_evk_flexspi」で構築されます フラッシュメモリのレイアウト(チップからの読み出しで検証済み): 0x000000: FCFB ヘッダー - 「qspihdr check」レポート 「Q(F)SPIにブート構成ヘッダーが見つかりました」 タグ = 42464346、バージョン = 56010000 0x001000: IVT - d1 00 20 41、エントリ = 0x007E1000、 boot_data = 0x007E0FE0、self = 0x007E0FC0 0x060000: U-Boot の適切な FIT (d00dfeed) が一致します CONFIG_SYS_SPI_U_BOOT_OFFS=0x60000 問題点: ブートスイッチをQSPI/FlexSPIに設定し、USBケーブルで起動した場合 物理的に切断されたため、ボードは起動しません。何もない シリアルコンソールに印刷され(SPLバナーは表示されません)、 ROMはシリアルダウンロードモードに切り替わります。 uuu -lsusb 2:1 MX8MQ SDP: 0x1FC9 0x012B NXP FLASH BT_FUSE_SELは焼損していません。ブート設定はGPIO経由で行われます。 ブートピン。 私が既に試したこと: - 両方のヘッダー形式: scripts/qspi_header (c0ffee01 タグ) および scripts/fspi_header (FCFBタグ)。soc.mak をSO修正した flash_evk_flexspiオフセット0のfspi_headerを使用します。 - 変動するFCFBパラメータ:sflashA1Size、serialClkFreq(50MHz -> 20MHz)、 dataSetupTime/dataHoldTime, sflashPadType - 「Uuu -B QSPI」(公式組み込みスクリプト) - 「Qspihdr Update Safe」および「Qspihdr init safe」 - フラッシュを完全に消去するのと、完全な画像を書き込むこと: 起動動作は基本的に同一です(SDPはその後に現れます) ~1.6秒対~1.8秒)を比較し、ROMが読み取っていない可能性を示唆しています フラッシュ自体が。 質問: 1.i.MX8MQブートROMはシリアルNORからの起動をサポートしていますか? FlexSPIでフラッシュを使うべきでしょうか?リファレンス・マニュアルのセクションは持っています NANDフラッシュとSD/MMCをブートデバイスとしてリストアップしていますが、できませんでした FlexSPI/QSPI NORのリストは見つかりません。i.MX8MM/8MNのドキュメントのようです 説明は難しいですが、8MQについてはよくわかりません。 2. もし対応しているなら、フラッシュの正確な予想レイアウトはどうなりますか? FCFB の場合、IVT はオフセット 0x400 または 0x1000 にあるべきでしょうか 0x0に存在しますか? 3. 選択すべき正しいBOOT_MODE / BOOT_CFGの組み合わせは何ですか? i.MX8MQでFlexSPI NORブートは可能ですか? 4. REV A0シリコンに関して既知の正誤表はありますか? FlexSPIブート? よろしくお願いします。
記事全体を表示
i.MX8MQ: Does the Boot ROM support booting from FlexSPI/QSPI NOR flash? Hello, Hardware: - i.MX8MQ (REV A0), custom board based on EVK design - QSPI NOR: Micron MT25QL256A (32MB, 3.3V, Quad connected) - BSP: Yocto Scarthgap, NXP BSP, U-Boot 2024.04 (u-boot-imx) Goal: Boot the bootloader (SPL + ATF + U-Boot) from FlexSPI NOR flash. Kernel and rootfs remain on eMMC. What works: - U-Boot (loaded to RAM via uuu SDP/SDPV) runs fine - "sf probe" detects the flash correctly: mt25ql256a, 32 MiB - U-Boot can read and write the flash reliably (verified with read-back tests after "sf protect unlock") - Image is built with IMXBOOT_TARGETS = "flash_evk_flexspi" Flash layout (verified by reading back from the chip): 0x000000: FCFB header - "qspihdr check" reports "Found boot config header in Q(F)SPI" tag = 42464346, version = 56010000 0x001000: IVT - d1 00 20 41, entry = 0x007E1000, boot_data = 0x007E0FE0, self = 0x007E0FC0 0x060000: U-Boot proper FIT (d00dfeed), matches CONFIG_SYS_SPI_U_BOOT_OFFS=0x60000 Problem: With boot switches set to QSPI/FlexSPI boot and the USB cable physically disconnected, the board does not boot. Nothing is printed on the serial console (SPL banner never appears), and the ROM falls back to serial download mode: uuu -lsusb 2:1 MX8MQ SDP: 0x1FC9 0x012B NXP FLASH BT_FUSE_SEL is not blown; boot configuration is done via GPIO boot pins. What I have already tried: - Both header formats: scripts/qspi_header (c0ffee01 tag) and scripts/fspi_header (FCFB tag). Fixed soc.mak so that flash_evk_flexspi uses fspi_header with offset 0. - Varying FCFB parameters: sflashA1Size, serialClkFreq (50MHz -> 20MHz), dataSetupTime/dataHoldTime, sflashPadType - "uuu -b qspi" (the official built-in script) - "qspihdr update safe" and "qspihdr init safe" - Erasing the flash completely vs. writing the full image: boot behaviour is essentially identical (SDP appears after ~1.6s vs ~1.8s), which suggests the ROM may not be reading the flash at all. Questions: 1. Does the i.MX8MQ Boot ROM support booting from serial NOR flash over FlexSPI at all? The Reference Manual section I have lists NAND flash and SD/MMC as boot devices, but I could not find FlexSPI/QSPI NOR listed. i.MX8MM/8MN documentation seems to describe it, but I am unsure about 8MQ. 2. If it is supported, what is the exact expected flash layout? Should the IVT be at offset 0x400 or 0x1000 when an FCFB is present at 0x0? 3. What is the correct BOOT_MODE / BOOT_CFG combination to select FlexSPI NOR boot on i.MX8MQ? 4. Are there any known errata for REV A0 silicon regarding FlexSPI boot? Thank you. Re: i.MX8MQ: Does the Boot ROM support booting from FlexSPI/QSPI NOR flash? Hello, I'm working on a similar task.  Some sections on the same document mentions some boot options using SPI. Would you like to elaborate further please? onurgoksu_0-1785737312799.png onurgoksu_1-1785737654143.png Re: i.MX8MQ: Does the Boot ROM support booting from FlexSPI/QSPI NOR flash? Is there absolutely no way to boot the i.MX8MQ from QSPI NOR Flash while keeping the Linux kernel and root filesystem on eMMC? Our hardware design has already been built around this architecture, so it is very important for us. Re: i.MX8MQ: Does the Boot ROM support booting from FlexSPI/QSPI NOR flash? Hi, Please refer primarily to the information in the RM; the i.MX8MQ does not support QSPI boot. Zhiming_Liu_0-1785725904605.png Best Regards, Zhiming Re: i.MX8MQ: Does the Boot ROM support booting from FlexSPI/QSPI NOR flash? Dear NXP Technical Support Team, We would like to raise a serious concern regarding the documentation of QSPI boot support for the i.MX8MQ. Engineers rely on the Reference Manual as the primary and authoritative source when making hardware design decisions. When a boot source is listed or implied as supported in the Reference Manual, it is entirely reasonable for a development team to design the board around that information. This is not a minor typographical mistake. Boot-source selection directly affects schematic design, PCB layout, component selection, manufacturing, firmware architecture, recovery strategy, and product validation. An incorrect statement regarding QSPI boot capability can therefore result in significant engineering time loss, additional prototype revisions, delayed schedules, and substantial financial cost. It is especially concerning that similar questions and feedback appear to have been raised in the NXP community since approximately 2017–2018, while the documentation has apparently remained unclear or incorrect for many years. If NXP has known that the i.MX8MQ Boot ROM does not support direct boot from QSPI, this limitation should have been clearly stated in the Reference Manual, device errata, application notes, and product documentation. Leaving such a critical ambiguity unresolved for years is unacceptable for a component used in professional and commercial hardware designs. Customers must be able to trust the information provided in the official Reference Manual. We therefore request a clear and formal response to the following points: Does the i.MX8MQ Boot ROM support direct boot from QSPI NOR after power-on reset? If it does not, why was QSPI presented or implied as a supported boot option in the Reference Manual? Has NXP officially classified this as a documentation error? In which document revision will this information be corrected? Will NXP publish an erratum or product notice to warn customers who may have designed hardware based on the existing documentation? Is there any officially supported workaround that allows the Boot ROM to load the initial boot image directly from QSPI without requiring SD or eMMC? We strongly believe this issue requires more than an informal forum response. A formal documentation correction and an explicit technical notice are necessary to prevent other engineering teams from experiencing the same time and financial losses. Please escalate this matter to the i.MX8MQ product engineering and documentation teams and provide an authoritative written clarification. Re: i.MX8MQ: Does the Boot ROM support booting from FlexSPI/QSPI NOR flash? Hello @Zhiming_Liu, @ayse-yilmaz  I've found the following topic related to this very problem: https://community.nxp.com/t5/i-MX-Processors/Does-i-MX8M-support-boot-from-QSPI/m-p/904429#M136467 But as a solution, tech support mentioned "for development purposes, the eFUSEs used to determine the boot device may be overridden using the GPIO pin inputs" but boot ROM does not support it anyway. I'm a bit confused here. Why even though the HW supports it, boot ROM doesn't? I guess it's impossible to boot from QuadSPI despite of the HW and the documents, due to ROM. Is my understanding right? Please kindly elaborate.  Thx, Onur Regards Re: i.MX8MQ: Does the Boot ROM support booting from FlexSPI/QSPI NOR flash? Hi @ayse-yilmaz @onur-goksu  Issues with the documentation in Chapter 6  SNVS, Reset, Fuse, and Boot were already reported in 2018, and NXP corrected the relevant documentation on its official website.  For the supported boot device, should refer the 6.1 System boot. About 1.6 Primary Boot Options, it looks like a document residue. Best Regards, Zhiming
記事全体を表示
xaf_record Example Fails with comp_setup failure in SDK_26_06_00_MIMXRT700-EVK Board: MIMXRT700-EVK SDK Version: SDK_26_06_00_MIMXRT700-EVK Example: SDK_26_06_00_MIMXRT700-EVK/mcuxsdk/middleware/cadence/multicore-xaf/examples/xaf_record/cm/ Build Configuration: Default example without modifications After starting DMIC recording using the shell command: record_dmic en The DSP reports a component setup failure, preventing the recording pipeline from functioning correctly. console output ****************************** DSP audio framework demo start ****************************** [CM33 Main] Configure codec [DSP_Main] Cadence Xtensa Audio Framework [DSP_Main] Library Name: Audio Framework (Hostless) [DSP_Main] Library Version: 3.6 [DSP_Main] API Version: 3.4 [DSP_Main] start [DSP_Main] established RPMsg link [CM33 Main] DSP image copied to DSP TCM [CM33 Main][APP_DSP_IPC_Task] start [CM33 Main][APP_Shell_Task] start Copyright 2024 NXP >> record_dmic en [CM33 CMD] Setting VIT language to en [DSP_Main] Number of channels 1, sampling rate 16000, PCM width 32 [CM33 CMD] [APP_DSP_IPC_ Task] response from DSP, cmd: 13, error: 0 [DSP Record] Audio Device Ready [CM33 CMD] DSP DMIC Recording started [DSP Record] comp_setup failure: 4294967294 [CM33 CMD] To see VIT functionality say wakeword and command [CM33 CMD] [APP_DSP_IPC_ Task] response from DSP, cmd: 13, error: 4294967295 [CM33 CMD] DSP DMIC Recording started [CM33 CMD] To see VIT functionality say wakeword and command Expected Behavior After executing: record_dmic en The DMIC recording pipeline should initialise successfully, allowing audio capture and VIT wake-word detection without any component setup errors. Actual Behavior The DSP reports: [DSP Record] comp_setup failure: 4294967294 followed by an IPC response with: error: 4294967295 As a result, the recording pipeline does not function as expected. Request  Could you please help identify the following? What causes the comp_setup failure, 4294967294, in the default xaf_record example? Does this indicate a missing DSP component, codec configuration issue, or another initialisation problem? Is there any known issue or patch for the xaf_record example in SDK 26.06.00? Are any additional configuration steps required before using the record_dmic command? Any guidance on debugging this issue would be appreciated. Evaluation Board Re: xaf_record Example Fails with comp_setup failure in SDK_26_06_00_MIMXRT700-EVK Please find the above reply. Re: xaf_record Example Fails with comp_setup failure in SDK_26_06_00_MIMXRT700-EVK Hi @suhas1503 , Could you please provide some information about the IDE you're using? Is it MCUXpresso IDE or VS Code? I tried to reproduce the issue in MCUXpresso IDE, but it ran fine. Gavin_Jia_0-1785739563410.png I didn't find anything related to “[DSP VIT]” in your log information. I suspect this might be due to missing content in your local project rather than a software bug. Best regards, Gavin Re: xaf_record Example Fails with comp_setup failure in SDK_26_06_00_MIMXRT700-EVK I was able to reproduce the issue using the same package. I’ll conduct an internal investigation to see if there are any discrepancies. This may take some time. In the meantime, I recommend that you continue development based on the MCUXpresso IDE project to save the time. Once the issues with the SDK package based on the ARM GCC toolchain have been resolved, you can port your project over. Re: xaf_record Example Fails with comp_setup failure in SDK_26_06_00_MIMXRT700-EVK We have downloaded the sdk from the below link; also attaching the snap; we downloaded sdk version 26.06.00 Screenshot from 2026-08-03 12-23-01.png https://mcuxpresso.nxp.com/download/c7b3a37a7e9e773a92291031541e9b58 we are compiling and flashing through command line Build command:  west build -b mimxrt700evk middleware/cadence/multicore-xaf/examples/xaf_record/cm -d build/ -- -Dcore_id=cm33_core0 -Dtarget=flash_debug Flash command: LinkServer flash MIMXRT798S:MIMXRT700-EVK load dsp_xaf_record_cm33_core0.elf
記事全体を表示