2177435_ja-JP

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

2177435_ja-JP

2177435_ja-JP

MCX-A346: RAMベースのベクターテーブルがHardFaultを引き起こす

フラッシュ メモリ内のハンドラーへの有効なベクターで適切に初期化された RAM ベースのベクター テーブルがあります。SVC 命令を実行すると、例外処理は HardFault にエスカレートします。ベクター テーブルから SVC ハンドラー アドレス (LSB セット) を取得できないようです。ただし、HardFault ハンドラーは適切に取得され、実行されます。このハンドラーでは、次の値を読み取ります。

スタックポインタ:
SP 0x20027E68

EXC_RETURN 0xFFFFFFA8

スタックされたLR、PC、およびXPSR:
リンクst 0x00004523
PCst 0x00004468
XPSRst 0x69000000

レジスター:
VTOR 0x20020000
SHCSR 0x00070004
CFSR 0x00000000
HFSR 0x40000000

HFSR は強制された (エスカレートされた) HardFault を示します。

これは SDK なしのベアメタルです。RAM C0 はテスト セットアップに使用され、ベクター テーブルが下部に、スタックが上部に配置されます。(テスト) SVC ハンドラーは最小限で、無限ループのみです。45、60、180 MHz のシステム クロック (より高いクロック レートの場合は FIRC、OD コア電圧) でテストしました。

何が足りないのでしょうか?ありがとう!

コアとメモリRe: MCX-A346: RAM-based Vector Table Results in HardFault

問題は、プログラムが初期 PC 値 (アドレス 0x04) を介して実行を開始したときに、Cortex-M33 コアが、対応するリファレンス マニュアルに記載されているリセット状態ではなく、ブート ROM コードによって設定された PRIMASK = 1 になっていることです。その結果、SVC 命令は HardFault にエスカレートします。PRIMASK をリセット状態 (CPSIE I) にリセットすると、問題は解決します。

Re: MCX-A346: RAM-based Vector Table Results in HardFault

こんにちは@ygrayne

ご投稿ありがとうございます。

MCX A34x シリーズは新しい製品なので、低レベルでの構成に関する情報はあまりありませんが、Cortex-M コアのArm ベクター テーブルの再配置を最小限のメモリ オーバーヘッドで RAM に最適化する次の情報を見つけたので、参考にすることができます。この情報は NXP によってテストまたは検証されておらず、Cortex-M の汎用情報であるSO、目標を達成するための参照としてのみ使用してください。また、 Arm ® Cortex ® -M33 プロセッサ テクニカル リファレンス マニュアルを確認することをお勧めします。

BR

タグ(1)
評価なし
バージョン履歴
最終更新日:
‎11-20-2025 11:52 AM
更新者: