2255178_ja-JP

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

2255178_ja-JP

2255178_ja-JP

[S32K311][MultiPartition] : S32K311 の MultiPartition セットアップで SPI 初期化が失敗する

こんにちは、チームの皆さん

リアは次のことを尋ねています。

-------------------------------------------------------------------------------------

シングルコア ECU (S32K311) にマルチパーティショニングを実装していますが、SPI ドライバの初期化中に問題が発生しました。

観察:
SPI ドライバは、OsIf_timer.c から OsIf_GetPartitionID() を呼び出して現在のパーティション ID を取得し、それを SpiID として使用します。ただし、両方が同じ ECUC パーティション用に構成されているにもかかわらず、この ID は SpiCorePartitionUse の値と一致しません。この不一致のため、ドライバは DET エラーをトリガーし、ペリフェラルの初期化に失敗します。

デバッグ中に発見されたこと:
関数 OsIf_apxMultiPartitionPredefinedConfig は、SPI ドライバが予期しない値を返します。これが不一致の原因となっているようです。
初期分析では、この問題は Vector DaVinci/Tresos ツールからの構成生成に関連している可能性があることが示唆されています。

インパクト
SPI 初期化はマルチパーティション モードでは完了できず、通信機能がブロックされます。

-------------------------------------------------------------------------------------


BR
ステファノ


RTDRe: [S32K311][MultiPartition] : SPI initialization fails in MultiPartition setup on S32K311

こんにちは、 @StefanoGattazzo さん

OsIf_apxMultiPartitionPredefinedConfig について言及されている SO、ASR OS を使用していると想定します。

Nhi_Nguyen_0-1764908336364.png

では、この場合、関数 GetApplicationID() からどのような値が返されるのでしょうか?

EcuC、Os、Spi、BaseNXP を含む構成を送ってください。

次の構造の出力が生成されました:

Nhi_Nguyen_1-1764909416101.png

Nhi_Nguyen_2-1764909490186.png

どのような SW パッケージを使用していますか?

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



Re: [S32K311][MultiPartition] : SPI initialization fails in MultiPartition setup on S32K311

こんにちは、 Nhi_Nguyenさん

添付ファイルが十分かどうかお知らせください。


BR
ステファノ

Re: [S32K311][MultiPartition] : SPI initialization fails in MultiPartition setup on S32K311

こんにちは、 @StefanoGattazzo さん

関数 SPI_Init() の次のパラメータの読み取りを手伝ってください。

- スピイド?

- Spi_Init() 関数にどのような構成を渡しましたか?

このようになります:

Nhi_Nguyen_0-1764930784516.png

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

Re: [S32K311][MultiPartition] : SPI initialization fails in MultiPartition setup on S32K311

こんにちは、 Nhi_Nguyenさん

リアは答えた。

Spi_Init(&Spi_Config_EcucPartition_C0_B);

これは Init 関数で渡されたもので、SPI_ID はパーティション ID API から読み取られますが、OS アプリケーション ID に正しくリンクされていません。

BR
ステファノ

Re: [S32K311][MultiPartition] : SPI initialization fails in MultiPartition setup on S32K311

こんにちは、 @StefanoGattazzo さん

これは彼らのアプリケーション内の OS です:

Nhi_Nguyen_0-1765160258666.png

Spi_Config_EcucPartition_C0_B を Spi_Init() に渡したので、SPI_ID は次の値にする必要があります。

Nhi_Nguyen_1-1765161093076.png

このCASE、Det エラーが発生しないようにするには、u32AppId を 1 にする必要があります。ただし、関数 OS_GetApplicationID() は RTD ではなく RTOS に属しているため、誰かが取得できるように RTOS にタグを付けてください。

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

Re: [S32K311][MultiPartition] : SPI initialization fails in MultiPartition setup on S32K311

こんにちは、 Nhi_Nguyenさん

以下はリアの返答です:

このCASE、SPI ID と OS アプリケーションが一致しません。ASIL の場合、1 を返す必要があると考えられますが、0 を返すことで構成の不一致が発生します。以下のスナップショットを確認してください。


StefanoGattazzo_0-1765278424158.png




ご希望であれば、短いミーティングを行って詳細をご説明することもCANです。

BR
ステファノ

Re: [S32K311][MultiPartition] : SPI initialization fails in MultiPartition setup on S32K311

こんにちは、 @StefanoGattazzo さん

RTOS がどのように動作するのか、または RTOS の関数 GetCurrentApplicationID() から値がどのように返されるのか分かりません。ただし、u32AppID = 0 を現在の状態に保ち、Det エラーを回避したい場合は、以下のようにCANできます。

Nhi_Nguyen_0-1765349889769.png

生成されるファイルは次のようになります。

Nhi_Nguyen_1-1765349983170.png

つまり、u32AppId = 0 の場合、SpiID = 0 となります。

u32AppId = 1、SpiID = 1;

SPI では、生成されるファイルは次のようになります。

Nhi_Nguyen_2-1765350057168.png

これは、Spi_Config_EcucPartition_C0_QM->u32SpiCorePartitionUse = 1; を意味します。

Spi_Config_EcucPartition_C0_B->u32SpiCorePartitionUse = 0;

別のCASEでは、u32AppID を別の値に変更したいので、@StefanoGattazzo さん、RTOS タグを追加して、RTD タグを削除してください。RTOS の誰かがCAN手伝ってくれます。

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

Re: [S32K311][MultiPartition] : SPI initialization fails in MultiPartition setup on S32K311

こんにちは、 Nhi_Nguyenさん

もし誰か知っている人がいたら、直接尋ねてもCANですが、今は緊急です。


BR
ステファノ

Re: [S32K311][MultiPartition] : SPI initialization fails in MultiPartition setup on S32K311

こんにちは、 @StefanoGattazzo さん

RTD を削除してください。RTOS タグを追加したことを確認しました。このチームの誰かが回答します。

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

Re: [S32K311][MultiPartition] : SPI initialization fails in MultiPartition setup on S32K311

こんにちは、 Nhi_Nguyenさん

誰にCANで聞けばいいですか?


BR
ステファノ

Re: [S32K311][MultiPartition] : SPI initialization fails in MultiPartition setup on S32K311

こんにちは、 @StefanoGattazzo さん

申し訳ありませんが、これについてはアイデアがありません。

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

Re: [S32K311][MultiPartition] : SPI initialization fails in MultiPartition setup on S32K311

こんにちは、チームの皆さん

リアはこう書いています。

いいえ、NXP OS ではなくベクター OS を使用しています。OsIf 参照は Base コンポーネントからのものです。

現在、LPSPI2 を QM アプリケーション専用にし、残りの LPSPI モジュールを ASIL B アプリケーション用として SPI ドライバを分割する POC に取り組んでいます。

RTD ユーザー マニュアルによれば、パーティションごとに 2 つの個別の Spi_Init() 呼び出しを呼び出す必要があります。SO、最初に ASIL B OS アプリケーションから Spi_Init() 関数を呼び出し、次に QM OS アプリケーションからそれぞれに正しい構成ポインターを渡して呼び出します。

Spi_Init()関数ではSpi_GetID()が呼び出され、それがGetCurrentApplicationID()を呼び出していることがわかります(下のスクリーンショット)。

StefanoGattazzo_0-1765982551761.png


以下は、Os によって生成された列挙型です。ASIL B OS アプリケーションが GetCurrentApplicationID() を呼び出すと 0 を返します。QM OS アプリケーションが GetCurrentApplicationID() を呼び出すと 1 を返します。

StefanoGattazzo_1-1765982551945.png



OsIf_GetPartitionID では、Os によって返された値を使用して、配列 OsIf_apxMultiPartitionPredefinedConfig で構成されているパーティション番号を取得します。

StefanoGattazzo_2-1765982552173.png



OsIf_apxMultiPartitionPredefinedConfigの値は以下のとおりです。

StefanoGattazzo_3-1765982552232.png



QM アプリケーションが Spi_Init() を呼び出すと、Spi_GetID() は 1 の値を返します (GetCurrentApplicationID() は 1 を返し、OsIf_apxMultiPartitionPredefinedConfig のインデックス 1 も 1 です)。
しかし、生成された SPI 構成には期待された値がないため、Det にエラーが報告されます。

StefanoGattazzo_4-1765982552605.png



Spi_Config および OsIf_apxMultiPartitionPredefinedConfig の MCAL によって生成される値に影響を与えるものは何ですか?

BR
ステファノ

Re: [S32K311][MultiPartition] : SPI initialization fails in MultiPartition setup on S32K311

こんにちは、 @StefanoGattazzo さん

添付のプロジェクトから取得した Spi、Ecu、Os の構成は次のとおりです。

Nhi_Nguyen_0-1766026210635.png

EcuC はパーティション ID を定義するために使用されます。たとえば、その構成では、QM はパーティション 0、C0_B はパーティション 1、システムはパーティション 2 です。

Spi、Os は、EcuC からパーティション ID を取得するパーティションを選択します。例えば:

SPI: C0_B はパーティション 1、C0_M はパーティション 0 です。

OS: 構造体 OsIf_apxMultiPartitionPredefinedConfig も EcuC のパーティション ID を参照します。たとえば、次の構成になります。

アプリケーション 0 - システム - パーティション 2;

アプリケーション 1 - C0_B - パーティション 1;

アプリケーション2 - C0_M - パーティション0;

SO、C0_B を Spi_Init() に渡す場合、これはパーティション 1 を Spi_Init() に渡すことを意味し、OsIf_apxMultiPartitionPredefinedConfig[x] = 1; または x = 1; (x = GetCurrentApplicationID();) となります。

SO、彼らが最新の返信で示した写真を見てみましょう。

Spi では、C0_B はパーティション 1 です。

C0_M はパーティション 2 です。

つまり、EcuC では、インデックス 0 はシステム パーティション、インデックス 1 は C0_B パーティション、インデックス 2 は構成に適合しない C0_M パーティションがここに接続されています。

とにかく、上記の Os、Spi、EcuC の定義に基づいて、パーティション構成を調整し、Det エラーを回避できます。

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



Tags (1)
No ratings
Version history
Last update:
‎12-19-2025 03:29 AM
Updated by: