1.0 Introduction
1.1略
1.2 相关文档
plug and paly bios spec
Hardware Design Guide for microsoft windows 95
Enhanced disk drive specification
"EI Torito" Bootable CD-ROM Format specofocation
pci local bus specification
1.3 目的
这个规范的目的是描述一个方法,通过这个方法BIOS可以识别所有在系统中的IPL(initial program load)设备,按照user选择的顺序给他们排序,然后遍历设备允许启动。因为PNP bios spec增加了BIOS在启动过程中的要求(比如更多的可启动设备:
CD-ROM,network,remote boot,PCMCIA等),所以BIOS必须变得更加”智能化“。这个规范最重要的是定义了一个启动方案,这个方案是很灵活的,它允许机会所有存在的IPL设备去启动,而且包括了许多将来的IPL Devices。
1.4 Terms
为了避免混淆和能够与PNP SPEC保持一致,一些术语定义被列在下面:
ATA(Advanced Technology Attachment) -先进技术连接设备,也被认为是一个IDE Drive,是一个有内置接口的HW。
ASCIIZ-一个ASCIIZ字符串是一个由ASCII字符组成并以NULL结尾的字符串。
BAID(BIOS Aware IPL Device)-可是任何可以启动OS的device,不过要求BIOS有详细的CODE来支持它。比如:the first floppy drive,the first hard drive,ATAPI CD-ROM,PCMCIA,embedded network adapter等。
BCV(Boot connection vector)-一个option rom里扩展头里的指针,指向option rom里的初始化设备的代码。并且可以被INT 13H hook。(具体可以看PCI option ROM部分详解),是一个3byte的指针。带有BCV的option ROM比如PNP ISA SCSI
Controller。
BDA(BIOS Data Area)-在RAM里的一块数据段,主要用于BIOS 管理外设和资源的,开始地址:0040H.
BEA (Bootstrap Entry vecdor) -一个指向option rom的指针,它是直接加载OS,比如PNP ISA ETHERNET CONTROLLER
BIOS-略
Boot device-在加载OS前必须初始化的设备:输入设备(keyboard)、输出设备(display),IPL device。一个初始化程序加载设备是a boot device中的一员。
CDR(Conflict Detection and Resolution)- 这是一个方法,pnp bios通过这方法首先检测pnp cards的资源要求,然后用一种无冲突的方式分配资源给他们。
DDIM(Device Driver Initialization Model)-是一种option rom初始化方法,扩展rom首先拷贝到与之相应的映射ram,然后它的初始化向量被调用,同时映射RAM置于可写状态。当扩展rom(拷贝到RAM中的code)完成初始化,它将会丢掉在RUN-Time时
不需要的code(也就是初始化code)。最后返回,BIOS重新获得control,这个ROm是写保护的。
DV(Disconnect Vector)-是一个指针,也是指向扩展rom里的一段code,这段code主要是BCV指针指向的code完成调用后执行clean-up工作的。这个指针也在PNP option rom扩展头里。
IPL Device-任何可启动OS的device,在standard ATmachines中,指的是floppy drive 或者是hard drive。
Legacy Caed-指一个标准的ISA Card,没有pnp 兼容配置,也没有扩展头(expansion header)
NV(Non-Volatile)-非易失性MEM,是一种断电后仍然可以保持内容不丢失的MEM,在pc机上最常见的类型NV memeory是CMOS(保存system configuration information)
O/S-这个好理解塞,被一个选择启动的IPL Device加载的操作系统。
PFA(PCI Function address)-是非配给一个pci function的唯一地址,由function number、device number、bus bumber组成。
PnP(plug and paly)-标示被PNP BIOS和PNP ISA SPEC定义的东西。比如:PNP DEVICE,做PNP 行为啊。
PNP Card-这类卡的option ROM 里含有一个PNP expansion Header的结构。
POST(Power-on self test)-这是属于bios的部分,是指pc一上电BIOS做初始化pc's hw 和加载os的动作。
SETUP-这也是BIOS里的东西,严格来说是一个program,当bios初始化时,你可以按快捷键或者说是热键进入的画面。setup允许你去设置、配置system,也可以选择IPL 的优先权。
<以上就是一些术语的解释>
2.0 Overview
2.1 介绍
BIOS BOOT SPEC主要定义了一些bios里的特点:bios可以create和maintain 所有在系统里找到的IPL device并且把他们以链表的形式存储在NV memory里面。IPL device 主要是这三种类型:BAID,PnP Card和Legacy。但是只有前两种可以被
枚举,Legacy device因为一些原因不被支持:第一,这类device总是控制启动过程使他们看起来不友善(有就是说它拿到控制权就不容易交出去)。第二,这类设备作为IPL Device却没有提供一种方法去识别他们自己。第三,BIOS不能对存在几个Legacy
IPL Device去选择其中一个来启动。
BIOS BOOT SPEC对于启动顺序提供了一个IPL Priority的方式,这个IPL Priority 是一个用户在setup里自定义的顺序。启动命令是很简单的:boot C Then c or 反过来也行(当然这些device必须支持)。当然这些IPL device的数量可能每次开
机都是变化的,每次开机系统都会枚举在系统中的all IPL Devices。
BIOS BOOT SPEC 还定义了BCV(Boot connection vector,扩展内存里的一个指针)优先权。用户在setup里设置INT 13H device controller相关的一个链表。这些controller可以被调用去安装int 13h drive。
假如一个IPL device加载os失败,bios将会收回控制权并且去从另外一个IPL Device启动加载,直到所有IPL Device被试完为止。然后BIOS显示一条信息表面OS没有找到,等待用户按键,然后再调用int 19h。这个方式让BIOS更加智能化。
bios boot spec主要围绕PNP 和non-pnp系统的启动为主的。在legacy system中这个过程是相对简单的多,因为它只支持BAIDS,它不需要有支持动态 IPL DEVICE配置和枚举的能力,也不需要支持PNP CARD。这是因为它的IPL DEVICES数目是
不会改变。
3.0 IPL Device
an IPL device 可能是任何可以去加载和执行一个OS的设备。包括floppy drives,CD-ROM,PCMCIA,controller/card,pnp cards, legacy card,将来可能还会包括serial poarts,parallel ports等等。ipl device被分为三种类型:BAID , Legacy device, PnP
card。PnP card又分为两种:BCV Device和BEV device(两种指针类型的设备)。
一个IPL device的关键特点是,当它加载OS失败的时候,它会返回到BIOS(同时带上这个错误)。BBS里规定INT 18H作为一个启动失败的恢复vector。比如,一个PnP ISA network card 被配置使它从网络启动。D但是网线却没有接入,网卡
的option rom就会发一个信号给BIOS,通过invoking int18h,它不能启动。
一个Legacy card的option rom 在初始化阶段被int19h调用,它是可以控制启动过程的,但是如果被INT 18H hook,启动失败的时候它不能把控制权给BIOS。所以将来带有PNP expansion header 并且他们的option rom支持INT 18H的Legacy
boot devices是被推荐的。
3.1.1 IPL TABLE
每一个BAID 或者BEV 设备在IPL TABLE中必须要有相应的进入点。一个典型的PC机的IPL TABLE应该有两个BAID 进入点:一个是给软盘A: 一个是给硬盘 C:,并且有一个给BEV device,IPL TABLE的例子可以参考4.1节。
存储在IPL table里的信息有:识别信息、指向描述字符串的指针、指向一个handler(一个程序初始化用来加载O/S)。(IPL Table and BCV Table详见附录A)
3.12 product name string
PnP bios spec中定义:在PnP Expansion Header中有一个识别字符串。这个字符串对识别产品名称和厂商名称是有意义的。这个product name string的显示对用户去是被这个device来说是很重要的。虽然说规定这个字符串以NULL结尾,但是一
般来说只有前32个字符(byte)是有意义的,超过32byte的字符是不会显示的。
3.2 BAIDs
BAID就是说这类设备首先是可启动设备,而且在BIOS code中有详细的对应code支持他们启动(first floppy drive,first hard drive。。)。a BAID 是可以绑定唯一的bootstrap的,因为在BIOS 的INT 19H 服务程序里已经包含了对它的支
持(具体可以查阅关于HD/Floppy boot相关资料)。BAID设备比如说有:ATAPI兼容的CD-ROM DRIVE, PCMCIA card/controller、BAIDS 没有option ROM ,没有详细的code嵌入bios的话它们是不能工作的。
每一个BAID都将获得一个entry在IPL Table中,this entry 包含: device type ,device sub-type,一个指向一条描述字符串的指针,一个指向BIOS中的一个代码段code(the code will attempt to boot from the device)。INT 19H
handler
将会读取这个表来获取信息,使任何其不用知道device type 而从其启动。这个表由已连续的数据结构型的数组组成,而每一个数组刚好和一个具体的IPL Device对应。
(也就是说IPL table中由许多数组构成,这些数组又是由各种数据结构体构成,而每一个数组对应一个IPL device)
补充上一段-NOTE: 只有the first floppy drive和the first hard drive才会被认为IPLDevice。system不能从其他的drives启动的原因是the boot sector code详细地址只有:00h for floppy and 80h for hard driver(这个你可以去收集关于从
hd/floppy 启动的资料)。附录D介绍了推荐改变O/S boot sector应该解决这个问题。
3.3 Device with PnP Expansion Header
所有的带有option ROM 的IPL device必须含有一个有限的option rom header,这个option rom header的地址范围:c0000h-EFFFFH之间,并且以2kb为单位(不知是否这样理解?原文:resides between system memory addresses C0000h
and EFFFFh on a 2k boundary)且以55AAh开头。一个device只有带有PnP option rom header才能被控制。而它的地址可以在option header的offset 1AH出查到,对于配置device是很重要的。还含有指针(BCV/BEV)。
BEV设备:network card,BIOS从它启动直接做一个far call到它的bev。假如启动失败,就执行INT 18H恢复控制到BIOS。这种行为像BAID。
BCV device:SCSI controller。他不是字节引导启动的。恰恰相反,它仅仅是把它的driver加到system中去,并把drive number计入。
3.4 Legacy IPL device
它也有option rom,他与PnP device的区别是没有一个PnP expansion header在它的option rom里。
类别:Bios 查看评论