织梦CMS - 轻松建站从此开始!

罗索

32位 BIOS说明

jackyhwei 发布于 2011-02-14 10:59 点击:次 
PCI BIOS在PCI编程中起着一定的作用,PCI BIOS的资料也不是很好找,把找到的集中到这里,供参考。
TAG:

PCI BIOS在PCI编程中起着一定的作用,PCI BIOS的资料也不是很好找,把找到的集中到这里,供参考。

1、确定系统是否实现32位BIOS

    在调用32位BIOS之前,32位操作系统必须要确定系统中是否存在32位BIOS,以及入口点是什么?并不是所有的BIOS都支持32位调用。BIOS 32服务目录的实现必须嵌入一个特定的、相邻的16个字节的数据结构,其物理地址范围为0E0000H----0FFFFFH,数据结构中各字段的描述如 下,此数据结构必须排列在16字节地址边界。

    偏移量    大小     含义
    00H        4字节    ASCII表示的特征字符串,“_32_”,最左边的下标存储在偏移0中
    04H        4字节    BIOS 32服务目录入口,是一个32位的物理地址
    08H        1字节    修订版本号,为00H
    09H        1字节    数据结构长度,以字节为单位
    0AH        1字节    整个数据结构的检查和,其值必须为0
    0BH        5字节    预留单元,必须为0

2、确定32位BIOS支持的服务

    EAX=服务识别器。为确定32位BIOS是否支持指定的服务,服务目录程序根据EAX寄存器中的调用者提供的4字节的服务识别器执行查找。

    BL=服务目录功能识别器。填00H。EBX的高三个字节为保留,必须清0。

    在调用服务目录程序返回后,寄存器组中包含以下值:
    (1)如果指定的服务存在,则AL包含00H;否则,包含80H;如果BL中包含的功能识别器未实现,则包含81H。
    (2)EBX包含指定的BIOS服务的物理起始地址
    (3)ECX包含指定的BIOS服务的长度
    (4)EDX包含指定的BIOS服务的入口。这是EBX中返回的起始地址的偏移。

3、确定32位BIOS是否支持PCI BIOS服务

    PCI BIOS服务的服务识别器包含ASCII串“$PCI”,在EAX中被指定为49435024H。假定服务目录程序调用后指出PCI BIOS存在,则可通过向EDX寄存器中返回的入口来执行远程调用。在调用PCI BIOS以前,操作系统必须将BIOS的代码和数据段定义为具有EBX和ECX中返回的物理地址范围。代码和数据段必须具有相同的起始地址。操作系统必须 启动BIOS的优先级,以允许I/O操作,且必须为BIOS定义一个容量至少为1KB的堆栈区域。BIOS设计者必须假定操作系统将代码段定义为只执行, 将数据段定义为只读。

(hengch)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201102/10872.html]
本文出处:hengch.blog.163.com 作者:hengch
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容