未标题-1.gif (1829 字节)

                网站论坛  返回主页  联系我们  打印此页    QQ:125081447    

                      BIOS维修网站>> BIOS维修 >> BIOS基础知识              

不同版本的修改和刷新程序
对BIOS的影响的原因

:此文章图片及文字为BIOS维修网站所有,请不要随意转载或用于其它商业目的;如要转载,请注明出处。

   不知广大读者在修改和刷新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*)(图一),

21.gif (5564 字节)

在找到的第一个值的那一行的倒数第三个字节的高4位的值为边界值,计算方式,文件的大小(bit)-10000,再将边界值放在第4位上即得(用此法可调控在CBROM中的显示的压缩区的可用大小)。至于文件首部的压缩代码,则由CBROM寻找-lh5-(图二),

22.gif (4247 字节)

在SYSTEM BIOS后的压缩块开头处定位,一般为25(lzh文件规定此值表示文件头长度)读到FF后即认为代码已完。然后压缩即将加入的模块文件后(这就是我们看到的压缩百分比),将其放到剩余的相应空间中。

BIOS文件虽然只是一段被压缩的二进制代码,但不同版本的BIOS文件,其内部结构也是大不相同的,这也就造成了不同版本的CBROM寻址错误的原因。这是由于4.51版本的BIOS(也有1M和2M之分),其文件的SYSTEM BIOS必须在文件的1M处,因此1M文件的SYSTEM BIOS在00000H处(图三),

23.gif (4446 字节)

2M文件的SYSTEM BIOS在20000H处(图四);

24.gif (5391 字节)

其文件名全为original.tmp,正常大小为128K(我们在用MODBIN打开BIOS文件时,其临时文件original.tmp即为解压缩的SYSTEM BIOS);这一部分是BIOS文件的基础部分,其开头为-lh5-(一般为25H)。BIOS的BOOT区,1M文件在1E000H处(图五),

25.gif (5400 字节)

2M文件在3E000H处(图六),

26.gif (5034 字节)

这一点二者是对应的;BIOS文件的结尾的MRB*处,即是结束命令也是一条跳转命令。而6.0版本的BIOS(主要为2M、4M文件),其SYSTEM BIOS区,2M文件又是从00000H处开始,4M文件从20000H处开始(与1M文件大致相同,便寻址空间却发生的变化)(),BOOT区2M文件在3E000H处,4M文件的BOOT区在7E000H处(图七)

27.gif (5404 字节)

通过上面我们介绍的CBROM工作原理,我们不难发现,正是由于BIOS文件的寻址空间发生了变化,才使得不同版本的CBROM只能修改相对应的BIOS文件。

通过以上的介绍我们知道了,不同版本的修改程序针对不同版本的BIOS,是由于28.gif (15805 字节)BIOS文件内部结构的不同,造成CBROM寻址错误所致。那么,平时我们在刷新BIOS时,使用的是刷新程序正确,而且BIOS文件也正确,但运行刷新程序;输入新BIOS文件的正确路径,系统提示是否保存备份BIOS时,我们选择“Y”确认保存时;或选择不保存“N”,系统提示是否刷新,我们选择“Y”确认刷新时;刷新程序却没有任何提示,而是直接退出,回到DOS提示符下,而换用一些其它版本的刷新程序,却可以正常刷新。难道这种情况(现象)也与BIOS文件的版本有关吗?

其实这主要与BIOS的载体,BIOS芯片有关(表面上不同版本的刷新程序只对应相应版本的BIOS文件,具体原因随后介绍)。对此,我们先了解一点BIOS芯片的知识。BIOS芯片作为BIOS的载体,主要是存储BIOS文件,而且保障BIOS文件能够在此内正常运行(这一点与磁盘不同,ROM芯片既可以存储又可以运行,而磁盘只能存储,不能运行;因为磁盘上的程序运行,是在内存中进行的)。BIOS芯片按类型可分为EPROM(如27系列)、EERPOM(28系列)、FLASH ROM(29、39等系列)。BIOS芯片(存储器)是通过外部接口(引脚)与系统交换数据的,外部接口(引脚)可分为:数据线、地址线、控制线、电源线(图八)。地址线用来确定数据所在的地址,数据线用来输入和输出数据。控制线包括CEOEWECE是片选信号,当CE为低电平时,芯片被选中;OE是输出允许,也是低电平时有效,当OE为低电平时,允许数据输出,也就是可以读取芯片中的内容,当OE是高电平时,输出被禁止,无法读取内容;WE为编程允许,也是低电平有效,当WE为低电平时可以对芯片进行编程(写入),当WE为高电平时不能对芯片进行编程。芯片无论是读取、擦除还是编程,都需要各种信号按一定的时序、一定的电平相互配合才能完成,控制信号时序是由编程程序来完成的。完成这段时序的过程,也称为刷新流程(其也是一段程序码,由生产厂家提供,同型号的芯片,虽然生产厂家不同,但是其刷新流程是一致的)。不同芯片,其控制时序不同,那么刷新程序又是如何识别芯片的型号呢?其实,每一种芯片,都有自己的标识,这就是芯片ID(也称为芯片的身份证),由于不同的芯片,有不同的ID,因此刷新程序就是通过读取芯片的ID,来分辨不同的芯片,同时根据其芯片ID来调用不同的刷新流程代码(控制程序),来完成对芯片的编程的。

正是由于每一种不同类型的芯片(存储器),所对应的刷新流程不同,才使得(不同版本)刷新程序,只能对应(不同版本)相应的BIOS文件(这种情况(现象)虽然与BIOS文件版本没有直接的关系,但也存在间接的关系)。其原因(间接关29.gif (27403 字节)系)是由于不同版本的BIOS所处的时代不同,所用的存储载体(BIOS芯片)也不同而造成的。因为一些高版本的刷新程序,可能在不断升级支持新芯片的同时,也删除了对一些旧(老)芯片的支持(其实是否支持一种新芯片,主要是将其刷新流程加入到刷新程序中,而刷新程序的升级,一般情况下只是支持了一些新芯片而已);刷新程序在启动时(以AWARD刷新程序为例),在我们确认保存或确认刷新时,刷新程序要检测主板上BIOS芯片的ID,如检测到,则在程序的上端显示相对应的芯片型号(图九),然后根据BIOS ID(芯片的ID)来寻找相对应的刷新流程,只有找到其对应的刷新流程后,才能按刷新流程来控制对芯片的读出或写入。但如果刷新程序无法找到芯片的ID,因此也就无法找到相应的刷新流程,此时刷新程序由于无法完成对芯片的读写,就会没有任何提示,而直接退出。对于AMI的刷新程序,其刷新原理与AWARD刷新程序是一致的,因为二者只是BIOS文件类型的不同(都是二进制压缩文件),但其载体(BIOS芯片)却是一致的(图十)。

通过以上介绍,我们知道了不同版本的修改程序只能针对相应版本的BIOS文件,是由于不同版本的BIOS文件,其内部结构不同造成的;而不同版本的刷新程序,只能针对相应版本的BIOS文件,是由于所刷新的BIOS芯片不同而造成的。那么在以后的修改或刷新过程中,再出现以上的情况(现象),我们就知道其原因了,也就可以方便的解决了。那就是更换不同版本的刷新或修改程序。

200.gif (15562 字节)

笔者注:有不少网友说自己下载的BIOS文件的扩展名不是BINROM,而是F8F3,问是否自己的BIOS文件不正确呢?其实BIOS文件只是一个压缩的二进制文件,因此我们在刷新和修改时,只要输入完整的文件名和扩展名即可。也用在WIN下直接将其扩展名改为BIN或在DOS下用RENAME修改。

 

建议使用Netscape4.0或IE 4.0以上版本,以800*600浏览
Copyright © 2001 BioSrepair.com All Rights Reserved   鲁ICP备05007673号
山东.烟台.BIOS维修网站 网络耗子制作完成  Email:diybios@263.net  QQ:125081447
电话:0535-5482905  传真:0535-5481905