原创 发现新硬件的前前后后(连载之一)

2006-12-18 21:33 5246 7 7 分类: 通信

当我们把新硬件插入系统后,Windows立即告诉你发现新硬件(如1),接着识别新硬件,然后自动安装硬件的驱动程序,这样设备就可以使用了,整个过程中系统像在和你交流一样。对于这个神奇的过程,你是否很想知道电脑到底都干了些什么?


451bb4b3-c246-4e45-b434-072109068909.JPG


图1   插入新硬件后屏幕出现的提示信息

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


1.新硬件与即插即用


      “新硬件是指在一个已经安装操作系统的现有系统中新增加的硬件设备,发现新硬件就是现有系统能够自动侦测到新增加的硬件,并针对新硬件进行驱动程序的安装,直至成为可用硬件的全部过程。


如果硬件的安装可以无人值守地进行,并且不需要重新启动机器就使新硬件直接成为可用硬件,那么这个过程就可称作即插即用(Plug & Play,港台地区的译名更加生动:插上就玩


插上就玩是人们多年来梦寐以求的,但直到Windows 95操作系统问世,这种愿望才得以实现。不过,那时的插上就玩不够完备,许多新硬件在出售时,还附上了一张驱动程序的软盘和光盘,需要用户进行一系列软件安装,仅有少数设备能够真正的插上就玩。如今,Windows XP已经足够强大,以至于附加的驱动程序都可省去,真正实现了插上就玩。不仅如此,热插拔技术还允许在机器工作期间插入新硬件,使得应用更为方便。


即插即用需要所有条件同时具备:即插即用的硬件支持(主机和设备),即插即用BIOS以及即插即用的操作系统。即插即用系统还需要团队精神——硬件、BIOS和操作系统三者团结一致、各担其责:即插即用BIOS与操作系统一起完成对即插即用设备的识别和配置,最后由操作系统帮助应用程序管理和使用硬件设备和系统资源。


2.谁发现了新硬件?


对于电脑启动的过程,相信大叫都比较熟悉了。当我们接通电脑的电源时,CPU执行的第一条指令是一条跳转指令,在地址线上输出BIOSPOST程序的首地址(FFFF0H),从BIOS芯片中读取POST程序并立即执行该程序,对电脑硬件进行检测,检测包括BIOS程序完整性检验、RAM可读写性检验、硬盘、光驱、软驱、键盘、打印机,电脑上所有部分,并从每台PnP设备上读取该设备的相关信息和资源需求数据,建立一个资源分配表,配置数据写回BIOS后,屏幕上出现Update ESCD......Succeed信息,说明ESCDExtended System Configuration Data,扩展的系统配置数据)更新成功,随后启动自举装载程序引导操作系统。


一些新硬件插入现有系统后,BIOS能够赶在操作系统之前发现它,并进行合理配置,让其可用。可见,启动期间发现新硬件的工作是由BIOS程序独立完成的。


BIOS功能毕竟有限,它并不能发现所有的新硬件,有些硬件必须待Windows引导成功后,才能被操作系统发现,并且由操作系统进行相应配置后让其成为可用硬件。正常开机期间插入的热插拔设备,往往也是由操作系统独立发现并进行配置。


BIOS和操作系统是两个独立的实体,它们能够发现并配置新硬件,只是它们发现并配置新硬件的时机和机制却有所不同,请往下看。


3.从新硬件到可用硬件


     BIOS发现新硬件的过程,是依靠调用存贮在BIOS中三个程序实现的。首先由开机自检程序(POST)向设备发送Device identify命令去检测设备,并从设备取回一定的状态信息。如果状态信息与标准信息吻合,则继续向下一台设备发送Device identify命令;如果不吻合,则在屏幕上显示出错信息,自检工作暂停。检测工作结束后,转入执行BIOS中的设置程序,将系统资源(包括I/O端口、中断号、DMA及内存等)分配给检测到的设备,生成一个资源配置表,防止出现资源冲突而导致设备不可用的情况发生。


自检结束后,操作系统调用BIOS中的引导装配程序加载操作系统,操作系统获得控制权后,立即读取BIOS中的资源配置表,对设备进一步配置,并将配置情况记录到注册表中去。


操作系统发现并配置新硬件的过程类似于人力资源部为企业招收新员工的工作流程:资格审核 登记造册 安排工作。操作系统执行如下检测和配置过程:


1)通报事件:新设备插入系统后(冷插拔或热插拔),BIOS侦测到以后,立即通过总线枚举程序向系统通报事件;


2)识别新设备:操作系统使用设备管理程序去识别外设,然后利用设备信息自动地装载相匹配的驱动程序;


3)将系统资源分配给新设备,并构建设备资源数据库。


到现在为止,硬件的身份由新硬件转变为可用硬件了。可以看出,可用硬件必须具备发挥自己的功能所必须的两个条件:(1)占有主机资源(2)操作系统中有与之匹配的驱动程序。


应该说明一点,新硬件必须按照即插即用规范(最低版本为PC95)设计,在设备电路中有一个ROM芯片(通常也称为设备BIOS,如显卡BIOS、显示器BIOS、硬盘BIOS、光驱BIOS等),其中固化了该设备的信息,这样的设备才能被系统自动识别并安装驱动程序,变成可用硬件。老的CRT显示器,就不能被系统识别,因为这种显示器电路中没有ROMS芯片和固件,显示器信号线也没有用于即插即用的检测信号线和数据返回线。


4PnP BIOS:即插即用的马前卒


电脑教材总是这么告诉大家:一个完整的电脑系统是由硬件系统和软件系统两部分组成的。这只不过是个粗略的说法,BIOS在此被作为硬件系统的一部分来看待了。实际上,BIOS并不是一个纯粹的硬件,正好相反,它是被预先包裹在硬件中的软件,通常称作固件(Firmware——固化在硬件中的软件。


BIOS是控制硬件的程序,它可以主动地对计算机系统中的设备和总线进行控制。BIOS也是连接操作系统和硬件设备的桥梁,能够被操作系统所控制,协助操作系统完成对硬件进行访问。操作系统对硬件的操作大多是通过调用BIOS芯片中的中断服务程序完成的。


BIOS是电脑启动后最先执行的程序,它检测电脑最小系统的正确性,然后把系统控制权移交给操作系统。对于即插即用硬件的发现和配置,BIOS也走在了操作系统的前面。


早期的BIOS程序都是针对某个特定的硬件系统和软件系统而编制,不具通用性,我们称之为非即插即用BIOS。非即插即用BIOS通常由一些程序(上电自检程序、配置程序、枚举程序、中断服务程序)和资源配置表组成,这些程序和表格一般存储在ROM芯片中。


有一定经验的用户应该知道,486级别的电脑有很大一部分并不支持从CD-ROMZip驱动器等设备引导系统,但对BIOS升级后便可解决问题。非即插即用系统也可以通过BIOS版本升级来增加支持的硬件种类,或者提高硬件的性能。


即插即用系统和非即插即用系统的差别可从2中比较出来。即插即用系统要求外部设备、主板、BIOS和操作系统均支持即插即用。为了在电脑系统中实现即插即用功能,研发出了在底层支持即插即用技术的BIOS,我们在这种新的BIOS前面加上一个PnP,称作PnP BIOSPnP BIOS比非即插即用BIOS多了一个PnP功能模块,这个模块可以识别哪些设备为固定资源需求的传统设备,哪些是可以对进行资源再配置的即插即用设备,并且识别出设备的资源需求。PnP模块将这些设备信息传送给操作系统的设备管理程序,并由该程序进行重新配置,不需要重新开机即可实现BIOS的更新。


点击看大图


图2  非即插即用与即插即用系统的比较


如果说PnP模块不过是对非即插即用BIOS列举和配置功能的增强,那么,通报动态事件就是PnP BIOS所独有的功能。当系统中增加了新硬件时,PnP BIOS能够及时更新资源配置表,并通过枚举程序向操作系统报告。借助于PnP BIOS的动态通报功能,操作系统无需关机即可重新对资源进行重新配置。在去除设备时,PnP BIOS也能够通知操作系统,并通过操作系统向用户发出警告,以防错误和数据丢失。此外,PnP BIOS中还有一个ACPI模块,配合操作系统实现节能。(未完待续)

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
7
关闭 站长推荐上一条 /3 下一条