应用于bios的虚拟磁盘实现方法

文档序号:6339259阅读:371来源:国知局
专利名称:应用于bios的虚拟磁盘实现方法
技术领域
本发明涉及虚拟磁盘技术,更具体地说,涉及一种应用于BIOS的虚拟磁盘实现方法。
背景技术
客户要求在BIOS Flash中预留一段空间用来存储重要信息的需求在不断增加。 目前的做法是BIOS按需求空出有限的空间,给客户提供对BIOS Flash操作的编程接口,其编程接口目前没有统一规定,因此这种做法要求客户在其程序中必须严格按照BIOS提供的接口来操作BIOS Flash中的数据,如将其数据写入或读出,这类操作较为繁琐,且容易出错。一旦客户数据超出了预留区域,很有可能导致客户主板BIOS无法正常开机工作。而且当客户的主板硬件方案进行更新或改变时,还需要重新定制BIOS,并按照新的编程指导进行操作,带来开发上的很多不便。而在工控领域中,存在着对磁盘存储空间要求不高(可能几兆即可),但抗震性要求很高的需求。目前大部分用户采用DOC固态磁盘或CF卡等固态存储媒介来满足这类需求,但这就必须要求主板提供有此类接口,而由于技术的发展,这类接口都已退出主流,甚至在很多新平台中都不再支持。为满足工控行业的这类特殊需求,目前业界有采用转换芯片来支持此类接口,这样不但增加主板成本,也存在着一些兼容性的问题。同时,通过外设提供存储空间的方法仍难以避免在高度振动条件下造成接触不良的问题。

发明内容
本发明要解决的技术问题在于,针对现有技术的上述移植性差、操作复杂、容易出错的缺陷,提供一种应用于BIOS的虚拟磁盘实现方法。本发明解决其技术问题所采用的技术方案是构造一种应用于BIOS的虚拟磁盘实现方法,包括在BIOS中预留连续的存储空间以用作BIOS虚拟磁盘;在BIOS中增加嵌入式虚拟磁盘(EVD)模块;在BIOS上电自检过程中,解压EVD模块于内存中;更新磁盘数量,更新BIOS的中断服务程序入口地址;调用EVD模块的中断服务程序,对BIOS虚拟磁盘进行读写操作。在本发明所述的虚拟磁盘实现方法中,在BIOS中增加EVD模块具体包括按照Option ROM的格式在BIOS中增加EVD模块。本发明还提供另一种应用于BIOS的虚拟磁盘实现方法,包括在BIOS中预留连续的存储空间以用作BIOS虚拟磁盘;在BIOS中增加嵌入式虚拟磁盘(EVD)模块;在BIOS上电自检过程中,解压EVD模块于内存中;在内存中预留一段连续的存储空间以用作RAM虚拟磁盘,并将BIOS虚拟磁盘中的内容镜像拷贝至RAM虚拟磁盘中;更新磁盘数量,更新BIOS的中断服务程序入口地址;调用EVD模块的中断服务程序,对RAM虚拟磁盘进行读写操作。在本发明所述的虚拟磁盘实现方法中,还包括调用EVD模块的中断服务程序,实现BIOS虚拟磁盘的更新。在本发明所述的虚拟磁盘实现方法中,调用EVD模块的中断服务程序,实现BIOS 虚拟磁盘的更新的步骤具体为调用EVD模块的INTUh中断服务程序,将RAM虚拟磁盘中的内容镜像拷贝到BIOS 虚拟磁盘中,实现对BIOS虚拟磁盘的更新。在本发明所述的虚拟磁盘实现方法中,在BIOS中增加EVD模块具体包括按照Option ROM的格式在BIOS中增加EVD模块。本发明的有益效果是,用户可方便地将自己重要的数据存放到BIOS虚拟磁盘中, 并可以像访问磁盘一样,对BIOS虚拟磁盘中的数据进行读写,用户可在本发明提供的BIOS 虚拟磁盘上进行二次开发,利用该虚拟磁盘存放测试工具、注册码、电子标签、微型操作系统、备份还原工具等等。对于要求存储容量不大的应用环境,可以采用本发明的方案替代固态存储媒介,节约成本,兼容性好,提高了系统的整体抗振性能。在本发明提供的另一种虚拟磁盘实现方法中,用内存做虚拟磁盘,直接对RAM虚拟磁盘进行读写操作,若用户最终需要更新BIOS虚拟磁盘中的内容时,通过调用EVD模块的中断服务程序(INT13h)可实现将用户的数据内容从RAM虚拟磁盘更新至BIOS虚拟磁盘中,兼容性和可移植性更好,减少对BIOS Flash中BIOS Disk区域的擦写次数,提高了 BIOS Flash的使用寿命。此外,由于数据是在RAM Disk中进行读写,不会受到病毒感染,提高了 BIOS虚拟磁盘的安全性。


下面将结合附图及实施例对本发明作进一步说明,附图中图1是依据本发明一实施例的应用于BIOS的虚拟磁盘实现方法流程示意图;图2是依据本发明另一实施例的应用于BIOS的虚拟磁盘实现方法流程示意图;图3是图2中应用于BIOS的虚拟磁盘实现方法的详细流程示意图。
具体实施例方式图1是依据本发明一实施例的应用于BIOS的虚拟磁盘实现方法100流程示意图。 虚拟磁盘实现方法100包括步骤101,在BIOS中预留连续的存储空间以用作BIOS虚拟磁盘。也就是说,在 BIOS Flash中预留一部分连续的存储空间,确保BIOS自身代码不会用到这部分空间。该连续的存储空间一般预留在BIOS芯片中最开始的一段,如4M的BIOS Flash芯片,可以预留前3M的空间给BIOS虚拟磁盘用,最后IM用于存放BIOS自身代码。BIOS通常是以ROMHole的形式预留连续的存储空间,即在编译BIOS过程中声明一段空间是预留的, 这样在编译时就将之前预留的那部分空出,BIOS代码不会占用这部分空间。下文中将这部分BIOS中预留的连续存储空间称作BIOS虚拟磁盘(BIOS Disk);
步骤102,在BIOS中增加EVD (Embedded Virtual Disk,嵌入式虚拟磁盘)模块, 用以支持虚拟磁盘技术。EVD模块是按照Option ROM的格式加入到BIOS中,并经过了压缩,不能直接运行。EVD模块是一个标准的Option ROM, Option ROM的格式在Plug and Play BIOS Specification 中有定义。步骤103,在BIOS上电自检过程中,解压EVD模块于内存中。系统上电,硬件开机上电和硬件复位完毕后首先执行BIOS程序,完成对硬件的初始化工作;在BIOS POST (Power On SelfTest,上电自检)过程中,BIOS首先将EVD模块解压到内存当中;EVD模块解压到内存的位置,根据实际平台上带有Option ROM设备的多少而异,通常在内存位置C0000h-E0000h这段范围内,具体的位置由BIOS代码自身决定,通常先扫描C0000h-E0000h这段内存,找到空闲的位置,并按页对齐进行分配;步骤104,更新磁盘数量;更新BIOS的磁盘中断服务程序入口地址。更新磁盘数量,是通过更改BIOS Data Area内存区域中对应的磁盘数量标记位, 比如EVD模块将BIOS虚拟磁盘虚拟成软盘,则通过更改BDA 410h内存位置的内容,来增加磁盘数量。增加磁盘数量的目的是告知BIOS这个BIOS Disk设备是个磁盘设备,这样,BIOS 会为BIOS Disk建立一个对应的中断服务接口,这个中断服务接口就是EVD模块的INT13h 中断服务接口,相当于注册BIOS Disk设备,提供访问BIOS Disk这个存储设备的接口服务。更新BIOS中断服务程序INT13h的入口,使其指向EVD模块的中断服务程序入口地址,即注册EVD模块的中断服务程序(INT13h),这样依据BBS (BIOS Boot Specification,BIOS引导规范)规范实现EVD模块与EVD模块的INT13h中断服务程序进行绑定,当访问虚拟磁盘时,调用的中断服务程序INTUh是EVD模块的INT13h ;步骤105,调用EVD模块的中断服务程序,对BIOS虚拟磁盘进行读写操作。如果用户需要访问BIOS虚拟磁盘,则调用EVD模块的中断服务程序(INT13h),对 BIOS Disk进行读写操作。上面所述的技术方案直接通过对BIOS Disk区域进行读写操作,实现直接擦写 BIOS Disk。图2是依据本发明另一实施例的应用于BIOS的虚拟磁盘实现方法200流程示意图。虚拟磁盘实现方法200包括步骤201,在BIOS中预留连续的存储空间以用作BIOS虚拟磁盘;步骤202,在BIOS中增加EVD模块;步骤203,在BIOS上电自检过程中,解压EVD模块于内存中;步骤204,在内存中预留一段存储空间以用作RAM虚拟磁盘(RAM Disk),并将BIOS 虚拟磁盘中的内容镜像拷贝至RAM虚拟磁盘中;步骤205,更新磁盘数量,更新BIOS的中断服务程序入口地址;步骤206,调用EVD模块的中断服务程序,对RAM虚拟磁盘进行读写操作。在图2所示的方案中,如用户需要更新BIOS虚拟磁盘,则调用EVD模块的中断服务程序,实现BIOS虚拟磁盘的更新。具体的更新方法为将RAMDisk中的内容镜像拷贝到 BIOS Disk中,实现对BIOS虚拟磁盘的更新。
在图2所示的方案中,用内存做虚拟磁盘,实现对虚拟磁盘进行读写操作。用户需要更新BIOS虚拟磁盘时才将RAM Disk的内容镜像拷贝到BIOS Disk中。这样做的目的是为了提高此方案的兼容性和可移植性,减少对BIOS Flash芯片中BIOS Disk区域的擦写次数。关于图2中各个步骤的详细阐述详见图3。在图3中,虚拟磁盘实现方法300包括步骤301,在BIOS Flash中预留一部分连续存储空间,确保BIOS自身代码不会用到这部分空间,本发明将这部分BIOS中预留的连续的存储空间称作BIOS Disk ;步骤302,在BIOS中增加EVD模块(该模块是按照Option ROM的格式加入到BIOS 中,并经过了压缩,不能直接运行),用以支持虚拟磁盘技术;步骤303,系统上电,硬件开机上电和硬件复位完毕后首先执行BIOS程序,完成对硬件的初始化工作;步骤304,在 BIOS POST (Power On SelfTest,上电自检)过程中,BIOS 首先将 EVD 模块解压到内存当中;步骤305,调用驻留在内存当中的EVD模块初始化程序(初始化程序,相当于一个函数,BIOS运行过程中会调用到,对RAM Disk进行初始化),在内存中声明一段预留空间, 作为虚拟磁盘(RAM虚拟磁盘,或称为RAM Disk),将BIOS Disk中的内容镜像拷贝到RAM Disk中,完成虚拟磁盘RAM Disk的初始化工作;在内存中声明的这段预留空间的位置是在高端内存,在64M以上即可,通常放到最大可用内存之下的一段连续内容,这样只要确保操作系统不会用到这段内存即可;步骤306,更新磁盘数量,更新BIOS中断服务程序INT13h的入口,指向EVD模块的中断服务程序入口地址,即注册EVD模块的中断服务程序(INT13h),这样依据BBS (BIOS Boot Specification, BIOS引导规范)规范实现EVD模块与EVD模块的INT 13h中断服务程序进行绑定,当访问虚拟磁盘时,调用的中断服务程序INTia1是EVD模块的INT13h ;步骤307,POST自检完毕;步骤308,如果需要访问BIOS Disk,则调用中断服务程序时会映射到EVD模块的 INT 13h中断服务程序,对RAM Disk进行读写操作;步骤309,如果需要更新BIOS Disk区域,则调用EVD INTUh的中断服务程序(EVD 的INTia1服务程序中,比标准的INTia1服务程序多提供了一个接口功能,具体接口可以自行定义,例如标准INTi;3h服务没有规定AH = 87h的功能,EVD INT 13h提供了 AH = 87h 的功能,这是自定义的)JfRAM Disk内容拷贝到BIOS Disk中,实现BIOS Disk区域的更新。这样用户的数据可以很方便的更新到BIOS Disk中。在图2、3所述的方案中,用内存做虚拟磁盘,实现对虚拟磁盘进行读写操作。这样做的目的是为了提高此方案的兼容性,和可移植性,减少对BIOS Flash中BIOS Disk区域的擦写次数,提高了 BIOS Flash的使用寿命。此外,由于数据是在RAM Disk中进行读写, 不会受到病毒感染,提高了 BIOS虚拟磁盘的安全性。本发明的方案提供一个方便用户操作的BIOS Disk,并将BIOS Disk的内容镜像拷贝到RAM Disk中,用户可以像访问磁盘一样, 在RAM Disk中对数据进行读写,当需要更新BIOS Disk内容时,通过调用EVD模块特有的中断INTlIBh接口实现用户的数据内容从RAM Disk更新至BIOS Disk中。在图1所示的方案中,直接通过对BIOS Disk区域进行读写操作,这样无需将BIOS Disk内容镜像到RAM Disk当中,而且可以实现直接擦写BIOS Disk区域,无需调用EVD模块特殊的INTUh接口功能。但这种方法不足之处是对BIOS Flash的擦写操作大大增加,移植性较差。本发明提供的应用于BIOS的虚拟磁盘实现方法,用户可在此基础上进行二次开发,利用该方法提供的虚拟磁盘存放测试工具、注册码、电子标签、微型操作系统、备份还原工具等等。对于要求存储容量不大的应用环境,可以采用此方法替代固态存储媒介的实现方法,节约成本,兼容性好,提高了系统的整体抗振性能。本发明所提供的方案也适用于使用EFI的计算机系统。EFI (Extended Firmware hterface,可扩展固件接口 )也是一种BIOS,它是BIOS的升级方案,其实现方式与上面所述的BIOS实现方式原理相同,在此不赘述。
权利要求
1.一种应用于BIOS的虚拟磁盘实现方法,其特征在于,包括 在BIOS中预留连续的存储空间以用作BIOS虚拟磁盘;在BIOS中增加嵌入式虚拟磁盘(EVD)模块; 在BIOS上电自检过程中,解压EVD模块于内存中; 更新磁盘数量,更新BIOS的中断服务程序入口地址; 调用EVD模块的中断服务程序,对BIOS虚拟磁盘进行读写操作。
2.根据权利要求1所述的虚拟磁盘实现方法,其特征在于,在BIOS中增加EVD模块具体包括按照Option ROM的格式在BIOS中增加EVD模块。
3.一种应用于BIOS的虚拟磁盘实现方法,其特征在于,包括 在BIOS中预留连续的存储空间以用作BIOS虚拟磁盘;在BIOS中增加嵌入式虚拟磁盘(EVD)模块; 在BIOS上电自检过程中,解压EVD模块于内存中;在内存中预留一段连续的存储空间以用作RAM虚拟磁盘,并将BIOS虚拟磁盘中的内容镜像拷贝至RAM虚拟磁盘中;更新磁盘数量,更新BIOS的中断服务程序入口地址; 调用EVD模块的中断服务程序,对RAM虚拟磁盘进行读写操作。
4.根据权利要求3所述的虚拟磁盘实现方法,其特征在于,还包括 调用EVD模块的中断服务程序,实现BIOS虚拟磁盘的更新。
5.根据权利要求4所述的虚拟磁盘实现方法,其特征在于,调用EVD模块的中断服务程序,实现BIOS虚拟磁盘的更新的步骤具体为调用EVD模块的INT13h中断服务程序,将RAM虚拟磁盘中的内容镜像拷贝到BIOS虚拟磁盘中,实现对BIOS虚拟磁盘的更新。
6.根据权利要求3所述的虚拟磁盘实现方法,其特征在于,在BIOS中增加EVD模块具体包括按照Option ROM的格式在BIOS中增加EVD模块。
全文摘要
本发明涉及应用于BIOS的虚拟磁盘实现方法,包括在BIOS中预留连续的存储空间以用作BIOS虚拟磁盘;在BIOS中增加嵌入式虚拟磁盘(EVD)模块;在BIOS上电自检过程中,解压EVD模块于内存中;更新磁盘数量,更新BIOS的磁盘中断服务程序入口地址;调用EVD模块的中断服务程序,对BIOS虚拟磁盘进行读写操作。还提供另一种应用于BIOS的虚拟磁盘实现方法。本发明的技术方案提供一个方便用户操作的BIOS虚拟磁盘,通过调用EVD模块的中断服务程序可实现对该BIOS虚拟磁盘的读写操作,用户可在本发明提供的BIOS虚拟磁盘上进行二次开发。对于要求存储容量不大的应用环境,可采用本发明的虚拟磁盘替代固态存储媒介,节约成本,兼容性好,提高了系统的整体抗振性能。
文档编号G06F3/06GK102566935SQ20101059743
公开日2012年7月11日 申请日期2010年12月15日 优先权日2010年12月15日
发明者修惠文, 陈志列 申请人:研祥智能科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1