UEFI规范驱动模型(一):驱动模型包含的要素
来源:互联网 发布:淘宝今日分享任务在哪 编辑:程序博客网 时间:2024/06/06 12:46
UEFI规范中对UEFI Driver的介绍有两章分别是第2章overview(2.5节Uefi Driver Model)和第10章Uefi Driver Model详细介绍,对UEFI类型的驱动即UEFI Driver的实现方式进行了规定,下面结合代码以PS2键盘驱动的实现为例,对UEFI Driver 的实现方式进行介绍,详细如下:
1、PS2键盘驱动的组成:
1)PS2键盘驱动函数实现在Ps2Keyboard.c里面,Ps2Keyboard.c包含在Ps2KeyboardDxe.inf模块里,如图1所示;
2)打开Ps2KeyboardDxe.inf文件,可知该“模块”的入口点为InitializePs2Keyboard();函数,如图2所示,该函数的具体实现即图1中InitializePs2Keyboard();函数;
3)InitializePs2Keyboard();函数中通过EfiLibInstallDriverBindingComponentName2();函数将 gKeyboardControllerDriver()函数注册到Iange Handle上(驱动程序通过LoadImage()protocol加载到内存后,会为其创建一个image handle),gKeyboardControllerDriver()是一个EFI_DRIVER_BINDING_PROTOCOL类型的函数,具体实现见图3;
4)EFI_DRIVER_BINDING_PROTOCOL类型的函数gKeyboardControllerDriver();包括:
EFI_DRIVER_BINDING_PROTOCOL gKeyboardControllerDriver = {
KbdControllerDriverSupported,
KbdControllerDriverStart,
KbdControllerDriverStop,
0xa,
NULL,
NULL
};
其中:
- KbdControllerDriverSupported()函数作用是:“Tests to see if this driver supports a given controller.”
- KbdControllerDriverStar()函数作用是:“ If a driver’s Device Handle Supported() function passes, then the driver can be connected to the controller by calling the driver’s Start() function.”
- KbdControllerDriverStop()函数作用是:“ Stop() function that forces the driver to stop managing a device handle.”
图1 PS2键盘驱动组成
图2 PS2键盘驱动入口函数
图3 gKeyboardControllerDriver()函数的具体实现
- UEFI规范驱动模型(一):驱动模型包含的要素
- UEFI规范驱动模型(二):驱动加载过程
- GSC3280的ADC子系统驱动模型(一)
- Linux驱动模型学习(一)---字符设备驱动模型之一---使用字符设备驱动
- Struts2的模型驱动
- wince的驱动模型
- Struts2的模型驱动
- Struts2的模型驱动
- GPIO的驱动模型
- Struts2的模型驱动
- GPIO的驱动模型
- Struts2的模型驱动
- GPIO的驱动模型
- GPIO的驱动模型
- GPIO的驱动模型
- GPIO的驱动模型
- GPIO的驱动模型
- struts2的模型驱动
- MySQL权限
- HDU1026 Ignatius and the Princess I(BFS)
- EasyPusher/EasyRTMP摄像头偏暗的问题解决
- 【宏观】长期中的一般均衡模型
- java io读取文件乱码解决办法
- UEFI规范驱动模型(一):驱动模型包含的要素
- 3 Zabbix客户端安装及配置
- linux下 安装python3.5、pip
- JVM的GC中对象的age以及JVM内存的分配策略
- 子类继承和调用父类的构造方法
- [NOIP模拟][动态规划]Table
- MYSQL授权表
- python中的浅拷贝和深拷贝
- Linux内核分析-2/时间片轮转多道程序