1789569_ja-JP

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

1789569_ja-JP

1789569_ja-JP

S32K324 コアコード分離

ちょっと、そこ、

S32K324 でデュアルコア機能を有効にして使用する方法を調査しています。理解できない疑問が 2 つあります。

  1. 2 つのコアをロック解除して互いに独立して動作させるにはどうすればよいですか?私の理解する限りでは、これらはデフォルトでロックステップ構成で起動し、DCMROF19[LOCKSTEP_EN] ビットによって、ロックステップ構成か分離構成かがわかります。しかし、そのビットは読み取り専用、SO構成内で分離できるポイントはどこにあるのでしょうか?
  2. コアは、どのコード フラッシュ領域からコードを読み取るかをどのように認識するのでしょうか?これらは別々の機能を実行する必要があるSO、異なるコード フラッシュ領域に存在する異なるメイン ルーチンが必要です。コードを実行したい指定のコード領域に 1 つのコアでジャンプする必要がありますか、それとも各コアに特定のコード開始アドレスがありますか?

前もって感謝します

Re: S32K324 seperate core code

こんにちは、

これは非常に便利です。
ブートローダーを実装しており、マルチコアサポートを有効にしたいと考えています。この方法により、Core 0 から Core 1 上のアプリケーションを起動することが可能になります。

ただし、ブートローダが独自のアプリケーションを「ブート」できるようにしたいと考えています。
Core0 が独自のベクター テーブルを再配置し、別のアプリケーションにジャンプすることは可能ですか?

新しい VTOR アドレスをMC_ME->PRTN0_CORE0_ADDR に書き込んで、実行時にアプリケーションにジャンプすることはできないのでしょうか?

よろしくお願いいたします。
マシュー

Re: S32K324 seperate core code

わかっていますが、これが推奨される解決策なのか、それともどこかで構成可能なので、後で生成されたコードによって誤って上書きされる可能性があるのか疑問に思います。

Re: S32K324 seperate core codeソリューション内で説明されているレジスタ アクセス@lukaszadrapaを実行できます。
M1 がまだ非アクティブな間に、M0 コア内にメインがあるとします。
次の呼び出しによって、M1 に自身のメイン関数が実行される場所を通知します。

voind main_on_core_0()
{
// ここは通常のコードです
MC_ME->PRTN0_CORE1_ADDR = (uint32)(&コア1のメイン機能);
}


次に、レジスタ アクセスを介して Core 1 を起動するように指示します。
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);
Re: S32K324 seperate core code

こんにちは、

ソフトウェアのどの部分が core1 を有効にするのでしょうか?私は S32k322 に取り組んでいますが、RTD 内でこれらのレジスタが使用されるのは startup_cm7.s の EnableCore1 ルーチンだけであるようです。ただし、MULTIPLE_CORE と MULTIPLE_IMAGE の両方が定義されている場合、このコード部分は除外されます。

両方のコアが異なるアプリケーションを実行する場合、M7_1 コアを起動するにはどうすればよいでしょうか?2 番目のコアを起動するために M7_0 から呼び出す CAN RTD 関数はありますか?おそらく、2 番目のコアを実行するために使用する必要がある S32DS の MCAL 構成がいくつかありますか?

よろしくお願いします、
スラヴォミール

Re: S32K324 seperate core code

こんにちは@lukaszadrapa

ありがとう!本当に助かりました!

Re: S32K324 seperate core code

こんにちは@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);

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

ルーカス

标记 (1)
无评分
版本历史
最后更新:
‎11-21-2025 09:19 AM
更新人: