こんにちは、NXPサポートの皆さん、
カスタムボード上のMCXN547VKLTと外部のMCU-Linkプローブを使用しています。
デバッグセッションを開始する際にSWD接続が失敗する:
Ee(42). Could not connect to core. Et:31: No connection to chip's debug port. Remote connection closed.
SWD-DPは正しく検出できます:
DPID = 0x6BA02477
しかし、CPU0 AHB-AP(AP0)へのアクセスは以下の場合に失敗します:
WIRE ACK FAULT
デバッグ用メールボックスのリクエストも失敗します。LinkServer のレポート:
DM-AP status: 60F93638 DM-AP: AHB_OR_ERR DM-AP: DBG_OR_ERR
確認した内容:
USB ISPはVID/PID 1FC9:014Fで正しく動作します。blhostを使えば、以下ができます:
ROMの報告によると、
Security State = UNSECURE
USB ISP経由でPFRも読み取りました。
何かアドバイスをいただけますか:
こんにちは、ルイスさん。
SPSDKデバッグメールボックスツールを使用して、SWDデバッグ接続を確立することができました。
私たちが用いた手順は以下のとおりです。
1. デバッグメールボックスを通じてMCUをリセットする:
NXPDEBUGMBOX -i MCU-link -s NBTF0IZ0B3DCX \
-o enable_recovery_reset=真 \
--オペレーションタイムアウト 5000 \
ツールリセット -f mcxn547
2. デバッグメールボックスからデバッグセッションを開始します。
NXPDEBUGMBOX -i MCU-link -s NBTF0IZ0B3DCX \
-o enable_recovery_reset=真 \
--オペレーションタイムアウト 5000 \
cmd -f mcxn547 start-debug-session
3. デバッグセッションが開かれた後、SWD経由でLinkServerを使ってCortex-M33コアに接続します。
認証キー、パスワード、デバッグ認証情報、一括消去コマンドは一切使用しませんでした。「start-debug-session」コマンドは、常時アクセス可能なAP2デバッグメールボックスを介して、一時的にAP0を有効にするようです。
デバッグセッションを開いた後、NXP LS_preconnect_MCXN5XX.scpスクリプトからGDETレジスタシーケンスも使用しました。このシーケンスは、デバッグ中にaGDETおよびdGDETのリセットルーティングを無効にし、SPCグリッチ検出を無効にします。
電源装置に関して:
- VDD_VBATはVDDに直接接続されており、どちらも3.3Vです。
- VDD_P4はVDDに直接接続されており、どちらも3.3Vです。
- VDD_ANAはフェライトビーズを介してVDDに接続されています。
- VDDは3.3Vです。
しかし、今度は別のデバッグ問題が発生しました。
SWDデバッグリセットを行わずにボードを通常通り電源投入した場合、ファームウェアは正しく動作します。しかし、上記のデバッグメールボックスリセット手順を使用してデバッグセッションに入ると、ファームウェアが正しく起動しません。
以下のSDK関数をシングルステップで実行するとデバッグ接続が失われます。
static inline void SPC_SetActiveModeDCDCRegulatorVoltageLevel(
SPC_タイプ *ベース、
spc_dcdc_voltage_level_t voltageLevel)
ヤージュ
base->ACTIVE_CFG =
(base->ACTIVE_CFG & (~SPC_ACTIVE_CFG_DCDC_VDD_LVL_MASK)) |
SPC_ACTIVE_CFG_DCDC_VDD_LVL(voltageLevel);
}
より具体的に言うと、アクティブモードのDCDC電圧レベルを変更するためにACTIVE_CFGが書き込まれると、接続が失われます。
したがって、以下の2つの場合で挙動が異なります。
1. 電源投入時の冷間状態:
ファームウェアは正常に起動し、正常に動作します。
2. デバッグ:メールボックスリセット、続いて開始・デバッグセッションおよびSWD接続:
ファームウェアはSPC DCDC構成に到達しますが、ACTIVE_CFGが書き込まれるとデバッガはターゲットを失い、アプリケーションは通常起動できません。
デバッグメールボックスのリセットが、完全な電源オンリセットと異なる状態にしてしまいますか?
デバッグメールボックスのデバッグセッションを開始した後、SPC ACTIVE_CFGを変更する前に、必要な手順はありますか?例えば:
- SPC_SC[BUSY]がクリアされるのを待っています。
- SPCまたはGDETステータスフラグをクリアする。
- グリッチ検出のロック解除または無効化。
- 特定のリセットタイプを使用する。
- デバッグセッション開始後のソフトリセットを回避する。
または、LS_preconnect_MCXN5XX.scp シーケンス全体を適用する?
デバッグ中にDCDC電圧レベルを書き込むと、GDETイベント、DCDC保護イベント、ブラウンアウトリセット、または別のシステムリセットがトリガーされる可能性はありますか?
ACTIVE_CFG書き込みの直前に取得すべきレジスタについてもご教示ください。SPC_SC、SPC_CNTRL、SPC_ACTIVE_CFG、SPC_GLITCH_DETECT_SC、CMC_SRS、CMC_SSRS、そしてデバッグメールボックスCSWなどのレジスタの値を提供できます。
よろしくお願いいたします。
これは難しい問題だ!接続問題のデバッグは特にカスタムボードの場合非常にフラストレーションが溜まります。その「WIRE ACK FAULT」は、間違いなく通信障害を示しています。異なるSWDクロック速度を試したり、デバッグセッション中にMCUの電源を確認したりしてみましたか?時には限界的な電力供給がこのような断続的な故障を引き起こすことがあります。これは Snow Rider 3D で完璧なランを狙うような感覚を少し思い出させます。ほんの小さなミスで全てが狂ってしまうこともあります!早く真相が解明されることを願っています!