论文部分内容阅读
【摘 要】随着计算机的不断发展,传统的BIOS固件已经不能继续满足其发展了。因此,新的固件技术UEFI应运而生。论文结合UEFI的定义,以及其所呈现的优势,进一步进行嵌入式驱动程序的开发,在其开发过程中引入了UEFI驱动模型,并总结而出通用的驱动程序开发步骤,为UEFI固件技术的稳步发展提供新的保障。
【关键词】UEFI 嵌入设备 驱动程序
随着计算机技术的进一步发展,传统的固件技术已不能满足其进一步发展。于是,提出了UEFI这一技术,克服传统BIOS的缺陷,成为新的固件技术[1]。
一、UEFI概述
(一)UEFI定义
UEFI是Unified Extensible Firmware Interface的缩写,又被称为“统一的可扩展固件接口”。该固件技术主要采用C语言、模块化等参数传统来建立新的网络系统,实现硬件与系统间的有效连接,方式更加灵活。整体而言,就是一个可以扩展,具有一定标准的固件接口规范[2]。
(二)UEFI的优势
UEFI这以可扩展固件接口,是为了取代传统固定,缺少文档仅靠经验进行约定的BIOS固件,具有自身独特的优势。
首先,UEFI超过99%的部分编码都是利用C语言实现的,并且采用了Driver/protocol的新型硬件端口操作方法;其次,UEFI实现了强大的管理工具优势,可以调动计算机设备进行驱动,还能够进行远程系统配置,无需操作系统就能启动管理等;最后UEFI还实现了清晰明了的图形界面组合,由初始化模块、驱动执行环境、驱动程序、兼容支持模块等几大部分共同构成。同时,由于UEFI内部设置了图形驱动,因此根据彩色图形,可以通过鼠标进行调整配置。所以,UEFI较BIOS具有强大的可扩展性、兼容性、图形界面以及鼠标操作性等优势,势必成为主流固件接口技术。
二、UEFI嵌入式驱动程序开发
(一)UEFI驱动程序简介
计算机程序都存在一定的入口,也就是通常所说的接口,主函数,将其输入计算机系统后,编译器会自动进行识别并执行命令。而对于应用程序与驱动程序,一般都是PE映像头中的Sub-system来进行区分的。UEFI驱动程序都是由其引导管理器进行的加载,或者可以通过UEFI固件和应用程序来加载驱动,是不能够直接进行的一种操作方式。在计算机系统进行应用程序加载时,固件就会保留一定的空间进行映像储存,待程序加载完毕后,就会逐步向计算机驱动程序转移。当然程序返回情况有所不同,从驱动程序入口点返回EFI-SUCCESS,不需要卸载驱动程序,只有当出现错误代码时,才要将驱动程序卸载后返回UEFI组件。
(二)UEFI嵌入式驱动程序开发分析
UEFI的启动操作系统,根据现代软件体系分为四个阶段来具体实现,是进行复杂的嵌入式系统程序的基础,其主要运行机理如图所示:
图1 UEFI启动操作流程图
根据UEFI的启动操作程序,可以发现其嵌入式驱动程序的开发是一个复杂漫长的过程,而为了简化UEFI的驱动程序开发,大量的引进了驱动模型,更方便阐述驱动程序开发的过程及原理。
1.UEFI驱动模型
UEFI驱动模型主要通过对多种协议的组装整合,实现了硬件驱动。而且根据能否创建子控制器,UEFI驱动模型分为总线驱动、设备驱动两种[3]。它能有效的将计算机硬件与驱动程序分离,尽可能的减小驱动程序多占空间,整体维护系统的可扩展性。
2.UEFI嵌入式驱动程序开发过程
利用计算机进行的驱动程序开发,包括USB键盘以及鼠标等搜狐死常见的,但是复杂的嵌入式驱动程序开发还未被广泛应用。而要实现计算机UEFI嵌入式驱动程序的开发,就必须先掌握驱动程序开发的通用方法,了解驱动程序开发过程中,函数与协议的结合使用。
陕西某职业电子信息学院针对计算机UEFI嵌入式驱动程序开发技术原理及步骤,进行了驱动程序ProtocolImpll的开发实例研究。该驱动程序主要是利用UEFI指纹设备驱动实现的,注册Protocol为其程序辨别器,通过第三方来进行指纹设备驱动,完成嵌入式UEFI驱动程序开发[5]。首先利用ProtocolConsume找寻ProtocolImpll的具体位置,将其作为UEFI固件接口,然后完成该接口的程序功能。
通过UEFI函数Install-ProtocolInterface来安装驱动程序,进行指纹硬件设备驱动,就能很好的实现ProtocolImpll这一嵌入式驱动程序。在驱动程序开发过程中,依照通用的程序协议步骤,就能完成最后执行镜像的文件INF,它包含了C语言程序的定义、构成、链接库以及其他有效信息。最后将INF输入预定的DSC文件中,自动使用GenMake生成二进制的镜像文件,就能实现指纹驱动程序。
三、结语
UEFI作为新的固件技术,在技术上具有传统BISO固件技术所不能比拟的优势。尤其是利用C语言进行整个系统的编码,能够打破过去固定的经验之谈,扩大系统的兼容性与扩展性。不仅如此,UEFI在程序的开发应用上也具有一定的优势,实践总结出驱动程序开发的一般步骤方法,为UEFI进行嵌入式驱动程序开发奠定了良好的基础。
参考文献:
[1]余超志,朱泽民.新一代BIOS-EFI-CSSBIOS技术研究[J].山东:科技信息(学术版),2006(5):14-15.
[2]庄克良,高云岭,纪向尚.UEFI BIOS在复杂嵌入式系统中的可应用性的研究[J].湖北:舰船电子工程,2009(12):156-158,163.
[3]崔莹,辛晓晨,沈钢纲.基于UEFI的嵌入式驱动程序的开发研究[J].北京:计算机工程与设计,2010(10):1384-2387.
【关键词】UEFI 嵌入设备 驱动程序
随着计算机技术的进一步发展,传统的固件技术已不能满足其进一步发展。于是,提出了UEFI这一技术,克服传统BIOS的缺陷,成为新的固件技术[1]。
一、UEFI概述
(一)UEFI定义
UEFI是Unified Extensible Firmware Interface的缩写,又被称为“统一的可扩展固件接口”。该固件技术主要采用C语言、模块化等参数传统来建立新的网络系统,实现硬件与系统间的有效连接,方式更加灵活。整体而言,就是一个可以扩展,具有一定标准的固件接口规范[2]。
(二)UEFI的优势
UEFI这以可扩展固件接口,是为了取代传统固定,缺少文档仅靠经验进行约定的BIOS固件,具有自身独特的优势。
首先,UEFI超过99%的部分编码都是利用C语言实现的,并且采用了Driver/protocol的新型硬件端口操作方法;其次,UEFI实现了强大的管理工具优势,可以调动计算机设备进行驱动,还能够进行远程系统配置,无需操作系统就能启动管理等;最后UEFI还实现了清晰明了的图形界面组合,由初始化模块、驱动执行环境、驱动程序、兼容支持模块等几大部分共同构成。同时,由于UEFI内部设置了图形驱动,因此根据彩色图形,可以通过鼠标进行调整配置。所以,UEFI较BIOS具有强大的可扩展性、兼容性、图形界面以及鼠标操作性等优势,势必成为主流固件接口技术。
二、UEFI嵌入式驱动程序开发
(一)UEFI驱动程序简介
计算机程序都存在一定的入口,也就是通常所说的接口,主函数,将其输入计算机系统后,编译器会自动进行识别并执行命令。而对于应用程序与驱动程序,一般都是PE映像头中的Sub-system来进行区分的。UEFI驱动程序都是由其引导管理器进行的加载,或者可以通过UEFI固件和应用程序来加载驱动,是不能够直接进行的一种操作方式。在计算机系统进行应用程序加载时,固件就会保留一定的空间进行映像储存,待程序加载完毕后,就会逐步向计算机驱动程序转移。当然程序返回情况有所不同,从驱动程序入口点返回EFI-SUCCESS,不需要卸载驱动程序,只有当出现错误代码时,才要将驱动程序卸载后返回UEFI组件。
(二)UEFI嵌入式驱动程序开发分析
UEFI的启动操作系统,根据现代软件体系分为四个阶段来具体实现,是进行复杂的嵌入式系统程序的基础,其主要运行机理如图所示:
图1 UEFI启动操作流程图
根据UEFI的启动操作程序,可以发现其嵌入式驱动程序的开发是一个复杂漫长的过程,而为了简化UEFI的驱动程序开发,大量的引进了驱动模型,更方便阐述驱动程序开发的过程及原理。
1.UEFI驱动模型
UEFI驱动模型主要通过对多种协议的组装整合,实现了硬件驱动。而且根据能否创建子控制器,UEFI驱动模型分为总线驱动、设备驱动两种[3]。它能有效的将计算机硬件与驱动程序分离,尽可能的减小驱动程序多占空间,整体维护系统的可扩展性。
2.UEFI嵌入式驱动程序开发过程
利用计算机进行的驱动程序开发,包括USB键盘以及鼠标等搜狐死常见的,但是复杂的嵌入式驱动程序开发还未被广泛应用。而要实现计算机UEFI嵌入式驱动程序的开发,就必须先掌握驱动程序开发的通用方法,了解驱动程序开发过程中,函数与协议的结合使用。
陕西某职业电子信息学院针对计算机UEFI嵌入式驱动程序开发技术原理及步骤,进行了驱动程序ProtocolImpll的开发实例研究。该驱动程序主要是利用UEFI指纹设备驱动实现的,注册Protocol为其程序辨别器,通过第三方来进行指纹设备驱动,完成嵌入式UEFI驱动程序开发[5]。首先利用ProtocolConsume找寻ProtocolImpll的具体位置,将其作为UEFI固件接口,然后完成该接口的程序功能。
通过UEFI函数Install-ProtocolInterface来安装驱动程序,进行指纹硬件设备驱动,就能很好的实现ProtocolImpll这一嵌入式驱动程序。在驱动程序开发过程中,依照通用的程序协议步骤,就能完成最后执行镜像的文件INF,它包含了C语言程序的定义、构成、链接库以及其他有效信息。最后将INF输入预定的DSC文件中,自动使用GenMake生成二进制的镜像文件,就能实现指纹驱动程序。
三、结语
UEFI作为新的固件技术,在技术上具有传统BISO固件技术所不能比拟的优势。尤其是利用C语言进行整个系统的编码,能够打破过去固定的经验之谈,扩大系统的兼容性与扩展性。不仅如此,UEFI在程序的开发应用上也具有一定的优势,实践总结出驱动程序开发的一般步骤方法,为UEFI进行嵌入式驱动程序开发奠定了良好的基础。
参考文献:
[1]余超志,朱泽民.新一代BIOS-EFI-CSSBIOS技术研究[J].山东:科技信息(学术版),2006(5):14-15.
[2]庄克良,高云岭,纪向尚.UEFI BIOS在复杂嵌入式系统中的可应用性的研究[J].湖北:舰船电子工程,2009(12):156-158,163.
[3]崔莹,辛晓晨,沈钢纲.基于UEFI的嵌入式驱动程序的开发研究[J].北京:计算机工程与设计,2010(10):1384-2387.