こんにちはチーム
S32K3のFEEデータ取り扱い情報についてお伺いしてもよろしいでしょうか?
1.FeeBlockSize = 10 B の場合、ヘッダーやその他のメタデータを追加した後に DataFlash に書き込まれる実際のサイズはどれくらいですか?
2. Fee_MainFunction を 1 回実行すると、いくつの単位のデータ (FlsPageSize 単位) が書き込まれますか?(HW 書き込み操作は、FlsPageSize で設定された値に基づいて実行されますか?)
書き込み操作は、デフォルトで 32 ビットに設定されている「仮想ページ サイズ」に基づいていると思います。したがって、サイズが 10 バイトの場合、32 バイトが書き込まれます。
Fee_MainFunction は実行されるたびに、32 バイト (仮想ページ サイズ) 単位で動作します。
これで理解できましたか?
よろしくお願いします。
こんにちは@Luke_Chun 、
1.FeeBlockSize = 10 B の場合、ヘッダーやその他のメタデータを追加した後に DataFlash に書き込まれる実際のサイズはどれくらいですか?
=> DataFlash に書き込まれるブロック n データの実際のサイズ: 実際のサイズ = n * FEE_VIRTUAL_PAGE_SIZE
(ブロックサイズ < FEE_VIRTUAL_PAGE_SIZE)の場合
{
1 の場合
}
それ以外
{
if((ブロックサイズ % FEE_VIRTUAL_PAGE_SIZE) == 0U)
{
n = ブロックサイズ/FEE_VIRTUAL_PAGE_SIZE;
}
それ以外
{
n = ブロックサイズ/FEE_VIRTUAL_PAGE_SIZE + 1;
}
}
例:
2. Fee_MainFunction を 1 回実行すると、いくつの単位のデータ (FlsPageSize 単位) が書き込まれますか?(HW 書き込み操作は、FlsPageSize で設定された値に基づいて実行されますか?)
=> 私の答え:
Mem_Acc レイヤー ( MemAcc_CalculateLengthTransfer 関数内)では、ブロック データの長さが計算され、JobInfo->LengthChunk に割り当てられます。
この変数は下位層で使用されます - Mem_INFLS (ユーザーが料金ブロック用に内部フラッシュを構成した場合)。Mem_INFLS レイヤーでは、Mem_43_INFLS_IPW_ComputeWriteLength 関数を介してオフセットとアドレスに基づいて長さが再度計算されます (フラッシュ メモリへの書き込み前)。
SO、長さの値はアドレスとブロックのサイズによって異なるため、状況に応じた正しい長さの値はありません。
よろしくお願いいたします。
ダン