UEFI嵌入式驱动程序的开发

更新时间:2024-04-05 作者:用户投稿原创标记本站原创 点赞:5701 浏览:20772

【摘 要】随着计算机的不断发展,传统的BIOS固件已经不能继续满足其发展了.因此,新的固件技术UEFI应运而生.论文结合UEFI的定义,以及其所呈现的优势,进一步进行嵌入式驱动程序的开发,在其开发过程中引入了UEFI驱动模型,并总结而出通用的驱动程序开发步骤,为UEFI固件技术的稳步发展提供新的保障.

【关 键 词】UEFI嵌入设备驱动程序

随着计算机技术的进一步发展,传统的固件技术已不能满足其进一步发展.于是,提出了UEFI这一技术,克服传统BIOS的缺陷,成为新的固件技术[1].

一、UEFI概述

(一)UEFI定义

UEFI是UnifiedExtensibleFirmwareInterface的缩写,又被称为“统一的可扩展固件接口”.该固件技术主要采用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的启动操作系统,根据现代软件体系分为四个阶段来具体实现,是进行复杂的嵌入式系统程序的基础,其主要运行机理如图所示:

图1UEFI启动操作流程图

根据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进行嵌入式驱动程序开发奠定了良好的基础.