2326269_ja-JP

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

2326269_ja-JP

2326269_ja-JP

[S32K324] コア0がMC_ME経由でコア1を起動 — コア1へのOzoneの「アタッチ」はすぐに失敗する

環境:
- デバイス: NXP S32K324 (デュアルコア Cortex-M7_0 + M7_1)
- IDE: S32 Design Studio、デバッガ: Segger Ozone + J-Link
- プロジェクト: ブートローダー (M7_0) + アプリケーション (M7_0 + M7_1)、MULTIPLE_IMAGE モード、FreeRTOS

---
背景 / 変更点:

ブートローダーはすべてのビルド構成でCM7_1_ENABLEを定義していたので、
ブートローダーと Core 0 アプリケーション ビルドの両方から CM7_1_ENABLE を削除しました。

必要に応じて Core 1 を起動できるようにするために、Core 0 アプリケーションに次の MC_ME ベースの起動関数を追加しました。

int MultiCoreBoot_StartCore1(void)
{
/* Core1 がすでに実行されている場合はスキップします */
((MC_ME_PRTN0_CORE1_STAT & MC_ME_CORE_STAT_CCS) != 0U) の場合
{
0を返します。
}

/* ステップ1: M7_1ベクターテーブルアドレスを設定する */
MC_ME_PRTN0_CORE1_ADDR = M7_1_VECTOR_TABLE_ADDR; // 0x00600000

/* ステップ2: Core1クロックを有効にする */
MC_ME_PRTN0_CORE1_PCONF = MC_ME_CORE_PCONF_CCE;

/* ステップ3: 更新をトリガーする */
MC_ME_PRTN0_CORE1_PUPD = MC_ME_CORE_PUPD_CCUPD;

/* ステップ4と5: キーシーケンスのロック解除 */
MC_ME_CTL_KEY = MC_ME_KEY; // 0x5AF0
MC_ME_CTL_KEY = MC_ME_INV_KEY; // 0xA50F

/* Core1クロックがアクティブになるまで待機 */
((MC_ME_PRTN0_CORE1_STAT & MC_ME_CORE_STAT_CCS) == 0U) の場合 {}

0を返します。
}

この関数は、システムの初期化後に Core 0 アプリケーションから呼び出されます。

---
現在の問題:

Ozoneで「実行中のプログラムにアタッチ」を使用してCore 1をデバッグしようとしています(2番目のOzoneインスタンス、別の.jdebugCore 1 ELFを指すプロジェクト
0x00600000)。ただし、Ozone は接続するとすぐにエラーをスローします。


質問:
1.上記の MC_ME 起動コードは S32K324 に適していますか?
2. Core 0 をリセットせずに Core 1 に接続するための正しい Ozone / J-Link 構成は何ですか?

 
 

企业微信截图_17726181715171.png企业微信截图_17726181715171.png


Re: [S32K324] Core 0 starts Core 1 via MC_ME — Ozone "Attach" to Core 1 fails immediately

こんにちは@Julián_AragónM

あなたのサポートと参考資料に感謝します。それらは問題を絞り込むのに非常に役立ちました。Core 1 の「Attach」障害を正常に解決しました。簡単に要約すると次のようになります。

  • MPU/スタートアップ: 要求どおりに検証されました。構成は正しく、原因ではありません。

  • 根本原因: デフォルトの S32K324.jlinkscript は、2 番目の Ozone セッションが接続されたときに ECC RAM の初期化 (0xDEADBEEF の書き込み) をトリガーします。これにより、実行中の Core 0 (FreeRTOS) で使用されている SRAM 領域が誤って上書きされ、システムがクラッシュする原因となります。

  • 修正: カスタム J-Link スクリプト内の SetupTarget() をオーバーライドして、「ホット アタッチ」中の RAM 初期化をスキップしました。

両方のコアを同時に安定してデバッグできるようになりました。この発見があなたのチームにとっても役立つことを願っています。

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

チャンユケ

Re: [S32K324] Core 0 starts Core 1 via MC_ME — Ozone "Attach" to Core 1 fails immediately

こんにちは@Changyukeさん

Core 1 を起動するルーチンは問題ないようです。CM7_0 のスタートアップコードをチェックして、アドレス 0x00600000 の MPU 領域属性を確認していただけますか?テーブルベースが有効な VTOR であることを確認するためです。

オゾンに関しては、これはSEGGER自身に質問すべきことだと私は思います。代わりに次の連絡先にお問い合わせください:チケット | SEGGER - The Embedded Experts

ドキュメントはいくつか提供していますが、PEmicro に基づいているため、Ozone に必要な特定の構成があるかどうかはわかりません。

最後に、SEGGER はマルチコア デバッグに関する wiki ページを提供しています:マルチコア デバッグ - SEGGER ナレッジ ベース。必要な構成がそこに表示されているようです。

よろしくお願いします、
ジュリアン

标记 (1)
无评分
版本历史
最后更新:
‎03-05-2026 04:28 AM
更新人: