如何将3M文件写入4M芯片
可能好多网友看到此文章的题目,会感到很奇怪,将低于bios芯片容量的文件,使用编程器写入,那不是太简单了吗;其实如果直接将3m文件使用编程器写入 4m芯片,这肯定是可以正确写入的,但用此法写好的芯片,插到主板上机器是无法启动;即然编程正确,那为什么无法使用呢?其实原因我们可以从芯片地址上找到答案的。
我们知道,3m芯片地址是从0000h-5ffffh,4m芯片地址是从0000h-7ffffh,二者芯片相差了1ffffh的空间,即1m容量。如果我们直接使用编程器写,那么编程器默认是从0000h地址开始写入,因文件是3m的。因此文件是写入4m芯片从0000h--5ffffh之间的空间,而且从6000h--7ffffh之间的地址为空,即ff。而主板启动时,首先需要读取bios芯片的最后端的跳转命令,而现在4m芯片的尾部为空字节,因此无法读取到正确的跳转命令,因此系统也就无法启动了。
对于直接将3m文件写入4m芯片,文件在芯片中的位置,可参考下图。
因此,我们可通过将3m文件头部,加入1m空字节,来实现将3m文件合并成一个4m文件,然后再使用编程器写入4m芯片的方法来解这个问题。
修改过程是很简单的,使用ultraedit32即可完成。相关文章可从此下载:ultraedit32
本文以华硕p4vp-mxbios主板为例,其使用sst 49lf030 lpc 3m芯片,由于bios芯片损坏,无法找到3m的芯片,因而使用sst 49lf040芯片代替。
从华硕网站下载到bios文件,其文件大小为384kb,即3m。首先运行ultraedit32,选择[文件]--打开,调入需要修改的文件p4vp1013.ami。
由于4m芯片为512k,文件大小应是从地址0000h--7ffffh;3m文件的最后地址为5ffffh,因此我们还需要加入2000h地址的空字节,由于20000h为16进制,我们还需要将其换算成10进制文件才可,这里我们就要用到win自带的计算器了。在开始--所有程序--附件--计算器,点击工具栏--查看--选择科学型;首先选择十六进制,然后从键盘输入7ffff-5ffff=2000,然后选择十进制,即可得到10进制 131072,正好128k即1m的字节数。
点击ultraedit32工具栏--文件--新建,建立一新文件,在右侧编辑栏中,随意输入几个字符,然后回车。然后选择工具栏--编辑--hex编辑;然后选择右侧编辑栏中输入的数据,按鼠标右键删除。这样即可得到一个空字节的二进制文件。
将鼠标选择0000h地址处,也就是文件的开始地址,选择ultraedit32工具栏--编辑--hex插入\删除,在出现在操作界面中,选择插入,在插入\删除的字节数量中,输入我们开始算出的131072,然后确定。
确定插入131072字节后,由于默认插入是20的空字节,因此我们还需要将20全部替换成ff;选择ultraedit32工具栏--搜索--替换,在替换界面中--查找内容中输入20,在替换为输入ff,其它选项都不选择,然后选择全部替换,所有字节即替换成ff。
选择ultraedit32工具栏--编辑--全部选定,选择后,点鼠标右键,选择复制。然后点击左侧编辑中,双击开始打开的p4vp1013.ami,将鼠标移到文件头部,即0000h处,按鼠标右键,选择粘贴,即可从0000h地址处,插入131072字节的空字节。
此时文件的最后地址应是7ffffh,而且内容应与3m文件的最后地址内容一样。至此文件就修改完成,我们选择ultraedit32工具栏--文件--另存为,将文件另行保存即可。
然后将修改好的文件,使用编程器写入4m芯片,即可顺利完成主板启动;此文章内容已经使用华硕p4vp-mxbios主板测试通过。
其实将3m文件写入4m芯片,以上方法是将3m文件修改成4m文件,然后再写入。其实还有简单的方法,如果你有专业的编程器如vp-480,插上4m芯片,并选择好芯片型号后。在调入bios文件时,在出现读文件到缓冲区界面时,在缓冲区开始地址处,输入文件在缓冲区的开始地址,由于3m文件前要加入 1m即1ffffh的空字节,因此开始地址输入20000,确定即可。
关于vp系列编程器介绍,请参考此联接vp系列专业编程器
然后选择编程,即可方便将3m文件正确写入到4m芯片中;而且同样可以正常的启动主板。
耗子随便说一下,其实在以前介绍的将2mbios文件,合并后写入到4m芯片中,使用的copy命令,其原因,与本文介绍也是一致的;也是由于系统读取芯片尾部跳转命令的原因。我们使用拷贝命令,将两个2m文件,头尾相接,合并成一个4m文件,其结果与在2m文件头部加入2m空字节是一样的结果的。
主要是4m文件是2m文件的一倍,因此直接拷贝,方便操作;如2m文件为2.bin,我们在dos状态下,使用copy 2.bin/b 2.bin/b 4.bin回车即可完成4m文件的合并。也可按文章介绍,使用ultraedit32,在2m文件前面加个2m的空字节,其结果都是一样的。
其实3m文件,也可采用copy的方法,在3m文件前面加上一个1m空字节的文件,这个文件可用ultraedit32制作,耗子在此已经提供一个做好的1m空字节文件,网友可从此下载:1m文件下载;在dos或win环境msdos方式下,使用copy 1m.bin/b 3m.bin/b 4m.bin(这里1m文件指1m空文件 3m指3m bios文件 4m指合并后的4m文件),需要注意的是,在copy合并时,一定要是1m.bin/b 3m.bin/b的顺序,因为这样是在1m文件后面加上3m文件,否则正好相反,起不到修改bios的作用,这一点一定要特别注意。
注意:
1、文件修改时,在ultraedit32编辑修改时,确定地址的准确性是很重要的。
2、如用编程器直接刷新,一定在调入文件时,要确定好bios文件在缓冲区中的开始地址。
3、如果使用copy命令合并3m文件时,一定要注意是1m.bin/b 3m.bin/b的顺序,不能是3m.bin/b 1m.bin/b反过来,否则将失去修改的意义,这一点要特别注意。
4、使用copy合并时,一定要加/b参数,代表按二进制合并。