ハードウェア:MIMXRT1176(Cortex-M7 + Cortex-M4)
IDE:MCUXpresso
アプリケーション:デュアルコアプロジェクト。
問題:
約1~2時間の通常動作後、M4コアはランダムに ロックアップ 州。
システムがロックアップした後、自動的にリセットされることがあります。
時々完全にフリーズしてしまい、ハードウェアのリセットが必要になることがあります。
私が既に行ったこと:
有効 MemManage 障害、 バス障害、および 使用上の誤り 起動コード内。
対応する障害ハンドラを実装しました(UART経由でコンテキストを出力します)。
奇妙な行動:
ロックアップ前に、 なし 有効になっている障害ハンドラが入力されます(UART出力はありません)。
ロックアップ後、デバッガーはSWD経由で再接続できません(接続失敗)。
システムが自動リセットされた場合、(リセット原因レジスタを介して)ロックアップが発生したことしか検出できませんが、その原因となったPC、LR、およびスタックの内容は失われます。
質問:
このような状況下で、M4のロックアップ現象の根本原因を調査するにはどうすればよいでしょうか?
何かご提案やデバッグ方法などございましたら、大変ありがたく存じます。ありがとう!
問題は解決しました。
根本原因:M4ロックアップ i.MX RT1176 – DCDC電源モード
オン i.MX RT1176(特にデュアルコアプロジェクトの場合)の既知の原因の1つは、 DCDC電源構成 内部 clock_config.c (関数 BOARD_BootClockRUN)
デフォルトでは、DCDCレギュレータは次のように設定されています。 CCM(連続伝導モード)負荷が高い場合、または動的に変化する負荷の場合(例:M7とM4の両方がアクティブ、フラッシュへのアクセス、ペリフェラルの切り替え)、 負荷変動は一時的な電圧降下を引き起こす可能性があります。M4コアはM7よりもこのような落下に敏感であり、 ロックアップ 障害ハンドラが実行されることなく。ロックアップ後、コアが応答しなくなるため、デバッガーは接続を失うことがよくあります。
解決:
DCDCコンバータを切り替えて DCM(不連続伝導モード)DCMは負荷変動への対応能力が高く、ロックアップを引き起こす電圧降下を回避します。