努力回帖!赚银两,赚积分 努力回帖!赚银两,赚积分 本帖最后由 飞虎侍郎 于 2022-5-5 10:15 编辑
最近败了一个TL866II PLUS编程器,只是业余玩玩,否则就是直接发烧 T56 了,嘿嘿。
“谈虎色变”之 Nand Flash 坏块管理。
对编程器而言,对坏块可以采取“视而不见”,TL866II PLUS已经做得很好了,只是用户没有真正地理解。
闪存坏块管理跟编程器一根毛线的关系都没有,是使用闪存芯片的设备软件编程者的事,你在编程器上瞎忙的结果就是开不了机——不能正确引导OS或相关程序。
现在的量产技术完全能做到无坏块了或坏块很少,有坏块的都流入了黑市。我随便抓了10个正品拆机芯片,其中8个无坏块,另两个都是只有一个坏块。55元包邮的中兴E8820S,一看就是锻炼过度,但同样无一坏块,反复烧写了多少次,仍是0 bad blocks。
扯远了,言归正传:从你提供的两张图来看,左图载入的可能是路由器通过Breed备份下来的编程器固件:128M的full.bin。右边是用WinHex打开了的三个文件,其中最右边的选项卡才是你要比较的源文件(只是推测),而你选择的是最左边的文件,红线处的地址已经超过了300Mb了,一个只有128Mb的文件去同大于300Mb的不同源文件去比,别人还没迷糊,估计你自己得先糊涂了。
左图显示bin的只是Block 0,你看到的只是0~1023个块中的第一个块,是写满了(128+4)k=132k(0x00020FFF)数据的,很显然还没有写完,会在Block 1中继续写,烧好闪存后,不要再检查坏块了,如果你烧好闪存检测坏块时,会发现一堆“坏块”,最少0块是“坏块”,天啊……。一般Bootloader程序不会很大,很少跨过2个块,所以Nadn Flash 0和1块坏了是不可能出厂的,就象硬盘0磁道坏了的道理是一样的。
如果你想用Breed引导路由器,其实很简单:将正确的Breed下载下来,打开XgPro程序,载入Breed固件,选择正确的芯片型号,直接点击烧录,几秒终结。任何多余的操作都是瞎JB胡来,校验成功,上机就100%的会成功亮机,什么?还不行,那一定是你焊功差劲,虚焊了。进入Breed后就简单了,H大神已经帮你做好了一切,即使闪存内有坏蛋,也不需要你乱操心,一切有H(Him,Himself,他、它?)……
如果你非要挑战自己,将路由器固件也一道写进去,那你得知晓:每个分区的起始地址。将bin文件(固件)在你非常熟悉的16进制编辑软件里(在Xgpro烧录软件里编辑,我是搞不了,也不敢去搞),分段(分区)编辑好。Bootloader固件(Breed)一定要从0x0000:0000开始写入,检查无误,Ctrl+S后,在Xgpro烧录软件上载入。选择正确的闪存型号,程序会自动按块顺序给你调入缓存,如果你插在编程器上的闪存是无坏块的,直接点击“烧录”就OK了;如果知道有坏块或不知道有坏块时,就一定要做这一步:点击“擦除”按钮(擦除前请先备份闪存内的有用数据哦),再检查一下有无坏块,如果有,就记下坏块的编号,退出坏块检查窗口,在主程序窗口中的块号(Block@File)选择框内填入刚才记录下的坏块号,逐一查看这些块是不是全是FF或00,如果不是,就换一个闪存进去再检查坏块号,直到找到符合坏块内是无用的FF或00的闪存,就可以点击“烧录”了,烧录结束,当然会提示烧录失败,但绝对可以上机点亮机器。如果不放心,可以再读取一次闪存,检验无误,另存为一个文件,再到比较文件程序内(如UltraCompare程序)和源文件进行比较,如果有差异的部分全是FF或00,它们就都是无用的数据,说明烧录到闪存内的数据和源数据是等同的,上机是不会有问题的。上机运行后,OP、Pb……会接管机器,怎么管理坏块的事你别管了,你想管它也不可能告诉你的,其实它自己也不一定能管理得很好。
本文纯属胡编瞎造,版权没有,拷贝自由。如你学废了,实属巧合,肯定与H大神无关。
谢谢分享, 一切为了银子
页:
1
[2]