2359673_zh-CN

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

2359673_zh-CN

2359673_zh-CN

S32K1 EEprom RTD

您好,

我不明白为什么我使用的 Eep_Ftfc_Example_S32K144 可以正常工作。

但如果我删除擦除和写入代码,只想读取先前存储的数据,则会出现错误"FTFC_EEP_IP_STATUS_BLOCK_INCONSISTENT" 。

我已经为设备设置了 " 保留分区 " 和 " 保留这个范围 " 从 0x100000000 到 0x1000fff。

因此,第二轮代码是


/* 初始化时钟 */
Clock_Ip_Init(&Clock_Ip_aClockConfig[0]);
/* 仅在 EERAM 未分区时进行分区,代码为 0x4 */
Eep_DepartParitition(T_EEEPROM_SIZE);
/* 初始化 Eep 驱动程序 */
Ftfc_Eep_Ip_Init(&EepFtfcCfg_VS_0);

///* 通过写入擦除值擦除内存 *///for (i=0; i < EEP_WRTESTPATT_SIZE; i+=4U)
//{
//retjobResultType = ftfc_EEP_Ip_Ip_EP_EEP_ADD + i,FTFC_EEP_IP_PAGE_LONGWORD,FALSE);//if (FTFC_EEP_IP_IP_IP_IP_PAGE_IP_PAGE_IP_FALSE);
//if (FTFC_EEP_IP_IP_IP_IP_IP_STATUS_OK!
= retjobResultType)
//{//Exit_Example (FALSE);//返回 0;//}
//}///* 向 eeprom 设备写入一个或多个完整的 eeprom 页面 *
///for (i=0; i < EEP_WRTESTPATT_SIZE;
i+=4U)/
/{/

/retjobResultType = Ftfc_EEP_Ip_Write (EPRESULTTYPE (E+=4U)//{/
/retjobResultType = Ftfc_Eep_Ip_Write EP_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);
return 0;
}
}


提前谢谢您。

Re: S32K1 EEprom RTD

"FTFC_EEP_IP_STATUS_BLOCK_INCONSISTENT" 可能是由块加法对齐引起的,除了在初始分区时保留此范围" 从 0x10000000 到 0x1000ffffff 以外,您能否提供更多有关 EEPROM 地址设置的信息?

Re: S32K1 EEprom RTD

嗨,@ck182、

一旦在 FlexNVM 上启用 EEE,应用内核就不再能直接访问 FlexNVM(备份)。此时,只能访问作为 EEPROM 的 FlexRAM。
如果 FlexNVM 是使用 EEP_FTFC_LOAD_AT_RESET_ENABLED 进行分区的,则在 RESET 后,备份闪存的内容会自动复制到 FlexRAM(EEPROM)中,并设置 EEERDY 标志。

在 main() 开始时,请确认一下:

EEERDY == 1,
DEPART 包含有效的分区代码,且
有效数据存在于 FlexRAM(EEPROM)中?


此致,

丹尼尔

Re: S32K1 EEprom RTD

你好 db16122,

感谢您的重播。

ck182_0-1777878996851.pngck182_0-1777878996851.pngck182_0-1777878996851.png

我对"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 Memory 中写入"某处" 。

我希望"somethings" 不仅在 ram 中写入,而且从地址 0x10000000 开始在 Flex 内存中写入,但我从未看到任何变化。

我不明白我错在哪里

我使用的是 DS3.4 和 RDT 1.01。

谢谢!




Re: S32K1 EEprom RTD

请分享用于数据闪存和 EEPROM 设置的 FlexNVM 分区代码。它可能需要知道在 1000000 和 1000FFFF 之间哪个部分被设置为 EEPROM。您可能需要根据设置读取 EEPROM 数据。

更多详情,请参阅 AN11983 使用 S32K1xx EEPROM 功能

Re: S32K1 EEprom RTD

@danielmartynek,抱歉回复晚了。由于其他工作,我已经停止了 RTD EEPROM 的相关工作。
现在我已经解决了这个问题。
所有代码和 S32K144 示例都能正常工作,但问题是 PEmicro 调试器每次都会进行大规模擦除。
所以我改用了 sector erase alrgortim 算法,而不是 pflash_dflahs_eeprom algortim 算法,现在可以正常工作了。

我也尝试过保留 pflash_dflahs_eeprom 算法并保留 FlexNMV 内存,但这个方法行不通。
对你来说是否正确?
提前感谢,再次为我的回复过长道歉。

Re: S32K1 EEprom RTD

你好@ck182 ,

我明白了,谢谢你的更新。

这些是PE Micro的专有算法。

请联系PE Micro技术支持。


BR,丹尼尔

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