请问大家是怎么处理EEPROM的坏块的?
我现在有一个表要存到EEPROM里面,如:01地址存的是:1 //序列号,MCU先找到它,在根据它找到它对应的数据
02地址存的是:22 //系列号1所对应的数据。
03地址存的是:6 //序列号
04地址存的是:AA //系列号6所对应的数据。
05地址存的是:10 //序列号
06地址存的是:CC //系列号10所对应的数据。
.........
现在我在写EEPROM的时候发现04地址是坏块,于是我就要写成:
01地址存的是:1 //序列号,MCU先找到它,在根据它找到它对应的数据
02地址存的是:22 //系列号1所对应的数据。
03地址存的是:6 //序列号
04地址存的是:XX
05地址存的是:XX
06地址存的是:AA //系列号6所对应的数据。
07地址存的是:10 //序列号
08地址存的是:CC //系列号10所对应的数据。
.........
但是我在以后读EEPROM的时候怎么知道04地址的数据是错误的,而去读06地址的数据呢? 把数据以反码的形式在EEPROM里面再保存一份. 谢谢,这个办法不错,但如果我有999个序列号要查,再加上再保存的那份,是不是数据量有点大呢? 我的办法是换个好的片子。 同硬盘RAID一样不管你用RAID* 不用两倍的空间存储同一数据的话数据坏了都没办法找回来
楼上说的换个好片子在没坏之前谁知道哪个片子好不好?当然,首先要选择采购可靠的芯片坏的机率小一些
你是999个序列号我按一K个算 一个序列号按32byte算(不够长? 我没见过更多的) 就是32K一个24C256即可
备份一次两片24C256或一片24C512
也不算大嘛 如果说你这个设备上电要同时读取全部序列号那我只能说是很BT 楼上说的正确,折腾这种事情的唯一理由就是芯片的不良率成品理论上就是存在的。 多谢。 原来eeprom和flash都有坏块啊! 大胡子说得对。
lz没有看过flash坏块管理吧? 简化一下就能用了,第一个字节保存逻辑地址偏移
页:
[1]