ちょっと、そこ、
S32K324 でデュアルコア機能を有効にして使用する方法を調査しています。理解できない疑問が 2 つあります。
前もって感謝します
こんにちは、
これは非常に便利です。
ブートローダーを実装しており、マルチコアサポートを有効にしたいと考えています。この方法により、Core 0 から Core 1 上のアプリケーションを起動することが可能になります。
ただし、ブートローダが独自のアプリケーションを「ブート」できるようにしたいと考えています。
Core0 が独自のベクター テーブルを再配置し、別のアプリケーションにジャンプすることは可能ですか?
新しい VTOR アドレスをMC_ME->PRTN0_CORE0_ADDR に書き込んで、実行時にアプリケーションにジャンプすることはできないのでしょうか?
よろしくお願いいたします。
マシュー
わかっていますが、これが推奨される解決策なのか、それともどこかで構成可能なので、後で生成されたコードによって誤って上書きされる可能性があるのか疑問に思います。
こんにちは、
ソフトウェアのどの部分が core1 を有効にするのでしょうか?私は S32k322 に取り組んでいますが、RTD 内でこれらのレジスタが使用されるのは startup_cm7.s の EnableCore1 ルーチンだけであるようです。ただし、MULTIPLE_CORE と MULTIPLE_IMAGE の両方が定義されている場合、このコード部分は除外されます。
両方のコアが異なるアプリケーションを実行する場合、M7_1 コアを起動するにはどうすればよいでしょうか?2 番目のコアを起動するために M7_0 から呼び出す CAN RTD 関数はありますか?おそらく、2 番目のコアを実行するために使用する必要がある S32DS の MCAL 構成がいくつかありますか?
よろしくお願いします、
スラヴォミール
こんにちは@lukaszadrapa
ありがとう!本当に助かりました!
こんにちは@FelixR
S32K324 をお持ちの場合は、すでに分離モードになっています。このデバイスはデュアル コアと見なされます。
S32K344 をお持ちの場合は、デフォルトでロック ステップ モードになっており、分離モードで動作するように構成できるSO、実際には S32K324 になります。UTEST フラッシュ内の対応する DCF レコードをプログラミングすることで構成を変更 CAN ます。しかし、前述したように、S32K324 の CASE、これは必要ありません。
S32 Design Studio で S32K324 の新しいプロジェクトを作成すると、2 つのプロジェクトが作成されます。各コアごとに 1 つ。各プロジェクトには独自のリンカー ファイル、独自のスタートアップ ファイルなどがあります。
IVT のブート構成ワードでリセット後にどのコアが自動的に起動するかを定義することができます (S32K3 リファレンス マニュアルの「32.5.1 ブート構成ワード」を参照)。エントリ ポイントのアドレスは IVT で定義されます。各コアには特定のアドレスがあります。この方法で起動されないコアは、次のようなソフトウェアによって起動できます。
MC_ME->PRTN0_CORE1_ADDR = (uint32_t)(vtor); //vtorはベクターテーブルのアドレス
MC_ME->PRTN0_CORE1_PCONF = MC_ME_PRTN0_CORE1_PCONF_CCE_MASK;
MC_ME->PRTN0_CORE1_PUPD = MC_ME_PRTN0_CORE1_PUPD_CCUPD_MASK;
MC_ME->CTL_KEY = MC_ME_CTL_KEY_KEY( 0x5AF0);
MC_ME->CTL_KEY = MC_ME_CTL_KEY_KEY(~0x5AF0);
よろしくお願いいたします。
ルーカス