S32K358デュアルコアアプリケーション(Core 0およびCore 2)に問題が発生しています 電源オン時のリセット時に。
こんにちは、@ Julián_AragónM さん、
現在、s32k358カスタムボードを使用していますが、POR後に制御がcore0に渡るものの、そこで停止してしまいます。これはアプリケーションを直接フラッシュしたときに起こります。
コア0からコア2を有効化します。
直接フラッシュ書き込みを行う際、CM7_0_VTOR_ADDRとCM7_2_VTOR_ADDRの両方が正しく設定されていますか?- はい、初めてアプリケーションをフラッシュしたときは両方のコアは動作しますが、問題はPORの後だけです。
あなたのリファレンスプロジェクトと比較したところ、System.cで唯一の違いが見られますファイル
/* サイズ:リンカーシンボルからの情報インポート、タイプ:ノーマル、インナーキャッシュポリシー:インナーライトバック、書き込み・読み込み割り当て、アウトドアキャッシュポリシー:アウトライトバック、書き込み・読み込み割り当て、共有可能:いいえ、特権アクセス:RW、非特権アクセス:RW */
#if (defined(S32K396) || defined(S32K394)) & defined(MULTIPLE_IMAGE)
rasr[6]=((uint32)0x030B0001UL)|(((uint32)__RAM_CACHEABLE_SIZE - 1) << 1);
#else
/* サブリージョン7と8*を無効にしてください
rasr[6]=((uint32)0x030B0001UL)|(((uint32)__RAM_CACHEABLE_SIZE - 1) << 1)|(1<<15)|(1<<14);
#endif
こんにちは、 @Indhumathi さん。
これはNXPのEVB S32K358ですか?それともカスタムデザインですか?
この問題についてもう少し情報を教えていただけますか?「期待通りにアプリケーションを実行しない」とはどういう意味ですか?MCUがリセットされているのか、それともSWのどこかで閉じ込められているのでしょうか?
直接フラッシュ書き込みを行う際、CM7_0_VTOR_ADDRとCM7_2_VTOR_ADDRの両方が正しく設定されていますか?
起動時のIVTマーカー(CM7_2_ENABLE=1)でCM7_2を有効にしていますか?それともSW(MCU/電源ドライバー)で有効化していますか?
コア0からコア2を始めるシンプルなマルチコアプロジェクトがあります。リファレンスとして使って設定を点検・比較できるかもしれません。S32K358マルチコアはCM7_0からCM7_2を開始します。
よろしくお願いします、
ジュリアン
こんにちは、 @Julián_AragónM さん、
POR後もコア0は動作していますが、コア2に切り替わりません。
問題解決のためにサポートしていただけませんか?
こんにちは、 @Indhumathi さん。
あなたが共有してくれたsystem.cのセクションはS32K358には関係ありませんが、S32K396には関係があります。おそらく、S32K358のMPU構成を共有したかったのだと思います。
POR後もコア0は動作していますが、コア2に切り替わりません。
プロジェクトのプリプロセッサ記号を調べてもらえますか?マルチコアプロジェクトでは、 MULTIPLE_COREマクロを定義する必要があります。単一のELFプロジェクトでない場合は、 MULTIPLE_IMAGEマクロも必要です。単一のELFプロジェクトの場合は不要です。
MULTIPLE_IMAGEが設定されていない場合、デバッガーが接続されている状態ではプロジェクトは正常に動作しますが、デバッガーが接続されていない状態ではハードフォルトが発生します。これは、起動コードがCore 2のRAM上でECC初期化を実行しないためです。
Julin_AragnM_0-1787172984643.pngJulin_AragnM_0-1787172984643.png
Core 2を有効にするためにMCU/Powerドライバーを使っていると推測します。HLD(MCAL)を使っていますか、それともLLD(IP)を使っていますか?
Core 2にデバッガーを接続しようとした場合、Coreが初期化段階で停止しているのか、それともデバッガーが接続できないのかを確認できますか?
最後に、問題が再現できるような簡単なテストプロジェクト、または設定ファイルとルーチンを提供していただけますか?
よろしくお願いします、
ジュリアン