1867747_ja-JP

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

1867747_ja-JP

1867747_ja-JP

MCU がブートローダから APP を 2 回目に入力すると、クロックの初期化が異常になります

APPがブートローダにジャンプするときにIOを高レベルに保つ必要があるため、ソフトウェアリセットによってブートローダに入ることは現実的ではありません。

ブートローダーからAPPを初めて入力するのは正常です.ブートローダーに入る前にPIT、SPIなどのすべての周辺機器を初期化解除し、ブートローダーは再度APPに入ります。MCUがブートローダーからAPPを2回目に入力すると、初期化時にスタックします。IDEが提供するライブラリ関数を使用しました。これらの写真は、私が問題を見つける方法を示しています。

 

1.ここで立ち往生しているのを見つけます。

LuoSi_11-1715927008462.png


LuoSi_4-1715926233966.png

2.次に、写真1の機能でここに貼り付けます

LuoSi_5-1715926316880.png

3.次に、写真2の機能でここに立ち往生しました

LuoSi_6-1715926356787.png

4.次に、写真3の機能でここに立ち往生します

LuoSi_7-1715926412080.png

5.そしてついにここを見つけました。サイクルはタイムアウトまでレジスタステータスを待っているようです。

LuoSi_8-1715926471975.png

6.次に、このレジスタのアドレスを確認し、サイクルが何のためにあるのかを調べました。

LuoSi_9-1715926764250.png

LuoSi_10-1715926813693.png

LuoSi_12-1715927014672.png

しかし、なぜこのビットが「モード遷移が進行中です」で止まっているのかわかりません。また、図5のTIMEOUT値を小さくしようとしましたが、プロジェクトはPITまたはSPI、またはその他の周辺機器の初期化でスタックします。


Re: MCU がブートローダから APP を 2 回目に入力すると、クロックの初期化が異常になります

アプリケーション(APP)からブートローダへの移行中にIOを高レベルに保つという要件に対処する場合、ペリフェラルの状態と初期化シーケンスを慎重に管理することが重要です。ブートローダーからAPPへの2回目のエントリ中にMCUがスタックする問題に対処するためのいくつかの手順と考慮事項を次に示します。

  1. ペリフェラルの初期化解除:

    • ブートローダーにジャンプする前に、すべての周辺機器が適切に初期化解除されていることを確認してください。これには、割り込みの無効化や、ペリフェラル レジスタをデフォルトの状態にリセットすることが含まれます。
  2. メモリとスタックの管理:

    • 移行中にスタックとヒープが正しく管理されていることを確認します。スタックの破損や不適切なメモリ割り当ては、MCUがスタックする原因となる可能性があります。
  3. ブートローダとアプリケーションの分離:

    • ブートローダーとアプリケーションコードがメモリ内で十分に分離されていること、およびそれらの間を移行するときにベクトルテーブルが正しく設定されていることを確認してください。
  4. ハードウェアの初期化:

    • APPへの2回目のエントリ中に、すべてのハードウェアコンポーネントが正しく再初期化されていることを確認してください。周辺機器は、ブートローダーで使用した後、正しく動作するために完全なリセットが必要になる場合があります。
  5. デバッグ:

    • デバッグ ツールを使用してコードをステップ実行し、初期化プロセスがスタックしている場所を特定します。機能的なハード フォールト ハンドラーを実装して、障害をキャッチし、障害に関する詳細情報を提供します
  6. ライブラリ関数:

    • IDE が提供するライブラリ関数を使用している場合は、ブートローダおよびアプリケーションの設定と互換性があることを確認してください。場合によっては、カスタム初期化ルーチンが必要になることがあります。

詳細なトラブルシューティングについては、同様の問題に関するコミュニティのディスカッションを参照してください。たとえば、NXPコミュニティのユーザーは、ブートローダーからAPPを2回目に入力するときに、初期化中にMCUがスタックするという同様の問題に直面しました(ソース)。

ペリフェラルの状態、メモリ、初期化シーケンスを慎重に管理することで、IO を高レベルに保つ必要がある場合でも、ブートローダーとアプリケーション間のスムーズな移行を確保できます。

Re: MCU がブートローダから APP を 2 回目に入力すると、クロックの初期化が異常になります

Hello,

OK、つまり、CANやPWMなどのクロックをソースしているペリフェラルがまだアクティブであると思います。

それらに対するゲートクロックは、通常、周辺機器は制御レジスタのフリーズビットに似ているので、

よろしくお願いいたします。

ピーター

Re: MCU がブートローダから APP を 2 回目に入力すると、クロックの初期化が異常になります

Hi

おっしゃる通り、やってみました。モード遷移を要求する前にMC_RUN_PC_n、MC_LP_PC_n、およびME_PCTL_nをリセットしましたが、モード遷移がまだスタックしています。

LuoSi_0-1716854905897.png


下の図のようにMC_ME_DMTSと呼ばれるレジスタは、現在どのような状態にあるかを確認できます。値は、スタックが発生した場合の画像です。しかし、立ち往生の原因をどのように見つけるかは私には明らかではありません。分析を手伝ってもらえますか?

LuoSi_2-1716855424520.png

LuoSi_3-1716855523065.png



Re: MCU がブートローダから APP を 2 回目に入力すると、クロックの初期化が異常になります

Hello,

PLLによって供給されるいくつかの周辺がアクティブであるため、モード遷移が停止します。

IRCクロックにモードを移行してから、アプリケーション設定に切り替えてみてください。

モード遷移を要求するときは、すべての周辺機器がアプリケーションのクロックによってクロックされていないことを確認してください。

petervlna_0-1716362919246.png

よろしくお願いいたします。

ピーター


タグ(1)
評価なし
バージョン履歴
最終更新日:
‎01-06-2026 01:18 AM
更新者: