当前位置: 首页 > article >正文

UEFI学习笔记(十四):UEFI Driver Model概述

UEFI学习笔记(十四):UEFI Driver Model概述

    • 一、UEFI Driver模型
      • 1、定义
      • 2、如何加载
    • 二、Driver Binding Protocol
      • 1、Supported()
      • 2、Start()
      • 3、Stop()

一、UEFI Driver模型

1、定义

Device Driver 在 DXE 阶段加载,而应用程序则在 BDS 阶段加载。通过在 BDS 启动时访问设备,可以提供相应的输入和输出设备。

引入 Device Driver 旨在实现更好的模块化管理,主要用于设备管理。它支持二进制发布,并可以集成到 Option ROM 中,同时提供清晰的外部接口,从而提升固件的扩展性。

UEFI Driver 主要用于管理 PCI 设备,采用分层架构,具有良好的模块化特性,层次结构清晰。相较之下,DXE Driver 主要负责平台的初始化工作。

2、如何加载

Application:在 DXE 阶段加载,执行入口点(Entry Point),完成驱动初始化,安装相关协议到Handle Database,然后退出入口点,将控制权交给 UEFI Loader。

Driver:同样在 DXE 阶段加载,执行入口点,进行驱动初始化,安装协议,然后退出入口点,将控制权交给 UEFI Loader。驱动提供的服务会一直驻留在内存中,直到执行权转交给操作系统。

二、Driver Binding Protocol

它是UEFI必须要Install的Protocol。有下面三个API:

1、Supported()

该函数用于判断驱动程序是否支持特定的控制器。驱动程序在启动时调用此函数,以检查它是否能够处理指定的设备或控制器。此方法的返回值将决定后续的启动流程是否继续,确保只有兼容的驱动程序被加载。

2、Start()

此函数用于启动基于控制器的驱动程序。当驱动程序被加载并通过 Supported 检查后,Start 函数被调用以初始化驱动程序。该函数负责执行以下任务:

1)初始化设备,配置必要的硬件资源。

2)安装所需的协议,以便其他组件或驱动程序可以访问设备的功能。

3)完成初始化后,Start 函数通常会返回一个成功状态,表明驱动程序已准备就绪。

3、Stop()

Stop 函数用于停止管理特定控制器的驱动程序,并在此过程中卸载相关的协议。当驱动程序不再需要时,Stop 函数被调用,以进行资源清理和释放。该函数执行以下操作:

1)停止对控制器的管理,确保设备处于安全状态。

2)卸载之前安装的协议,确保其他组件不再依赖该驱动程序。

3)返回状态以指示操作的成功与否,确保系统稳定性。


http://www.kler.cn/a/380515.html

相关文章:

  • Python网络爬虫:入门与实战
  • qt QMenuBar详解
  • 通过不当变更导致 PostgreSQL 翻车的案例分析与防范
  • 提高文本处理效率:精通awk命令中的$NF
  • SpringBoot在线教育系统:集成第三方服务
  • 浅谈QT中Tab键的切换逻辑
  • CentOS系统中查看内网端口映射的多种方法
  • C 语言编程中的常见错误及解决方案
  • 科研绘图系列:R语言组合堆积图(stacked plot)
  • 7.0、RIP
  • vue3中跨层传递provide、inject
  • qt QComboBox详解
  • 软件压力测试有多重要?北京软件测试公司有哪些?
  • 论负载均衡技术在Web系统中的应用
  • spark的RDD分区的设定规则
  • Intellij IDE报错:[Information:java:javacTask:源发行版8需要目标发行版1.8]
  • PostgreSQL技术内幕17:PG分区表
  • 【初阶数据结构与算法】复杂度分析练习之轮转数组(多种方法)
  • Java json转换实体类(JavaBean),实体类(JavaBean)转换json
  • Visual Studio | 配置管理
  • DMRl-Former用于工业过程预测建模和关键样本分析的数据模式相关可解释Transformer网络
  • 【网络】自定义协议——序列化和反序列化
  • 如何为STM32的EXTI(外部中断)编写程序
  • 使用Django Channels实现WebSocket实时通信
  • 数据泄露后的安全重构:文件安全再思考
  • 【C++】布隆过滤器的概念与特点解析