EMU-ZONE 电子DIY

 
首页制作硬件资料开发资料购买
 
原创稿件 - 《微型计算机》 - 电脑的BIOS
电脑的BIOS

注:请勿转载,如有需求请与刊登的杂志社联系.


一、关于BIOS

  大家应该对BIOS不会陌生。关于BIOS更多一些的联想则是对CIH病毒的心有余悸或者刷新BIOS失败的惨痛经历。其实BIOS并不神秘,从英文字面来理解,BIOS(Basic input/output system)就是基本输入输出系统的意思,也就是说它是写在芯片中的一段程序。我们都知道,电脑包括硬件和软件两个组成部分,二者是缺一不可的,软件最终是要同硬件打交道的,在这中间,起到衔接作用的就是BIOS程序。BIOS程序完成了最底层、最直接的硬件控制。BIOS的种类很多,除了主板的BIOS以外,还有各种适配板卡、设备的BIOS,比如显卡BIOS、驱动控制器BIOS、网卡BIOS、SCSI卡BIOS等等。通过对BIOS的调用,操作系统、应用软件可完成对硬件的操作。

二、BIOS的原理

我们以主板BIOS为例,看看BIOS到底完成了那些功能。

  在主板上都可以找到一片存储器(EPROM或者FLASH ROM)。BIOS程序就固化在这片芯片中。主板的BIOS程序一般包括:基本输入输出系统、系统信息设置、开机上电自检程序、系统引导程序。当你按下电源开关时,首先运行的就是BIOS程序,当电脑完成所有的初始化工作,进入正常状态后,才开始WINDOWS的启动。

那么主板BIOS到底有哪些功能呢?

1.上电自检、初始化硬件、引导操作系统
  电脑的硬件设备很多,当电脑刚上电时,要对这些设备(包括存储器、中断、扩展卡等)进行测试,检测设备工作是否正常等,这种功能是有POST(Power-On Self Test)程序来完成的。这个检测的过程是逐步进行的,BIOS厂商对每个设备都给出了一个代码(POST码),在对某个设备进行检测前,首先要向诊断端口(通常地址为80H)发送该设备的POST码,当该设备测试通过后,再送另一个POST码,对另一个设备进行测试。如果某个设备测试没有通过,则80H的POST码会保留下来,检测程序会中止,并发出报警声。实际上BIOS厂商对报警声也分别做了定义,不同设备出现故障,报警声也是不同的,所以我们可以根据报警声来区分,比如对于AWARD的BIOS,“一长二短”表示显卡故障;一直短促的响表示内存故障。另外我们也可根据POST码来判断故障,市面上有一种POST卡,就是利用的这个原理,它是利用硬件电路读出诊断端口的POST码,并用数码管将POST码显示出来,供我们判断故障用。我们只要根据BIOS厂商提供的POST代码表和POST卡的显示结果,就可快速判断故障部位。

            
                       //图1 POST卡照片

  初始化的过程包括创建中断向量、设置寄存器、对外部设备初始化和检测等。我们在以前的文章中就曾经提到过,电脑启动时,BIOS程序对主板上的时钟发生器芯片的寄存器进行设置,从而确定CPU的工作频率,这个过程就是在这一阶段完成的。初始化的过程是从CMOS RAM中读取硬件的设置信息,根据这些信息对各个设备进行初始化。那么这里提到的CMOS RAM又是怎么回事呢?

            
                       //图2 CMOS RAM照片

  CMOS RAM是一片随机存储器芯片,它的内部保存了当前系统的硬件配置信息和用户对各种参数的设置。可以看出,这部分信息是和BIOS的程序密切相关的,BIOS部分的程序是固定的,基本不需要变化,而与BIOS相关的一些硬件配置信息和参数则是可能随电脑硬件设备的改变或者不同的用户而可能经常发生改变的。所以这部分可能经常改变的数据就被放置到了一片CMOS RAM中去了。

          
                      //图3 CMOS设置照片

  CMOS RAM所采用的存储器是静态RAM(SRAM),可以进行随机的读写。以MC146818为例,它将实时时钟(RTC)的功能与SRAM集成在一起,由于采用CMOS工艺,供电电压和功耗都非常低。

  因为CMOS RAM是随机存储器,所以它内部的信息并不能永久保留,如果芯片掉电,芯片内部的信息就会丢失,所以主板上都有一个3V电池,它就是为CMOS RAM芯片供电的,这样即使主机电源关闭,CMOS RAM也不会掉电,信息也就不会丢失了。不过利用CMOS RAM芯片掉电后数据会丢失这一特性,我们可以得到一个有用的功能--清除CMOS设置。

  在CMOS设置中,有一项设置密码,当你设置了一个密码时,其他人就无法进入CMOS设置去改动各种参数了,当然也会遇到不好的情况,比如密码忘记了或者自己的电脑被别人设置了密码等,为了解除密码,就是要清除CMOS RAM芯片中的内容,很显然,让芯片断电即可。方法有多种,可以去掉主板上的电池,这个方法不是很方便,因为由于电容的问题,你至少要去掉电池15-30分钟,才能使CMOS RAM的内容丢失。有的主板上也提供了清除CMOS RAM内容的跳线,只需要说明改变一下跳线的位置,等一两秒后再恢复跳线位置就能完成对CMOS设置的清除。还有一个办法是,将CMOS RAM芯片的电源和地短路,举例来说,主板上常见的CMOS RAM芯片P82C206,用一根导线将它的74和75脚短路即可。需要注意的是,短路的方法不是很安全,有时可能会损坏芯片。不过有的芯片很特殊,象DS1287,它将电池封装在芯片内部了,所以前面的方法就不管用了,但是DS1287提供了一个RCL(RAM CLEAR)引脚,顾名思义,这个引脚的功能就是清除CMOS,操作很简单,将这个引脚对地短路即可。

  系统引导程序的功能是引导DOS或者其他的操作系统(如windows),程序会依次从软盘、硬盘或者光盘等的开始扇区读取引导记录,如果找到引导记录,将其加载到内存,然后将控制权转交给引导记录,由引导记录加载操作系统。如果找不到引导记录,就会提示“Disk boot failure”。

2.程序服务处理
  这部分是为操作系统和应用软件服务的,对于输入输出方面的硬件操作不必有程序来完成,而是由BIOS中的程序服务处理来完成的,由BIOS向输入输出端口发送命令,完成数据的输入输出功能。

3.硬件中断
  这部分程序主要是处理电脑硬件方面的请求,提供硬件服务。让软件通过BIOS取得硬件数据,又让硬件通过BIOS执行软件的设置。这些操作都是由中断来完成的。各种服务都有一个专门的中断,BIOS的服务功能就是通过调用这些中断程序来完成的。

二、BIOS的种类

  我们知道,BIOS是软件与硬件的一个接口,它是直接与硬件发生关系的,因此BIOS程序是与硬件密切相关的,对于不同的硬件系统,也就存在不同的BIOS程序。

           
                       //图4 AWARD BIOS界面图

AWARD BIOS
  这是目前最主流的BIOS程序,它由AWARD SOFTWARE INC公司推出。它采用纯文本的界面,非常直观,功能齐全,操作简便。

          
                      //图5 AMI BIOS界面图

AMI BIOS
  这是另外一类的BIOS程序,它由AMERICAN MEGATRENDS INC公司开发。它采用图形化界面,支持鼠标操作,操作方法与WINDOWS操作类似,容易上手。

          
                    //图6 PHOENIX BIOS界面图

PHOENIX BIOS
  这是PHOENIX TECHNOLOGICS LTD研制的BIOS程序。它也采用文本界面,但是复合了下拉菜单的形式,因此可在一个画面内完成所有的设置。另一方面,对于各个选项都有简单的说明,使用起来很方便。

  不过现在的BIOS市场变化很大。象PHOENIX就已经被AWARD收购,而AMI也不得不向AWARD靠拢。也许哪一天,BIOS也会变成一个标准的东西。


三、BIOS芯片详解

  BIOS芯片实际上就是一块普通的存储器芯片。程序存储在芯片中,通过芯片的外部接口可对芯片中的程序进行读取或者擦除、写入。存储器芯片的种类非常多,根据原理和工艺,通常把它们分为:EPROM、EEPROM、FLASH ROM等。

            
                       //图7 EPROM芯片照片

                 
                       //图8 OTP EPROM芯片照片

1.EPROM
EPROM是一种非易失型存储器。它具有掉电不丢失的特性,因此很适合作BIOS芯片。

  EPROM的存储单元是由浮栅型场效应管构成。关于浮栅型场效应管,我们在上一篇中已经解释过。对EPROM写入是利用高压使浮栅上带电来实现的。擦除内部数据则是靠紫外线实现的,紫外线有足够的能量消除浮栅上的电子,因此经紫外线照射后,浮栅上将不带电,数据被擦除。为使紫外线通过,EPROM芯片上都有一个石英窗口,我们也可根据这一点来识别EPROM。由于太阳光中也有紫外线,所以一般见到的EPROM上都贴有一张不透明的纸片,这样可以防止经常一定时间后EPROM的内容被擦除。

  在某些批量的应用中,因为不需要反复编程,因此出现了没有窗口的EPROM,即OTP EPROM,这种芯片没有窗口,因此不能擦除,所以只能一次性编程。成本比较低。

  总之,紫外线擦除还是很不方便,既需要专门的紫外线擦除设备、擦除时间也比较长(几分钟)。因此渐渐被可电擦除的EEPROM和FLASH ROM所取代。

                    
                       //图9 EEPROM芯片照片

2.EEPROM

EEPROM是一种电擦除的非易失型存储器。与EPROM相比,它更适合用作BIOS芯片。

  EEPROM的存储单元也由浮栅型场效应管构成。写入时,是利用高压下的隧道效应,令浮栅带电。擦除时,仍是利用高压下的隧道效应,不过电压极性相反,因此又令浮栅不带电。

           
                     //图10 FLASH ROM芯片照片

3.FLASH ROM

FLASH ROM也是一种电擦除的非易失型存储器。目前的板卡上的BIOS基本都属于FLASH ROM。

  如上一篇所述,FLASH ROM也由浮栅型场效应管构成。写入时,利用热电子注入,使浮栅上带电。擦除时,则是利用高压下的隧道效应,使浮栅失去电子。

光了解理论还是不够的,在实际应用中,还应熟练的识别各种BIOS芯片。

1.芯片的型号的识别

  芯片的型号包含了很多的信息。以AM28F020为例。AM表示生产厂商是AMD,28F一般是FLASH ROM,020表示容量为2Mbit。
  在常用的BIOS芯片中,27Cxx系列属于EPROM芯片;28Fxx系列属于VPP=12V的FLASH ROM芯片;28Cxx属于EEPROM芯片;29Fxx/29EExx属于VPP=5V的FLASH ROM芯片;39SFxx/49SFxx属于具有引导块功能的FLASH ROM芯片等等。
根据芯片型号,我们可以大致判断出芯片属于哪种类型,生产厂商,容量大小。

2.芯片的引脚和方向

            
                     //图11 DIP芯片和插座照片

            
                    //图12 PLCC芯片和插座照片


  芯片的引脚都是按逆时针方向排列的,只要确定第1脚,就能确定其它的引脚。在芯片的第1脚旁边,通常都会有标记,不同的厂家,标记也会有所不同,可以是圆形标记,也可以是三脚形标记,对于双列直插(DIP)封装的芯片,在第1脚和最后一脚之间的边上,还会有一个半圆的凹痕,这些都是给我们提供的识别标记。PLCC封装的芯片也类似,在第1脚的旁边都有一个圆形的小坑。

  对于主板或其它板卡上的芯片插座也分为两种。对于双列直插插座,在插座没有引脚的一个边上,有一个半圆的凹痕,当凹痕所在边朝上时,左边第1脚就是插座的第1脚,它与芯片的第1脚相对应。对于PLCC插座,都会有一个斜角,相应的,这种封装的芯片也都有一个斜角,这两个斜角是相对应的。

了解了这些信息,我们就不会把芯片在插座上的方向搞反,要知道,插反是可能烧芯片的。

四、BIOS芯片的代换

  当你的BIOS芯片损坏时,你需要再找一片来替代它。对于某些显卡来说,它使用了OTP的EPROM,当你想升级显卡BIOS程序时,你也需要再找一片来取代它。如果能够找到相同型号的,固然很好,但是找不到,也不要紧,可以用其它芯片进行代换。那么BIOS芯片的代换要遵循哪些原则呢?

1.容量和管脚兼容
  一般来说,同容量的芯片,除VPP外,其他引脚都是完全兼容的。2M的芯片和1M的芯片,管脚比较兼容,2M的芯片比1M的芯片要多一条地址线A17,而1M的芯片同样位置的引脚为空脚。代换时需要把多出的地址线接高电平或这低电平即可,也就是说大容量芯片可以改造后代换小容量芯片。

2.封装形式
  不同的封装是肯定不兼容的,只有封装形式一样,才有替换的可能。

3.电压
  区别比较大的就是编程电压(VPP),EPROM的编程电压有12.5V、21V、25V三种;EEPROM的编程电压为5V;早期的FLASH ROM编程电压为12V,较新的FLASH ROM编程电压为5V。对于存储芯片,通常第1脚为VPP,管脚是一致的。可以使用较高编程电压的芯片代换较低编程电压的芯片,不过无法进行软件刷新;但是不能用较低编程电压的芯片代换较高编程电压的芯片,因为一旦进行刷新操作,较高的编程电压就会加在芯片的第1引脚上,较低编程电压的芯片无法承受,将导致芯片烧毁。

4.厂商
多数情况下,不同厂商的同型号芯片可以直接代换。

上述几个因素需要进行综合考虑,有时还需要查阅芯片的数据手册来决定。

五、BIOS的刷新

  如果你的BIOS芯片被病毒破坏,如果你想升级BIOS程序,那么你会面临刷新BIOS的问题。对于存储器芯片来说,有三种基本操作:读取、擦除、编程。要了解这些操作过程,先要看看芯片的结构,存储器芯片的外部引脚分为:数据线、地址线、控制线、电源、地。地址线用来确定数据所在的地址,数据线用来输入或输出数据。控制线要复杂一些,包括CE、OE、WE。CE是片选信号,当CE为低电平时,芯片被选中,才可以对芯片进行各种操作,若CE为高电平,则不能对芯片进行任何操作。对于多个存储器芯片并联使用时,可以用CE来选择要操作的对象是哪一片,比如双BIOS系统就是用CE来切换两个BIOS芯片的,通常的主板上只有一个BIOS芯片,因此CE始终为低电平,也就是一直被选中。OE是输出允许,也是低电平有效,当OE为低电平时,允许数据输出,也就是可以读取芯片的内容;当OE为高电平时,输出被禁止,无法读取芯片内容。WE是编程允许,低电平有效,就是说低电平时可以对芯片进行编程,高电平时不能对芯片进行编程。

  对于EEPROM,不需要擦除,可以直接进行编程操作。对于FLASH ROM,需要先擦除芯片内的数据,然后才可以写入新的数据。无论是读取、擦除或者编程,都需要各种信号按照一定的时序,一定的电平相互配合才能完成,控制信号时序是由编程程序来完成的。另外不同的芯片,其控制时序都有所不同,因此编程程序也会根据芯片型号进行相应的控制。但是因为芯片型号众多,编程程序也不一定都能支持。 1.热插拔

  热插拔,就是带电插拔的意思,听起来是够恐怖的事情,实际做起来也是充满危险的。热插拔的过程是这样的,首先要有准备几个文件,一个是要写入BIOS芯片的程序,另外一个是和BIOS厂商对应的BIOS刷新程序。然后要把这两个文件拷贝到软盘或者硬盘上,如果是使用软盘的话,需要先将软盘做成DOS系统盘。然后要找一块能正常启动的主板,要求其BIOS芯片型号与我们打算刷新的BIOS芯片的型号一致。准备工作结束后,就可以开始最激动人心的热插拔了。先将正常的主板启动起来,可以从软盘启动,也可从硬盘启动,这时BIOS已经把控制权移交给DOS系统了,因此可以把BIOS芯片从主板上拔下来了,然后再将待刷新的BIOS芯片插入到主板上。此时,就可以执行刷新程序了。

  前面说到可以从软盘刷新,也可从硬盘刷新,不过我还是要推荐从硬盘刷新。根据我的经验,BIOS刷新程序在执行的过程中,并不是将整个程序读入到内存中,再执行刷新的,而是读一段,刷一段,由于软盘的可靠性要差于硬盘,倘若刷了一半时,软盘读不出,就会导致刷新失败。 关于热插拔所需要的另一块主板或者另一块BIOS芯片,一向是众说纷纭。我想可以从这几方面考虑,一是主板型号无所谓,但主板上的BIOS程序的厂商要一致,要么都是AWARD,要么都是AMI;二是BIOS芯片的型号,最好是相同的,关于这一点可参考BIOS芯片的代换。

  热插拔是很不安全的,一方面在刷新过程中,意外停电、程序出错、磁盘读不出等都会造成刷新失败。另一方面,带电插拔BIOS芯片造成芯片损坏的几率非常大。所以是不推荐大家使用这种方法的。

2.用编程器刷新BIOS

  最安全最简便的刷新BIOS的方法,莫过于使用编程器来刷新BIOS了。编程器是可以对各种芯片进行读取、擦除、编程操作的专用设备。与热插拔相比,它的刷新成功率几乎是100%,它不怕刷新失败,即使失败,还可以再刷,操作上也比较简便,在window环境下,只需用鼠标点几个按钮就可以完成BIOS芯片的刷新。

下面我们以一种多功能编程器(电子DIY多功能编程器)为例,说明一下用编程器刷新BIOS芯片的过程。

第一步是从主板上取下要刷新的BIOS芯片,如果是PLCC32封装的,可以使用专用的起拔器来完成。

            
                    //图13 多功能编程器照片

第二步要将编程器连接到电脑的并口,然后为编程器接通电源,启动电脑,打开编程器程序。

 
                      //图14 编程器软件界面

  要对一个芯片进行编程,首先要选择芯片型号,可在菜单选项中进行选择也可在工具条中选择,然后在系统设置中查看芯片位置,把芯片插入活动插座的正确位置,锁紧插座。对于PLCC32封装的芯片,则要用到适配器。对于27、28、29、39/49等存储器芯片,在操作前要根据“芯片设置”窗口中的提示对DIP开关进行设置。

  读取芯片:正确插好芯片,使用“读取”功能读出芯片内容。内容保存在你所选择的缓冲区中,如果缓冲区中有数据将覆盖这些数据,你可以拖动缓冲区的滚动条来查看数据。你可以使用另存的功能将读取的内容存到硬盘上。

  编程芯片:正确插好芯片,可以使用“打开”功能打开磁盘上待写入的BIOS程序。然后使用“编程/测试”功能把缓冲区的数据写入芯片。注意,芯片是空的才能写入,你可以使用“空检查”来检测芯片是否为空。如果不为空,可以使用“擦除”功能擦除芯片内容。编程完毕后,程序将校验写入的数据。对于EEPROM芯片,也可以不擦除直接写入新的数据。

  复制芯片:插上原始BIOS芯片,使用“读取”读出原始BIOS芯片的数据,然后换上要写入的空BIOS芯片,使用“编程/测试”功能写入数据即可。 写好的芯片就可插入主板使用了。

六、BIOS的保护

  所谓保护BIOS,就是保证BIOS芯片的内容不被改写。对于EPROM来说,不存在这个问题,因为它是需要紫外线擦除的,但对于EEPROM和FLASH ROM来说就不同了。当满足编程条件时,芯片内容是可以擦除和改写的。那么对芯片编程的条件是什么呢?

1.编程电压,常见的芯片编程电压有5V和12V,这两种电压都可由电源获取,对于芯片来说,编程电压需要加在特定的引脚上,才能完成对芯片内容的擦除和改写。

2.WE(编程允许),在芯片上有一个管脚的功能是WE,WE通常是低电平有效,也就是说当WE为低电平时,才允许进行编程操作。

  要保护BIOS芯片,可以从编程电压入手,对于12V编程电压的芯片来说,将这个引脚悬空即可。主板上的BIOS芯片通常是插在插座上的,象INTEL的28F020就是12V编程电压的芯片,它的第1脚是VPP(编程电压),因此需要把芯片从插座上取下,然后将第1脚掰直,然后再将芯片插回插座,第1脚无法加上12V的电压,因此芯片不能完成写入功能。不是所有的芯片都可以这样做的,EEPROM和近期的FLASH ROM都采用5V的编程电压,并且在芯片内部由电源引脚提供的,芯片外部并没有VPP这样的引脚,第1脚改为NC,也就是空脚。所以只能从WE上做文章了。很显然,只要让WE始终处于高电平,就无法对芯片进行写操作了。以39SF020为例,第31脚为WE,第32脚为VCC,首先要将第31脚从插座中分离出来,方法同前,然后在第31脚和第32脚之间焊接一个4.7K的电阻,这时WE上拉为高电平,不允许写入。如果今后还想在主板上通过软件升级BIOS,那么也很简单,在芯片第31脚和插座第31脚之间接上一个开关即可,平时开关处于断开状态,第31脚上拉为高电平,不能写入,当需要升级BIOS时,可将开关闭合,则第31脚重新连接到插座的第31脚,可在程序控制下变为低电平,允许写入。

           
                      //图15 双BIOS系统

  为了保护BIOS,很多厂商推出了双BIOS系统。所谓双BIOS,就是在主板上安装了两片BIOS芯片,在实际使用中,只有一片起作用,另一片则作为备份,如果当前的这片BIOS芯片被破坏,则作为备份的芯片可以顶替被破坏的芯片,另外还可将备份芯片的内容写入被破坏的芯片(如果不是物理损坏的话),恢复其功能。这类技术有技嘉的DualBIOS、承启的Twin BIOS等。



 
 
【模拟器硬件DIY】版权所有 Copyright(C) 2000-2006 本站资料未经许可,请勿转载,如有需求,请联系