こんにちは、
Eep_Ftfc_Example_S32K144 を使用すると正常に動作する理由がわかりません。
しかし、消去および書き込みコードを削除して、以前に保存されたデータを読み取ろうとすると、「FTFC_EEP_IP_STATUS_BLOCK_INCONSISTENT」というエラーで失敗します。
「デバイスのパーティションを保持する」と「この範囲を保持する」の両方を0x10000000から0x1000ffffに設定しました。
したがって、第2ラウンドのコードは次のとおりです。
/* クロックの初期化 */
Clock_Ip_Init(&Clock_Ip_aClockConfig[0]);
/* コード0x4のEERAM用に以前にパーティション化されていない場合のみパーティション化する */
Eep_DepartParitition(T_EEEPROM_SIZE);
/* Eepドライバを初期化します */
Ftfc_Eep_Ip_Init(&EepFtfcCfg_VS_0);
// /* 消去値を書き込むことでメモリを消去します */
// for(i=0; i
// retJobResultType = Ftfc_Eep_Ip_Erase(EEP_ERASE_START_ADD + i, FTFC_EEP_IP_PAGE_LONGWORD, FALSE);
// if(FTFC_EEP_IP_STATUS_OK != retJobResultType)
//
// Exit_Example(FALSE);
// 0 を返す;
// }
// }
//
// /* 1つ以上の完全なEEPROMページをEEPROMデバイスに書き込みます */
// for(i=0; i
// retJobResultType = Ftfc_Eep_Ip_Write(EEP_ERASE_START_ADD + i, dataWrTestPatt + i, FTFC_EEP_IP_PAGE_LONGWORD, FALSE);
// if(FTFC_EEP_IP_STATUS_OK != retJobResultType)
//
// Exit_Example(FALSE);
// 0 を返す;
// }
// }
/* EEPROMメモリ領域とアプリケーションデータバッファを比較します */
for(i=0; i
retJobResultType = Ftfc_Eep_Ip_Compare(EEP_ERASE_START_ADD + i, dataWrTestPatt + i, FTFC_EEP_IP_PAGE_LONGWORD);
if(FTFC_EEP_IP_STATUS_OK != retJobResultType)
ヤージュ
Exit_Example(FALSE);
0を返す。
}
}
事前に感謝いたします。
「FTFC_EEP_IP_STATUS_BLOCK_INCONSISTENT」はブロックアドレスのアライメントが原因で発生する可能性があります。初期パーティション時に「Preserve this Range from 0x10000000 to 0x1000ffff」以外にEEPROMアドレス設定に関する詳細情報を提供していただけますか?
データフラッシュとEEPROMの設定に使用するFlexNVMパーティションコードを共有してください。どの部分がEEPROMとして1000000から1000FFFFの間に設定されているかを知る必要があるかもしれません。設定によっては、EEPROMデータを読み取る必要がある場合もあります。
詳細については、AN11983「S32K1xx EEPROM機能の使用」を参照してください。
こんにちは、 @ck182 さん。
FlexNVMでEEEが有効になると、FlexNVM(バックアップ)はアプリケーションコアから直接アクセスできなくなります。その時点では、EEPROMとしてのFlexRAMのみがアクセス可能です。
FlexNVMがEEP_FTFC_LOAD_AT_RESET_ENABLEDでパーティション分割されている場合、リセット後にバックアップフラッシュの内容が自動的にFlexRAM(EEPROM)にコピーされ、EEERDYフラグが設定されます。
main()関数の冒頭で、以下の点をご確認ください。
EEERDY == 1、
DEPARTには有効なパーティションコードが含まれており、
FlexRAM(EEPROM)に有効なデータが存在しますか?
よろしくお願いいたします。
ダニエル
こんにちは、 db16122さん。
ご返信ありがとうございます。
元のサンプル「Eep_Ftfc_Ip_Example_S32K144」から何も変更していません。
また、このコードを実行すると、次の点に気づきました。
retJobResultType = Ftfc_Eep_Ip_Write(EEP_ERASE_START_ADD + i, dataWrTestPatt + i, FTFC_EEP_IP_PAGE_LONGWORD, FALSE);
この例では、RAMのアドレス0x14000000に書き込みが行われていますが、これは正しいものの、Flexメモリには「何か」が書き込まれません。
「somethings」はRAMだけでなく、アドレス0x10000000から始まるFlexメモリにも書き込まれるはずですが、変化が見られません。
自分が何が悪いのか理解できません
私はDS3.4とRDT 1.01を使用しています。
よろしくお願いします。