2321245_ja-JP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2321245_ja-JP

2321245_ja-JP

greenVIPの変更

こんにちは、

すでに別の投稿で同様のトピックを部分的に取り上げましたが、新しいトピックで追加情報を取得するように求められました。

greenVIP デモを使用/変更してカスタム プロジェクトを作成しようとしています。

これまで私が理解したことはこれだけですので、何か間違っている点がありましたらご指摘ください。

私の理解では、ブート シーケンスは次のようになります。

  1. bootCFG ピンが正しい位置にある場合、bootROM チップは外部フラッシュのアドレスであるアドレス 0x0 からコードの実行を開始します。
  2. アドレス 0x0 には、BLOB の一部である IVT (イメージ ベクター テーブル) があり、DCD、ブート テーブル、およびブート コアの定義を指します。
    • S32 Design Studio IVT ツールには、DCD とアプリケーション ブートローダーをロードするオプションがあります。アプリケーション ブートローダとは何ですか? また、アプリケーション ブートローダに RAM 開始ポインタとエントリ ポインタを提供する必要があるのはなぜですか?これは単にブート テーブルの別名ですか、それともブート テーブルはどこで、どのように構成できるのでしょうか?
    • IVT ツールには、「BLOB のエクスポート」と「IVT イメージ」のエクスポートのオプションもあります。違いは何ですか、または BLOB には何が含まれていますか?
  3. 次に、DCD (デバイス構成データ) セクションが 0x0000_0100 で実行され、各コアのメモリ アクセスとクロックを構成することになります。
    • S32 DS には DCD ツールもあり、WRITE コマンドと CHECK コマンドを追加または編集できます。ペリフェラルレジスタを設定するためのものだと正しく理解してよろしいでしょうか?実際にすべてのレジスタを DCD で初期化できますか? また、どのレジスタを DCD で変更する必要があり、どのレジスタを実行時に変更できるかをどのように判断すればよいですか?
    • 独自のコードを起動しようとしている場合、どのような条件で設定すればよいのでしょうか?
  4. 次に、0x0010_0000 にあるブート テーブルが実行され、すべてのコア コードを RAM にロードします。
    • これを確認してください。また、上ですでに質問したように、ブート テーブルはどこで構成できますか?
  5. その後、基本的にすべてのコアが起動します。

何か重要な手順を見逃していませんか?


  • さらに、 greenVIPの大きなメリットの一つは、デターミニスティックで、オートモーティブグレードのセーフティが検証済み、あるいは既に検証済みのマルチコアブートアップシーケンスを備えていることだと思います。もし私の認識が間違っていたら、確認または訂正をお願いします。これは、M33ブートコアのコードを変更すべきではない、あるいは変更できないという意味でもあるのでしょうか?
  • さらに、各コアのバイナリがブート シーケンス中にフラッシュから RAM にコピーされるだけの場合、カスタム プロジェクトに greenVIP アーキテクチャを使用する目的は、 greenVIP ユーザー ガイドの表 11 で指定された適切なフラッシュ アドレスに自分のコード バイナリをフラッシュすることだけです。各パーティションのフラッシュ アドレスですか?たとえば、RTU_0_C0 でコードを実行したい場合、バイナリをアドレス 0x0024_0000 にフラッシュすればよいのでしょうか?

Re: Modifying greenVIP

こんにちは、 HiddenSquidさん

ご質問と詳細情報をありがとうございます。

カスタム プロジェクトを作成するために、greenVIP デモを使用/変更しようとしていることは承知しています。したがって、アプリケーションについては、S32ZE_GreenVIP_1.x.1/doc/UG_S32ZE_GreenVIP.pdf を参照できます。

ブートローダ アプリケーションは、S32Z2 デバイス上の GreenVIP の両方の種類 (SMU_LA|SMU_LAV) に統合されています。BootROM はステージ 1 ブートローダとして機能し、プライマリ アプリケーション (SMU_LA|SMU_LAV) をロードします。これに続いて、ブートローダがステージ 2 で制御を引き継ぎ、セカンダリ アプリケーション (RTU_0 コア、RTU_1 コア、FLEXLLCE など) をロードします。

次の図のように、S32Z2 デバイス上の SMU_LA に対して GreenVIP がサービス モードで起動しています。

1.bootCFG ピンが正しい位置にある場合、bootROM チップは外部フラッシュのアドレスであるアドレス 0x0 からコードの実行を開始します。

>>>BootROM は、外部フラッシュの 0x0 の位置から直接「命令を取得して実行」するわけではありません。電源投入後、チップはまず内部 ROM 内の BootROM を実行します。BootCFG/スイッチの設定に基づいてブートメディア(QSPI/SD/eMMCなど)を選択し、ブートメディア上のブートヘッダー/IVTを読み取って後続のアクションを決定します。

2. アドレス 0x0 には、BLOB の一部である IVT (イメージ ベクター テーブル) があり、DCD、ブート テーブル、およびブート コアの定義を指します。

S32 Design Studio IVT ツールには、DCD とアプリケーション ブートローダーをロードするオプションがあります。アプリケーション ブートローダとは何ですか? また、アプリケーション ブートローダに RAM 開始ポインタとエントリ ポインタを提供する必要があるのはなぜですか?これは単にブート テーブルの別名ですか、それともブート テーブルはどこで、どのように構成できるのでしょうか?

>>>アプリケーション ブートローダーは、第 1 段階のアプリケーション イメージです。S32Z/E + greenVIP の場合、通常は SMU/M33 側のブート マネジメント プログラムです。BootROM はそれを RAM に移動し、エントリ ポイントにジャンプします。

IVT ツールには、「BLOB のエクスポート」と「IVT イメージ」のエクスポートのオプションもあります。違いは何ですか、または BLOB には何が含まれていますか?

>>> IVT の機能は、「ポインタ テーブル」として機能し、BootROM による解析に使用される DCD、アプリケーション ブートローダ、およびその他のイメージ ブロックを取得する場所を BootROM に指示することです。
BLOB は IVT に基づいており、関連するイメージはメモリ/アライメントに従って単一の書き込み可能な全体イメージ (ブート メディアに直接書き込むことができる) に物理的に組み立てられます。

3. 次に、DCD (デバイス構成データ) セクションが 0x0000_0100 で実行され、各コアのメモリ アクセスとクロックを構成することになります。

S32 DS には DCD ツールもあり、WRITE コマンドと CHECK コマンドを追加または編集できます。ペリフェラルレジスタを設定するためのものだと正しく理解してよろしいでしょうか?実際にすべてのレジスタを DCD で初期化できますか? また、どのレジスタを DCD で変更する必要があり、どのレジスタを実行時に変更できるかをどのように判断すればよいですか?

独自のコードを起動しようとしている場合、どのような条件で設定すればよいのでしょうか?

>>> DCD の役割は、BootROM ステージで実行される「ペリフェラル/ストレージ サブシステムの初期初期化スクリプト」のセットです。代表的な機能には、SRAM/DDR の初期化、QSPI パラメータの設定、必要な特定のクロック/リセットなどがあり、後続のアプリケーション イメージを正しく転送して実行できるようにします。DCD は、「BootROM の後、アプリケーション イメージの前」に準備する必要があるハードウェア条件を最小限に抑えることを目的としており、より高レベルのペリフェラルの初期化 (ドライバ、複雑なタイミング モジュールなど) は、アプリケーション ブートローダー/アプリケーション内で実行する必要があります。

4. 次に、0x0010_0000 にあるブート テーブルが実行され、すべてのコア コードを RAM にロードします。

これを確認してください。また、上ですでに質問したように、ブート テーブルはどこで構成できますか?

>>> SMU が BootROM によって起動された後、ブートローダはブート テーブルに従って RTU のすべてのイメージをロードおよび/または起動します。ブート テーブル構成の詳細については、UG_S32ZE_GreenVIP.pdf の「3.4 ブート テーブルのコンパイル」を参照してください。

5. さらに、私が理解している限り、greenVIP の大きな利点の 1 つは、デターミニスティックであり、オートモーティブ グレードのセーフティが検証可能またはすでに検証されているマルチコア ブートアップ シーケンスを備えていることです。間違っていたら確認または訂正をお願いします。これは、M33 ブート コアのコードも変更すべきではない、または変更できないという意味ですか?

>>>GreenVIP (S32Z/E 車載統合プラットフォーム) は、お客様が最小限の労力で S32Z/E ファミリ上でアプリケーションの開発を開始できるようにする機能的なソフトウェア プラットフォームを提供することを目的としています。各単一アプリケーション (vECU) のスタンドアロン開発とそれらの統合が可能になります。GreenVIP プラットフォームは、独自のデバイス機能を活用した S32Z/E の適切な使用方法を示すことを目的としています。M33 をソフトウェア レベルで適用する場合は、お客様が変更を加えることができます。これはソフトウェア レベルの開発アプリケーションです。当社が提供するgreenvipは、お客様が参照および使用するためのものであり、お客様の迅速な発展を促進します。

6. さらに、各コアのバイナリがブートシーケンス中にフラッシュからRAMにコピーされるだけの場合、カスタムプロジェクトでgreenVIPアーキテクチャを使用する目的は、greenVIPユーザーガイドの表11(各パーティションのフラッシュアドレス)で指定された適切なフラッシュアドレスに独自のコードバイナリをフラッシュすることだけでしょうか?つまり、例えばRTU_0_C0でコードを実行したい場合、バイナリをアドレス0x0024_0000にフラッシュするということですか?

>>>GreenVIP アプリケーションの場合、バイナリをアドレス 0x0024_0000 にフラッシュすると、RTU_0_C0.bin をこのアドレスにフラッシュするときに、SMU ブートローダによって自動的に RAM にコピーされます。ただし、エントリ/開始アドレスが同じ場合にのみ開始できます。

この情報がお役に立つことを願っております。

BR

ジョーイ

Re: Modifying greenVIP

こんにちは@Joey_z

回答ありがとうございます。これは概念的には大いに理解するのに役立ちますが、実用的な観点からは少し困惑しています。

  1. ブートテーブルについてですが、 UG_S32ZE_GreenVIP.pdf のセクション3.4「ブートテーブルのコンパイル」では、ブートテーブルのコンパイル手順のみが規定されており、実際の設定部分については触れられていないようです。同じセクションではブートローダーの設定についても触れられていますが、Tresos プロジェクトの観点からのみ言及されています。S32 Design Studio 用の同等の設定ツールはありますか?あるいは、この問題にはどのように対処すればよいでしょうか?
  2. 「BLOB は IVT に基づいています」とおっしゃるのは、 IVT が BLOB の一部であるという意味ですか、それともBLOB のコンパイルプロセスが IVT に基づいているという意味ですか?現時点での私の理解では、BLOB には以下のものが含まれています。
    1. IVT
    2. DCD
    3. アプリケーションブートローダー
    私はS32 DS IVTツールの視覚的な意味に基づいて推測しました
     
    ご確認または訂正をお願いします。
  3. greenVIPに関するコメントについて:「各アプリケーション(vECU)のスタンドアロン開発とそれらの統合を可能にします。当社が提供するgreenVIPは、お客様の参照と使用を目的としており、お客様の迅速な開発を促進します。」R52コアとM33/SMUコア用の独自のソフトウェアを開発するには、どのようにアプローチすればよいか、実用的な観点からもう少し詳しく説明していただけますか。例えば、SMU_LAプロジェクトのmain.cファイル(添付ファイルとして追加)を見つけましたが、これもTresosプロジェクトとしてのみ実装されており、main関数は確認できます。
int main(void)
{
  SwPartId = PART_ID;

  /* Monitoring initialization (SwPartId, osTaskID_First, osTaskID_Last, osTaskID_Reset) */
  Monitoring_Init(SwPartId, OsTaskASW_1ms, OsTaskASW_1000ms, OsTaskASW_1000ms);

  EcuM_Init(); /* start OS never returns */

  return 0;
}

しかし、 EcuM_Init()の定義/内容が見つからないため、行き止まりになってしまいます。マルチコア ブート プロセス アーキテクチャの説明は、具体的にはどこにありますか? また、どこで見つけることができますか?

お時間を割いていただき、ありがとうございます!

Re: Modifying greenVIP

こんにちは、 HiddenSquid

ご返信と情報ありがとうございます。

1.S32 Design Studio 用の同等の構成ツールはありますか? また、この問題にはどのように対処すればよいですか?

>>>5.12 ブート サービスの章を参照してください。ブート サービス (ブートローダー) は、SMU tresos プロジェクトで構成可能なコンポーネントとして提供されます。このコンポーネントは、複数の実行環境、アプリケーションソース、アプリケーションの構成を可能にします。
画像の断片。GreenVIP パッケージの場合、ブートローダー アプリケーションには Tresos のみを使用できます。

2.「BLOB は IVT に基づいています」というのは、IVT が BLOB の一部であるという意味ですか、それとも BLOB のコンパイル プロセスが IVT に基づいているという意味ですか。

>>>IVT/DCD/アプリケーション ブートローダーは BLOB に含まれています。

3. しかし、EcuM_Init() の定義/内容が見つからないため、行き止まりになってしまいます。マルチコア ブート プロセス アーキテクチャの説明は、具体的にはどこにありますか? また、どこで見つけることができますか?

>>> GreenVIP の場合、ブートローダ アプリケーションをロードして Tresos でコードを生成し、EcuM_Init() 情報を見つけてください。GreenVIP パッケージはマルチコアなので、これも参照してみてください。

BR

ジョーイ




Tags (1)
No ratings
Version history
Last update:
‎02-28-2026 02:33 AM
Updated by: