不同版本的修改和刷新程序 |
|
不知广大读者在修改和刷新BIOS时,是否遇到过这样的现象。我们在使用一些不同版本的修改和刷新程序,对一些正常的BIOS文件却无法修改和刷新;而解决的方法是换用另一些版本的修改和刷新程序。那么这一切是什么原因造成的呢?可能不少网友不能解答这个问题,下面笔者就从修改、刷新程序的本身以及BIOS构造两方面来作一解答。
由于目前BIOS类型主要以AWARD BIOS为主,而且一些修改程序也多针对于AWARD BIOS。因此本文以AWARD
BIOS修改程序CBROM和刷新程序AWDFLASH为例为作一说明(对于AMI
BIOS的读者可能没有什么帮助,但刷新方面两种BIOS却是一致的)。
我们目前对BIOS修改,只是局限于将一些其它主板的模块加入到自己的BIOS中(或使用MODBIOS修改一些简单的文字信息);在使用一些高版本的修改程序修改BIOS时(有些网友认为,修改程序的版本越高,修改功能和对BIOS的支持就越好),出现文章开头所叙的原因。主要是由于使用的CBROM的版本太高,而修改的BIOS文件的版本太低的缘故。我们知道,目前AWARD
BIOS主要有4.51 和6.0两个版本,而不同版本的CBROM是针对不同版本BIOS的,这是因为不同版本的BIOS文件,其内部结构是大不相同的(这也是CBROM不断升级的原因)。 CBROM本身即为修改和压缩程序,我们在用CBROM加入新模块时,CBROM首先分析BIOS文件的大小,然后读取压缩区的边界值,读者可以自己用HEX编辑器查找2A424253532A(显示为*BBSS*)(图一),
在找到的第一个值的那一行的倒数第三个字节的高4位的值为边界值,计算方式,文件的大小(bit)-10000,再将边界值放在第4位上即得(用此法可调控在CBROM中的显示的压缩区的可用大小)。至于文件首部的压缩代码,则由CBROM寻找-lh5-(图二),
在SYSTEM
BIOS后的压缩块开头处定位,一般为25(lzh文件规定此值表示文件头长度)读到FF后即认为代码已完。然后压缩即将加入的模块文件后(这就是我们看到的压缩百分比),将其放到剩余的相应空间中。 BIOS文件虽然只是一段被压缩的二进制代码,但不同版本的BIOS文件,其内部结构也是大不相同的,这也就造成了不同版本的CBROM寻址错误的原因。这是由于4.51版本的BIOS(也有1M和2M之分),其文件的SYSTEM BIOS必须在文件的1M处,因此1M文件的SYSTEM BIOS在00000H处(图三),
2M文件的SYSTEM BIOS在20000H处(图四);
其文件名全为original.tmp,正常大小为128K(我们在用MODBIN打开BIOS文件时,其临时文件original.tmp即为解压缩的SYSTEM BIOS);这一部分是BIOS文件的基础部分,其开头为-lh5-(一般为25H)。BIOS的BOOT区,1M文件在1E000H处(图五),
2M文件在3E000H处(图六),
这一点二者是对应的;BIOS文件的结尾的MRB*处,即是结束命令也是一条跳转命令。而6.0版本的BIOS(主要为2M、4M文件),其SYSTEM BIOS区,2M文件又是从00000H处开始,4M文件从20000H处开始(与1M文件大致相同,便寻址空间却发生的变化)(),BOOT区2M文件在3E000H处,4M文件的BOOT区在7E000H处(图七)
通过上面我们介绍的CBROM工作原理,我们不难发现,正是由于BIOS文件的寻址空间发生了变化,才使得不同版本的CBROM只能修改相对应的BIOS文件。
通过以上的介绍我们知道了,不同版本的修改程序针对不同版本的BIOS,是由于
其实这主要与BIOS的载体,BIOS芯片有关(表面上不同版本的刷新程序只对应相应版本的BIOS文件,具体原因随后介绍)。对此,我们先了解一点BIOS芯片的知识。BIOS芯片作为BIOS的载体,主要是存储BIOS文件,而且保障BIOS文件能够在此内正常运行(这一点与磁盘不同,ROM芯片既可以存储又可以运行,而磁盘只能存储,不能运行;因为磁盘上的程序运行,是在内存中进行的)。BIOS芯片按类型可分为EPROM(如27系列)、EERPOM(28系列)、FLASH
ROM(29、39等系列)。BIOS芯片(存储器)是通过外部接口(引脚)与系统交换数据的,外部接口(引脚)可分为:数据线、地址线、控制线、电源线(图八)。地址线用来确定数据所在的地址,数据线用来输入和输出数据。控制线包括CE、OE、WE;CE是片选信号,当CE为低电平时,芯片被选中;OE是输出允许,也是低电平时有效,当OE为低电平时,允许数据输出,也就是可以读取芯片中的内容,当OE是高电平时,输出被禁止,无法读取内容;WE为编程允许,也是低电平有效,当WE为低电平时可以对芯片进行编程(写入),当WE为高电平时不能对芯片进行编程。芯片无论是读取、擦除还是编程,都需要各种信号按一定的时序、一定的电平相互配合才能完成,控制信号时序是由编程程序来完成的。完成这段时序的过程,也称为刷新流程(其也是一段程序码,由生产厂家提供,同型号的芯片,虽然生产厂家不同,但是其刷新流程是一致的)。不同芯片,其控制时序不同,那么刷新程序又是如何识别芯片的型号呢?其实,每一种芯片,都有自己的标识,这就是芯片ID(也称为芯片的身份证),由于不同的芯片,有不同的ID,因此刷新程序就是通过读取芯片的ID,来分辨不同的芯片,同时根据其芯片ID来调用不同的刷新流程代码(控制程序),来完成对芯片的编程的。
正是由于每一种不同类型的芯片(存储器),所对应的刷新流程不同,才使得(不同版本)刷新程序,只能对应(不同版本)相应的BIOS文件(这种情况(现象)虽然与BIOS文件版本没有直接的关系,但也存在间接的关系)。其原因(间接关 通过以上介绍,我们知道了不同版本的修改程序只能针对相应版本的BIOS文件,是由于不同版本的BIOS文件,其内部结构不同造成的;而不同版本的刷新程序,只能针对相应版本的BIOS文件,是由于所刷新的BIOS芯片不同而造成的。那么在以后的修改或刷新过程中,再出现以上的情况(现象),我们就知道其原因了,也就可以方便的解决了。那就是更换不同版本的刷新或修改程序。
笔者注:有不少网友说自己下载的BIOS文件的扩展名不是BIN或ROM,而是F8或F3,问是否自己的BIOS文件不正确呢?其实BIOS文件只是一个压缩的二进制文件,因此我们在刷新和修改时,只要输入完整的文件名和扩展名即可。也用在WIN下直接将其扩展名改为BIN或在DOS下用RENAME修改。 |
|
|
|