- 精华
- 0
- 帖子
- 223
- 威望
- 0 点
- 积分
- 225 点
- 种子
- 0 点
- 注册时间
- 2005-5-28
- 最后登录
- 2017-2-7
|
本帖最后由 jpno1 于 2011-11-7 09:55 编辑
刷写全民自制的时候经常会碰到nand坏块, 这里稍微写一下关于坏块的处理。 如果那里写的不对,欢迎指正。
原始固件用nandpro读取出来, 如果读取中提示250 bad block,说明nand有坏块, 这时候读取出来的固件是已经经过系统remap的,一定要保存好。 如果机器出了问题, 直接把这个固件原样刷回去就可以了。
原始备份出来有坏块的固件, 如果在电脑上用程序合成其它固件的话, 可能会出错,因为坏块对应的那部分数据被重定向到其它位置去了, 这时候就需要用nandpro之类的程序把原固件修复, 修复之后才能用来合成。
合成好的固件如果要刷回机器, 需要先把坏块对应的数据再次搬回到原先的位置,然后再刷回到机器里。
举个栗子:
原始16m固件内提示有坏块, 位置是0x13c, 在电脑上用flash tool 打开原始固件, 发现13c块里的数据被搬到3FF位置上了。
如果要合成固件, 需要
1. 读取3FF位置上的内容, nandpro命令是
nandpro 原始固件.bin: -r16 13C.bin 3FF 1
2.从上一步提取出来的13C.bin就是本来应该写在13C位置上的正确数据,被系统移动到3FF位置上了。 现在要把这部分内容写回到固件13C的位置上,替换掉错误数据, 首先复制 原始固件.BIN 重命名为 修复的固件.BIN, 然后用nandpro
Nandpro 修复的固件.bin: +w16 13C.bin 13C 1
这样之后, 再用flash tool检查修复的固件, 会发现坏块已经没有了. ( 有可能会发现3FF上还有13C块上的数据, 是因为3FF位置没有清空, 无关紧要)
修复的固件可以用来合成各种自制固件, 或者用来制作xell的ecc文件.
合成好的固件, 直接写回机器可能会出错, 因为nand的13c是坏的, 写入的时候会把好的数据写到坏块上, 造成数据丢失, 所以应该把13C的内容提取出来写回到3FF位置, 命令和上面的差不多:
读取 nandpro 合成的固件.bin: -r16 13C合成.bin 13C 1
写入 nandpro 合成的固件.bin -w16 13c合成.bin 3FF 1
|
|