我们发现,当由于断电/RESET情况导致Fls_Erase()操作中断时,数据闪存会发生损坏。系统重启后,受影响的数据闪存区域似乎已损坏。
在随后尝试使用Fls_Erase()恢复扇区时,当 Flash 驱动程序在执行擦除操作之前尝试访问受影响的地址范围时,会生成 ECC 错误。因此,擦除操作无法成功进行。
我们希望了解闪存控制器在此场景下的预期行为,并请求就以下几点提供指导:
目标设备: [MPC5746C]
软件栈: [AUTOSAR / 裸机]
你好,
如果在Fls_Erase()操作进行期间断电,数据闪存是否会损坏?
是的,这是正确的做法。由于编程/擦除过程中断电,闪存中的数据将与 ECC 纠错码不匹配。
在发生此类中断后,访问部分擦除/损坏的闪存扇区时,是否预期会出现 ECC 错误?
是的。
是否有任何机制或寄存器可以暂时禁用 Flash ECC 检查,以便擦除和恢复损坏的 Flash 扇区?
不,这是硬件的永久性功能。
断电后,对于包含无法纠正的ECC错误的闪存扇区,推荐的恢复程序是什么?
在这种情况下,您需要初始化(擦除)损坏的闪存块。一旦完成 ECC 纠错,闪存中的数据将与 ECC 纠错匹配,访问不会触发 ECC 错误。
有关闪存擦除步骤,请参阅参考手册:
顺祝商祺!
Peter