发明内容
本发明要解决的问题是提供一种基于开源系统基本输入输出系统的BIOS系统和启动方法。
为解决上述技术问题,本发明提供了如下技术方案:
基本输入输出系统(BIOS)的操作系统接口(INTERFACE)模块的中断服务例程采用可选择性唯读记忆体(Option ROM)模组(Module)方式实现;
所述BIOS在计算机系统加电时,板级核心模块(CORE)初始化板级设备并输出系统信息,板级核心模块抽象层(MAPPER)模块根据所述系统信息转换得到可由所述操作系统接口模块识别的系统信息表格,所述板级核心模块对所述操作系统接口模块包含的所述中断服务例程根据所述系统信息表格中的信息依次进行初始化,所述系统信息包括所述计算机系统的硬件列表、相应的端口地址以及内存大小的信息。
进一步的,所述操作系统接口模块采用Option ROM Module方式实现所述中断服务例程具体包括,所述操作系统接口模块包括多个Option ROM,每个Option ROM对应一个服务例程,所述Option ROM包括所述服务例程、所述服务例程的初始化例程和可选择性唯读记忆体头(Option ROM Header),所述服务例程的初始化例程包括所述服务例程的入口地址信息,所述OptionROM Header包括所述Option ROM的大小和所述服务例程的初始化例程地址的信息。
进一步的,所述板级核心模块为可扩展开源BIOS;所述MAPPER模块是所述开源BIOS相关的。
进一步的,所述板级核心模块还保存所述操作系统接口模块的地址范围,所述Option ROM依次进行初始化具体包括:
所述MAPPER模块初始化完成后,所述板级核心模块根据所述OptionROM规定的数据单元的大小在所述操作系统接口模块的地址范围内扫描所述操作系统接口模块,扫描到第一个Option ROM,调用所述Option ROM的Option ROM Header中指定的所述Option ROM的服务例程初始化例程的函数入口,初始化所述Option ROM对应的服务例程;
所述Option ROM初始化完成后,所述板级核心模块扫描所述操作系统接口模块中所述Option ROM的下一Option ROM,调用当前扫描的所述Option ROM的Option ROM Header中指定的所述Option ROM的服务例程初始化例程的函数入口,初始化当前所述Option ROM对应的服务例程,直到所述操作系统接口模块最后一个Option ROM对应的服务例程初始化完毕。
进一步的,所述Option ROM Header中还包含签名信息,所述板级核心模块判断扫描到所述Option ROM的方法为:
所述板级核心模块根据所述Option ROM规定的数据单元的大小在所述操作系统接口模块的地址范围内扫描所述操作系统接口模块,如检测前两个字节为所述签名信息,则扫描到一个所述Option ROM。
进一步的,所述板级核心模块扫描所述Option ROM,扫描到所述签名后,还根据所述Option ROM Header中保存的对应的服务例程大小的信息对所述Option ROM整体进行奇偶校验,如所述奇偶校验和正确,则初始化所述Option ROM对应的服务例程。
进一步的,如所述奇偶校验和正确,所述板级核心模块初始化所述OptionROM对应的服务例程后,还根据所述Option ROM Header保存的所述服务例程大小的信息更新Option ROM扫描算法的基址;
如所述奇偶校验和不正确,所述板级核心模块以所述Option ROMHeader中提供的数据单元大小为单位更新Option ROM扫描算法的基址;
所述板级核心模块更新完所述扫描算法的基址后还判断所述基址是否超出所述操作系统接口模块的地址范围,如是,则根据用户设置,到软盘、硬盘或CD ROM中加载操作系统,如否,则扫描下一Option ROM。
进一步的,所述Option ROM对应服务例程的根据所述系统信息表格进行初始化具体包括:
所述服务例程初始化过程中需要判断所述服务例程操作的相关硬件是否存在,或查询端口地址或可用内存大小时,所述操作系统接口模块通过查询所述MAPPER模块维护的系统信息表格获得需要的信息,所述系统信息表格存储在BIOS数据区或非易失性存储器(Non-Volatile RAM)中。
进一步的,所述Option ROM对应的服务例程初始化时,还包括所述Option ROM中的服务例程初始化例程注册所述服务例程的入口地址到中断服务向量表(Interrupt Vector Table)中,所述中断服务向量表由所述MAPPER模块维护。
进一步的,所述操作系统接口模块的中断服务例程为计算机操作系统启动所必须的服务例程,包括图形服务例程INT10H,获取内存大小服务例程INT12H,磁盘服务例程INT13H,杂项服务例程INT15H、键盘服务例程INT16H和外部设备互联总线设备基本输入输出系统(PCI BIOS)服务例程INT1AH等。
为了解决上述技术问题,本发明还提供了一种基于开源基本输入输出系统(BIOS)的BIOS系统,其特征在于,包括板级核心模块、板级核心模块抽象层(MAPPER)模块和操作系统接口模块,其中:
所述板级核心模块,用于计算机系统加电后,初始化板级设备并输出系统信息,所述系统信息包括所述计算机系统的硬件列表、相应的端口以及内存大小的信息;
所述MAPPER模块,用于根据所述系统信息转换得到可由所述操作系统接口模块识别的系统信息表格;
所述操作系统接口模块,用于采用可选择性唯读记忆体(Option ROM)模组(Module)方式实现中断服务例程,根据所述系统信息表格依次进行初始化所述中断服务例程。
进一步的,所述操作系统接口模块包括多个Option ROM,每个OptionROM对应一个服务例程,所述Option ROM包括服务例程本身、所述服务例程的初始化例程和可选择性唯读记忆体头(Option ROM Header),其中,
所述服务例程的初始化例程用于保存所述服务例程的入口地址信息,配置硬件,并注册所述服务例程的入口地址信息至中断向量表中;
所述Option ROM Header用于保存所述服务例程的大小和所述服务例程的初始化例程地址的信息。
进一步的,所述板级核心模块,还用于初始化板级设备后,跳转到所述MAPPER模块,所述板级核心模块是可扩展开源BIOS;
所述MAPPER模块,还用于执行内部的初始化函数完成自身的初始化,读取并解析所述板级核心模块输出的系统信息,根据所述系统信息创建和维护所述系统信息表格,跳转到所述板级核心模块,所述MAPPER模块是所述开源BIOS相关的。
进一步的,所述板级核心模块还用于保存所述操作系统接口模块的地址范围,初始化INTERFACE模块,根据所述地址范围扫描所述INTERFACE模块,扫描到第一个Option ROM,保存所述Option ROM的基址,调用所述Option ROM的Option ROM Header中指定的所述Option ROM的服务例程初始化例程的函数入口,从所述Option ROM跳转回来,扫描所述操作系统接口模块中所述Option ROM的下一Option ROM,根据当前扫描的所述OptionROM的Option ROM Header中指定的所述Option ROM的大小,更新所述扫描算法的基址,并判断所述基址是否超出所述操作系统接口模块的地址范围,如是,则根据用户设置,到软盘、硬盘或CD ROM中加载操作系统,如否,则扫描当前Option ROM的下一Option ROM;
所述MAPPER模块还用于维护BIOS数据区和中断服务向量表;
所述操作系统接口模块还用于所述Option ROM的服务例程初始化例程的函数入口被调用,执行所述Option ROM对应的服务例程的初始化例程,对所述服务例程进行初始化,初始化完成跳回所述板级核心模块;
所述操作系统接口模块的所述Option ROM的服务例程初始化例程还用于注册所述服务例程的入口地址到所述中断服务向量表。
进一步的,所述Option ROM Header中还包含签名信息,
所述板级核心模块还用于根据所述INTERFACE模块地址范围扫描所述INTERFACE模块,如检测前两个字节为所述签名信息,则扫描到一个所述Option ROM,根据所述Option ROM Header中保存的对应的服务例程大小的信息对所述Option ROM整体进行奇偶校验,如所述奇偶校验和正确,则调用所述Option ROM的Option ROM Header中指定的所述Option ROM的服务例程初始化例程的函数入口,根据所述Option ROM Header保存的所述服务例程大小的信息更新扫描算法的基址;如所述奇偶校验和不正确,所述板级核心模块以512字节为单位更新扫描算法的基址,所述板级核心模块更新完所述扫描的基址后还判断所述基址是否超出所述操作系统接口模块的地址范围,如是,则根据用户设置,到软盘、硬盘或CD ROM中加载操作系统,如否,则扫描下一Option ROM。
进一步的,所述操作系统接口模块还用于所述服务例程初始化过程中需要判断所述服务例程操作的相关硬件是否存在或查询端口地址或可用内存大小时,查询所述MAPPER模块维护的系统信息表格获得需要的信息。
本发明提供的一个或多个实施例,该板级核心模块(CORE)选择开源基本输入输出系统(BIOS)初始化板级设备,输出系统信息,该系统信息包括内存大小和设备类型等,该操作系统接口模块中的中断服务例程(Interrupt ServiceRoutine)采用Option ROM模组方式实现,该中断服务例程根据由所述系统信息转换得到可由该操作系统接口(INTERFACE)模块识别的系统信息表格依次初始化,并注册该中断服务例程至中断向量表中。通过扩展开源BIOS的架构,引入板级核心模块抽象层(MAPPER)模块作为板级核心模块和操作系统接口模块之间的接口,并且操作系统接口模块采用Option ROM模组方式实现计算机操作系统启动所需的服务例程,开发出操作系统接口模块和开源BIOS相结合的BIOS系统,不仅能够支持开源操作系统,也能够支持非开源商业操作系统,如Windows操作系统等,具有很好的兼容性。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步的详细描述。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
图1为基于本发明的BIOS系统和方法的计算机系统的结构示意图,包括相互连接的南桥和北桥,与北桥相连接的中央处理器(CPU)、显卡和内存,与南桥相连接的大容量存储和系统基本输入输出系统(System BIOS),少针脚型接口(LPC)总线,外设部件互联标准(PCI)总线以及与PCI总线相连接的PCI设备。
其中本申请的System BIOS在闪存(FLASH)中的结构如图2(a)所示,包括板级核心模块(CORE)、板级核心模块抽象层(MAPPER)模块和操作系统接口模块(INTERFACE)。本申请的BIOS系统通过扩展开源BIOS得到。其中该操作系统接口模块采用可选择性唯读记忆体(Option ROM)模组(Module)方式实现中断服务例程,该服务例程为编译后的二进制代码经过压缩后形成的压缩的二进制代码。
本申请的BIOS在计算机硬件系统上电后,为了得到更快的执行速度,该板级核心模块和该MAPPER模块拷贝到内存中执行,该操作系统接口模块经过解压缩后拷贝到内存中执行,该操作系统接口模块中的服务例程解压缩为二进制代码。BIOS在内存中的结构如图2(b)所示,按照地址从高到低的顺序包括System BIOS(即板级核心模块、该MAPPER模块和该操作系统接口模块)、VGA BIOS及数据区、传统DOS应用程序工作区、BIOS数据区和中断向量表。
该板级核心模块,用于计算机硬件系统加电后,初始化板级设备并输出系统信息,跳转到该MAPPER模块,该系统信息包括该计算机系统的硬件列表、相应的端口地址以及内存大小的信息,还用于保存该操作系统接口模块的地址范围。
该板级核心模块是开源BIOS相关的,其功能和结构依赖于所采用的开源BIOS的功能和结构。
该板级核心模块抽象层(MAPPER)模块,用于执行内部的初始化函数完成自身的初始化,读取并解析所述板级核心模块输出的系统信息,根据所述系统信息创建和维护可由所述操作系统接口(INTERFACE)模块识别的系统信息表格,跳转到所述板级核心模块,该MAPPER模块是该开源BIOS相关的。该系统信息表格的格式根据该开源BIOS确定,存储在BIOS数据区或非易失性存储器(Non-Volatile RAM)中。该MAPPER模块还用于维护一中断服务向量表。
该操作系统接口模块,用于采用可选择性唯读记忆体(Option ROM)模组方式实现计算机操作系统启动时所需的中断服务例程,该中断服务例程根据由该MAPPER模块维护的系统信息表格依次进行初始化。
操作系统接口模块包括多个Option ROM,每个Option ROM对应一个服务例程,所述Option ROM包括服务例程、该服务例程的初始化例程和可选择性唯读记忆体头(Option ROM Header),其中,
该服务例程的初始化例程用于配置硬件和保存该服务例程的入口地址信息;
该Option ROM Header用于保存签名信息、该Option ROM的大小和该服务例程的初始化例程地址的信息。该服务例程的大小为该Option ROM规定的数据单元大小的整数倍,本实施例中该Option ROM的数据单元以512字节为例。
在该计算机闪存(FLASH)中,该服务例程为编译后的二进制代码经过压缩后形成的压缩的二进制代码。该计算机硬件系统启动后,为了提高执行速度,该BIOS系统的板级核心模块和MAPPER模块直接拷贝到内存中执行,同时该操作系统接口模块中的服务例程解压缩为二进制代码拷贝到内存中。
该板级核心模块在该MAPPER模块初始化完成后,扫描该操作系统接口模块中的第一个Option ROM,保存该Option ROM的基址,扫描到该OptionROM Header中的签名后,根据该Option ROM Header中保存的对应的服务例程大小的信息对该Option ROM整体进行奇偶校验,如该奇偶校验和正确,调用该Option ROM的Option ROM Header中指定的该Option ROM的服务例程初始化例程的函数入口,同时更新扫描算法的基址为当前Option ROM扫描算法的基址与当前Option ROM的大小之和,该扫描算法的基址仍为512字节的整数倍。如该奇偶校验和不正确,该板级核心模块以设定大小的地址段,如512字节为单位更新扫描的基址,更新完所述扫描的基址后还判断该基址是否超出该操作系统接口模块的地址范围,如是,则表明所有OptionROM以初始化完毕,可继续根据用户设置,到软盘、硬盘或CD ROM中加载操作系统,如否,则扫描下一Option ROM。
该操作系统接口模块还用于该Option ROM的服务例程初始化例程的函数入口被调用,执行该Option ROM对应的服务例程的初始化例程,对该服务例程进行初始化,该Option ROM的服务例程初始化例程注册该服务例程的入口地址到该MAPPER模块维护的中断服务向量表,初始化完成跳转回该板级核心模块。
该板级核心模块在初始化完当前Option ROM后,扫描该操作系统接口模块中当前Option ROM的下一Option ROM,扫描到该Option ROM的签名后,根据该Option ROM Header中保存的对应的服务例程大小的信息对该Option ROM整体进行奇偶校验,如该奇偶校验和正确,则调用该Option ROM的Option ROM Header中指定的该Option ROM的服务例程初始化例程的函数入口,根据该Option ROM Header保存的该服务例程大小的信息更新扫描算法的基址,调用当前扫描的该Option ROM的Option ROM Header中指定的该Option ROM的服务例程初始化例程的函数入口,如所述奇偶校验和不正确,所述板级核心模块以512字节为单位更新扫描的基址。该板级核心模块判断该基址是否超出所述操作系统接口模块的地址范围,如是,则表明所有Option ROM以初始化完毕,可继续根据用户设置,到软盘、硬盘或CDROM中加载操作系统,如否,则扫描当前Option ROM的下一Option ROM按照同样方式初始化下一Option ROM对应的服务例程。
该操作系统接口模块存储的中断服务例程包括计算机系统启动所必须的服务例程,包括图形服务例程INT10H,获取内存大小服务例程INT12H,磁盘服务例程INT13H,杂项服务例程INT15H、键盘服务例程INT16H和外部设备互联总线设备基本输入输出系统(PCI BIOS)服务例程INT1AH等。
该操作系统接口模块还用于该服务例程初始化过程中需要判断该服务例程操作的相关硬件是否存在,或查询端口地址或可用内存大小时,查询该MAPPER模块维护的系统信息表格获得需要的信息。如磁盘服务例程INT13H初始化需要判断是否存在软盘、硬盘或光盘,则该操作系统接口模块查询该MAPPER模块维护的系统信息表格中的硬件列表得到需要的信息,如果存在相应的硬件,则该Option ROM对应的服务例程的初始化例程注册该服务例程INT13H的函数入口地址到该MAPPER维护的中断服务向量表中。对于INT12H其用于向操作系统报告内存大小的信息,在INT12H初始化过程中,该操作系统接口模块无需检测内存的大小,直接从该MAPPER模块维护的系统信息表格中查询所述信息。
本发明的基于开源基本输入输出系统(BIOS)的BIOS启动方法中,BIOS的操作系统接口模块采用可选择性唯读记忆体(Option ROM)模组(Module)方式实现。该BIOS在计算机硬件系统加电时板级核心模块初始化板级设备并输出系统信息,该系统信息包括所述计算机系统的硬件列表、相应的端口地址以及内存大小的信息,该操作系统接口模块根据由该系统信息转换得到的可由该操作系统接口(INTERFACE)模块识别的系统信息表格对其中的Option ROM依次进行初始化。下面结合具体实施例进行详细说明。
实施例一
本实施例的基于开源BIOS的BIOS系统的结构示意图如图3所示,该开源BIOS为可扩展BIOS。图3中所示的BIOS系统大小为4Mb,其物理地址0xD0000到0xFFFFF包括板级核心模块(CORE)、板级核心模块抽象层(MAPPER)模块和操作系统接口模块(INTERFACE)三个部分,其中物理地址0xF0000到0xFFFFF包括该板级核心模块和该板级核心模块抽象层模块,该板级核心模块位于高位地址从0xFFFFF开始,该MAPPER模块位于该板级核心模块的低位,其具体位置在编译时确定。
1)板级核心模块(CORE):用于计算机系统加电后,获得控制权,初始化板级设备,包括中央处理器、高速缓冲存储器、内存控制器、北桥及北桥相关的设备和南桥及南桥相关的设备等,输出系统信息,跳转到所述MAPPER模块,所述系统信息包括所述计算机系统的硬件列表、相应的端口地址以及内存大小的信息,还用于保存所述操作系统接口模块的地址范围,从该MAPPER模块跳转回来,扫描操作系统接口模块的Option ROM。
2)MAPPER模块,用于执行内部的初始化函数完成自身的初始化,读取并解析所述板级核心模块输出的系统信息,根据所述系统信息创建和维护可由所述操作系统接口(INTERFACE)模块识别的系统信息表格,跳转到所述板级核心模块,维护中断服务向量表。
3)操作系统接口模块(INTERFACE):从物理地址0xD0000到0xEFFFF,用于采用可选择性唯读记忆体(Option ROM)模组方式实现中断服务例程,该Option ROM根据由该MAPPER模块维护的系统信息表格依次进行初始化。
本实施例的操作系统接口模块包含3个Option ROM,每个Option ROM的大小是512字节的整数倍。物理地址0xD0000到0xDFFFF范围内包含两个Option ROM,因此具有两个Option ROM Header。这两个Option ROM分别提供了INT 16H的键盘服务例程(Keyboard Service)和INT 15H的杂项服务例程(System Service)。对Windows操作系统,物理地址从0xE0000到0xEFFFF范围的Option ROM提供了INT 13H的磁盘服务例程(Disk Service)。本发明不限定Option ROM的大小,以及内存中服务例程Option ROM在操作系统接口模块范围内的摆放位置。
为了保证独立性,以及为了该操作系统接口模块提供高级操作系统如Windows操作系统和Linux操作系统启动所需的兼容性支持,该操作系统接口模块还符合《即插即用BIOS规范》中的ROM的标准格式。
该板级核心模块依次扫描该操作系统接口模块中的Option ROM,扫描到该操作系统接口模块中的Option ROM Header,查询该Option ROM Header中保存的签名,根据该Option ROM Header中保存的对应的服务例程大小的信息对该Option ROM整体进行奇偶校验,如该奇偶校验和正确,则根据该Option ROM Header中提供的关于该Option ROM对应的服务例程大小的信息进行递增或递减搜索,更新扫描算法的基址,调用该Option ROM的服务例程初始化例程的入口函数,跳转到该操作系统接口模块进行相应功能的初始化。如该奇偶校验和不正确,该板级核心模块以512字节为单位更新扫描算法的基址。该板级核心模块更新完所述扫描基址后还判断该基址是否超出该操作系统接口模块的地址范围,如是,则表明所有Option ROM已经初始化完毕,可以继续根据用户设置,到软盘、硬盘或CD ROM中加载操作系统,如否,则扫描下一Option ROM。
该操作系统接口模块得到控制权,即该Option ROM的服务例程初始化例程的函数入口被调用后,执行该Option ROM对应的服务例程的初始化例程,对该服务例程进行初始化,该Option ROM的服务例程初始化例程注册该服务例程的入口地址到该MAPPER模块维护的中断服务向量表,初始化完成跳转回该板级核心模块。该板级核心模块扫描下一Option ROM,初始化该Option ROM对应的服务例程。
该操作系统接口模块还用于该服务例程初始化过程中需要判断该服务例程操作的相关硬件是否存在,或查询端口地址或可用内存大小时,查询该MAPPER模块维护的系统信息表格获得需要的信息。如磁盘服务例程INT13H初始化需要判断是否存在软盘、硬盘或光盘,则该操作系统接口模块查询该MAPPER模块维护的系统信息表格中的硬件列表得到需要的信息,如果存在相应的硬件,则该Option ROM对应的服务例程的初始化例程注册该服务例程INT13H的函数入口地址到该MAPPER维护的中断服务向量表中。对于INT12H其用于向操作系统报告内存大小的信息,在INT12H初始化过程中,该操作系统接口模块无需检测内存的大小,直接从该MAPPER模块维护的系统信息表格中查询所述信息。
该板级核心模块、MAPPER模块和操作系统接口模块均保存在非易失性只读存储器中。
由于该BIOS系统采用Option ROM模组方式实现操作系统启动或运行期间所需要的服务,本发明的BIOS系统是可扩展的,可以根据需要设置一个或多个Option ROM及其所对应的服务例程。由于该开源BIOS系统提供的服务与工业界PC BIOS功能相同,因此能够与工业界PC BIOS相兼容,能够提供与工业界PC BIOS相兼容的软硬件接口。
该开源BIOS系统还包括系统检测模块、BIOS可扩展固件接口(UEFI)模块和系统调试工具模块。
基于该开源BIOS系统开发的固件BIOS支持的计算机系统包括X86兼容处理器、支持PCI总线标准的计算机和高级操作系统,如Windows操作系统和Linux操作系统等,包括但不限于DOS、Windows 98、Windows 2000、Windows XP、Windows Vista、Window 7和Linux的各主流发行版本。
实施例二
本实施例以X86处理器为例,本发明基于开源BIOS的BIOS启动方法处理流程如图4所示,包括以下步骤:
步骤301:计算机系统加电,中央处理器从BIOS的物理地址0xF000:0xFFF0处取指令,调用板级核心模块并将控制权交给该板级核心模块,拷贝该板级核心模块和该MAPPER模块到内存,该板级核心模块解压缩并拷贝该操作系统接口模块到内存中,对该计算机系统中的板级设备进行初始化,并输出系统信息;
该系统信息包括该计算机系统的硬件列表、相应的端口地址以及内存大小的信息。
该板级设备初始化完,该板级核心模块调用该MAPPER模块的入口函数,该MAPPER模块执行该模块内部保存的初始化函数完成自身的初始化,读取并解析所述板级核心模块输出的系统信息,根据所述系统信息创建和维护所述系统信息表格。该表格包括该计算机系统的硬件列表、相应的端口地址以及内存大小的信息。该MAPPER模块还初始化BIOS数据区中(BDA)和扩展BIOS数据区(EBDA)的数据,维护该为启动操作系统所准备的表格包括可编程中断请求(PIRQ)表格和高级配置与电源接口(ACPI)表格等。该板级核心模块和该MAPPER模块都是开源BIOS相关的,即其功能和结构都取决于该开源BIOS的功能和结构。
步骤302:该板级核心模块设置扫描Option ROM算法扫描基址为0xD0000,并保存该扫描基址;
该操作系统接口模块包括多个Option ROM,每个Option ROM对应一个服务例程,该Option ROM包括服务例程、该服务例程的初始化例程和可选择性唯读记忆体头(Option ROM Header)。
该服务例程的初始化例程包括该服务例程的入口地址信息;该OptionROM Header包括该服务例程的签名、大小和该服务例程的初始化例程地址的信息。该服务例程的大小信息是该服务例程未压缩时占内存空间的大小的信息。该Option ROM的格式兼容工业《即插即用BIOS规范》。
步骤303:该板级核心模块根据保存的扫描算法基址扫描该操作系统接口模块中的Option ROM,并进行奇偶校验;
该板级核心模块扫描地址0xD0000处的Option ROM Header,查询其是否包含签名“55AA”,如是,则确定该地址处存在一个Option ROM,否则,该板级核心模块以512字节为单位更新扫描的基址。该板级核心模块确定地址处存在一个Option ROM,还查询该Option ROM Header中保存的该服务例程大小的信息,根据该Option ROM的大小,对该Option ROM整体进行奇偶校验。
步骤304:该板级核心模块判断该奇偶校验和是否正确,正确,执行步骤305,否则,执行步骤306;
对该Option ROM整体进行奇偶校验是为了保证数据的完整性,其他用于保证数据完整性的校验算法,如CRC算法也适用于本发明所述的方法。
步骤305:该板级核心模块初始化该Option ROM,执行步骤307;
该板级核心模块根据该Option ROM Header中表示该Option ROM大小的信息,更新扫描Option ROM算法的起始地址,调用该Option ROM Header中指定的该Option ROM对应的服务例程的初始化例程的函数入口,初始化该服务例程。该Option ROM对应的服务例程的初始化例程注册该服务例程的入口地址到该MAPPER模块维护的中断服务向量表(IVT)中。
该服务例程初始化过程中需要判断该服务例程操作的相关硬件是否存在,或查询端口地址或可用内存大小时,该操作系统接口模块查询该MAPPER模块维护的系统信息表格获得需要的信息。如磁盘服务例程INT13H初始化需要判断是否存在软盘、硬盘或光盘,则该操作系统接口模块查询该MAPPER模块维护的系统信息表格中的硬件列表得到需要的信息,如果存在相应的硬件,则该Option ROM对应的服务例程的初始化例程注册该服务例程INT13H的函数入口地址到该MAPPER模块维护的中断服务向量表中。对于INT12H其用于向操作系统报告内存大小的信息,在INT12H初始化过程中,该操作系统接口模块无需检测内存的大小,直接从该MAPPER模块维护的系统信息表格中查询所述信息。
步骤306:该板级核心模块以512字节为单位,对该扫描Option ROM算法的基址递增1个单位,执行步骤307;
步骤307:判断扫描算法基址是否大于0xEFFFF,是,则执行步骤308,否则,执行步骤303;
由于板级核心模块的物理地址从0xF0000开始,因此,对操作系统接口模块中Option ROM的扫描不能超过该地址,如果该扫描算法基址是否大于0xEFFFF,说明所有Option ROM已经扫描完毕。
步骤308:该操作系统接口模块初始化完毕后,该板级核心模块根据用户的设置,从指定的地址加载操作系统,该指定的地址为软盘、硬盘或CDROM;
步骤309:引导并运行操作系统。
该操作系统接口模块初始化各服务模块后,将控制权交给该MAPPER模块,该MAPPER模块通过函数调用,执行INT19H中断处理例程,该例程输出显示信息,提示用户输入信息选择启动,进行操作系统的引导。
上述步骤303-306该计算机系统启动过程中该板级核心模块初始化操作系统接口模块中的Option ROM的处理如图5所示,该Option ROM对应的服务例程以磁盘服务例程INT13H为例,具体包括以下步骤:
步骤401:该板级核心模块扫描该操作系统接口模块中的一个OptionROM,扫描到该Option ROM的签名“55AA”;
步骤402:根据该Option ROM Header中表示该Option ROM对应的服务例程的大小的信息计算整个该Option ROM的奇偶校验和;
该Option ROM的数据单元以512字节为单位,该Option ROM对应的服务例程的大小为512字节的整数倍。
步骤403:判断该奇偶校验和是否正确,是,则执行步骤405,否则执行步骤404;
步骤404:以512字节为单位,对该扫描Option ROM算法的起始地址递增1个单位,执行步骤409;
步骤405:根据该Option ROM Header中该Option ROM大小的信息更新该扫描Option ROM算法的基址,调用该Option ROM Header中指定的该Option ROM即INT13H的函数入口,调用并执行该INT13H服务例程的初始化例程,初始化中断服务例程INT13H并注册INT13H服务例程的入口地址到到该MAPPER模块维护的中断服务向量表中;
步骤406-408均为该操作系统接口模块中该Option ROM相关的处理。
步骤406:控制权交给该操作系统接口模块中的该Option ROM,INT13H;
INT13H对于大型商业非开源操作系统,如Windows操作系统,至关重要,该服务负责引导整个操作系统运行。
步骤407:该Option ROM检测和初始化INT13H相关的硬件,包括软盘、硬盘和光盘CD ROM,初始化相应的控制器;
该Option ROM通过读取硬件寄存器信息检查这些硬件是否损坏,检测和初始化完毕,修改中断向量表中的相应向量INT13H*4,将该Option ROM的服务例程的入口地址写入中断服务向量表中,该入口地址可以以段值和偏移的形式写入该中断服务向量表,并将检测得到的硬件信息保存在非易失性存储器中,如互补型金属氧化物半导体(CMOS),以便操作系统使用。
步骤408:当前Option ROM放弃控制权,将该控制权交还给该板级核心模块;
步骤409:该板级核心模块重新获得控制权,进行扫描下一个OptionROM,进行该下一个Option ROM的检测。
本发明的板级核心模块和操作系统接口模块都支持Option ROM Header格式,并利用该Option ROM Header中的信息进行通信。由于该操作系统接口模块中的Option ROM独立于板级核心模块,因此本发明可以方便地为开源BIOS支持非开源操作系统,如Windows操作系统,提供必要的支持。而且本发明该板级核心模块和该操作系统接口模块采用的开发环境可以相同亦可以不同,该开发环境包括:编程语言、编译环境和交叉编译需求等。
由于大多数开源BIOS对板级设备支持较好,本发明的方法只需对现有开源BIOS做少量修改进行扩展,即可实现该板级核心模块的功能。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求所述的保护范围为准。