有天,朋友来电话,告诉他单位的小局域网因为频繁停电损坏了三块主板,向我求救。于是我马上出动,到达现场后,采用替换法检查,发现主板的bios出现了问题无法正常开机。用热插拔法修复无效,断定是bios 芯片物理损坏。
朋友使用的主板是品牌机整合主板,cpu是p120(够老的),主板bios 芯片为intel的p28f002bx芯片,是2mbit的芯片。用编程器测试,发现三片芯片均有不同程度的损坏,已不能使用。由于这种芯片现在早已找不到了,因此只能采用手头上现有的winbond的29c020代用。用编程器把好芯片的数据读出,然后分别写到三片at29c020中。没想到,当把写好的芯片插到主板上后,通电开机却没有反应,修复没有成功。
28f002bx是intel推出的第一代可擦除bios芯片,它的内部数据结构是分块的(如图所示)。其中的boot block块是存储bios基本启动信息的,它支持isa形式的显卡,当bios升级失败后,可以从boot block启动并修复bios,这种设计思路被bios刷新程序采用并一直延续到今。在擦除时,28f001是以byte为 小修改单位的;在写入数据时,芯片上要加上一定的编程电压,并且boot block块内数据的擦除要加上特定的删除电压。
29c020是flash rom(快闪rom),属于单电压芯片。flash rom和eeprom芯片 大的区别是,在删除数据时,不需加特定的编程电压。另外,flash rom在删除资料时,并非以byte为基本单位,而是以sector(又称block)为 小单位。sector的大小随厂商的不同而有所不同,只有在写入时,才以byte为 小单位写入。
以往主板上用的还有27系列的芯片。27系列的芯片属于eprom,其内的资料是用eprom擦除器(eprom eraser)发出的紫外线照射来擦除的,并且要用专用的编程器才可以把资料重新再写入,往芯片中写内容时也必须要加一定的编程电压。
在主板上,bios芯片平时只处于读数据的状态,从原理上分析,27、28、29系列的芯片是可以代用的,如果不考虑升级的因素,三者是兼容的。因此我怀疑,问题可能是属于主板太老,不支持按页刷新的芯片,亦即老主板与新型芯片“门不当,户不对”。找来一片28f020(也是老古董啦,现在市面上基本已找不到了),在编程器上刷入程序,插到主板上,开机恢复正常,证实了自己的猜测。为了进一步证实上述分析的正确性,用一片27c020写入程序,插入主板上bios插座后,通电开机,机器也能正常工作,由此说明此主板的确不支持新式的芯片。
尽管从理论上讲,27、28、29系列的芯片是可以代用的。但实际应用中要注意,有些主板可能由于设计方面的原因,对有些类型的芯片可能不能很好地支持,若遇到这种情况,可以找不同类型的芯片多试几次。