2375584_ja-JP

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

2375584_ja-JP

2375584_ja-JP

S32G-VNP-GLDBOX3 (S32G399) 上で、SDカードからM7_0とM7_1用の2つのM7バイナリを実行しています。

こんにちは、

S32 DSでM7_0とM7_1用の2つのプロジェクトを作成し、デバッガを使用して両方のコアがそれぞれのアプリケーションを実行していることをテストしました。それでは、SDカードから両方のバイナリを実行してテストしてみます。

以前、DCDとIVTの設定でアプリケーションを1つ実行し、S32 Flashing Toolを使用してフラッシュを試みました。動作はしますが、同じワークフローで2つのバイナリをフラッシュする方法がわかりません。それとも、まったく異なるワークフローが必要になるのでしょうか。目的は、彼らにSDカードの容量不足を起こさせることだ。将来的には、M7コアごとに合計4つのバイナリが提供される予定です。

ありがとう、
リズワン。

Re: Running 2 M7 binaries for M7_0 and M7_1 from SD card on S32G-VNP-GLDBOX3 (S32G399)

NXP autosarブートローダーなしでM7_0とM7_1のバイナリを起動できた方法は以下のとおりです。

  • ROMがSDカードから1つのIVTイメージのみを起動できるようにする
  • そのIVTイメージに1つの結合されたアプリケーションペイロードが含まれるようにします。
  • 両方を置く M7_0 そして M7_1 生バイナリを、正しいリンクされたSRAMオフセットでペイロードに格納する
  • させて M7_0 始める M7_1 通常のコア起動メカニズムを使用して実行時に

重要な点は、ROMが2つの独立したM7アプリケーションイメージを起動するわけではないということです。アプリケーションイメージを1つ読み込みます。つまり、2つの別々の .bin ファイルを個別に書き込んで、SDカードからまとめて起動できると期待することはできません。

私がしたこと

私のリンカーの配置は以下のとおりです。

  • M7_0 負荷ベース: 0x34304000
  • M7_1 負荷ベース: 0x34D04000

M7_1 開始/ベクタアドレスは次のとおりです。

  • 0x35204400

M7_0 エントリーアドレスは:

  • 0x34304010

したがって、結合されたペイロードはメモリ上で次のような形式になる必要があります。

  • オフセット 0x00000000 -> M7_0 バイナリ 0x34304000
  • オフセット 0x00A00000 -> M7_1 バイナリ 0x34D04000

つまり、パディングされた結合バイナリを作成する必要があるということです。単純な連結は、2番目の画像が最初の画像の直後にリンクされていない限り、誤りです。

これが必要な理由

ROMは、連続したアプリケーションイメージをSRAMにコピーします。もし M7_1 より高いSRAMアドレスにリンクされている場合、2つのイメージ間のギャップは、結合されたペイロード内にパディングとして存在する必要があります。

画像生成ロジックは次のとおりです。

  • ベースロードアドレスを選択してください = M7_0 ロードアドレス
  • 場所 M7_0.bin オフセットで M7_0_ADDR - ベース
  • 場所 M7_1.bin オフセットで M7_1_ADDR - ベース
  • 隙間を埋める 0x00
  • 結合したファイルをIVTパッケージングのアプリケーションペイロードとして使用する

私のIVT/アプリケーション値

現在の私の構成では:

  • アプリケーション読み込みアドレス: 0x34304000
  • 申請受付住所: 0x34304010
  • 合計ペイロードサイズ: 0xF3C008

使用したツール

私は小さなPythonヘルパーと 。バット ラッパー:

  • image_util.py
  • combine_m7_bins.bat

バッチファイルは結合コマンドを直接実行し、以下の出力を出します。

  • artefacts/combined_m7.bin

それらのファイルは別途添付/アップロードします。

重要なランタイムに関する注意事項

バイナリを結合するのは、イメージ読み込みの部分だけです。

マルチコアランタイムの正しい動作が依然として必要です。

  • M7_0 始めなければならない M7_1
  • M7_1 正しいベクトル/開始アドレスから開始する必要があります
  • グローバル初期化はコア間で調整する必要がある

私の設定では、 M7_0 リリースを担当 M7_1 .

タグ(1)
評価なし
バージョン履歴
最終更新日:
昨日
更新者: