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

UEFI——Device Path

1 Device Path

设备路径Device Path用于定义到设备的编程路径,设备路径的主要目的是让一个应用程序(例如OS加载器)确定接口正在抽象的设备的物理设备。

设备路径的集合通常称为名称空间。例如,ACPI基于用ASL (ACPI源语言)编写的名称空间。
考虑到EFI不会取代ACPI,而是尽可能遵从ACPI,在EFI中使用ACPI名称空间似乎是合乎逻辑的。
然而,ACPI名称空间是为在操作系统运行时使用而设计的,并不适合平台固件或操作系统加载程序。鉴于此,EFI定义了自己的名称空间,称为设备路径。
设备路径旨在最大限度地利用ACPI名称空间。Device Path中的一个关键结构定义了回ACPI名称空间的链接。设备路径还用于填补ACPI使用标准枚举算法遵从总线的空白。设备路径能够将有关总线上正在使用的设备的信息与标准枚举机制关联起来。设备路径还用于定义文件应该在介质上的位置,或者从哪里加载文件。设备路径的一种特殊情况也可用于支持从遗留介质启动遗留操作系统。
设备路径被设计成这样,操作系统加载程序和操作系统可以告诉平台固件使用哪些设备作为引导设备。这允许操作系统维护与平台固件一致的系统视图。这方面的一个例子是使用网络连接作为引导设备和控制台的“无头”系统。在这种情况下,固件将向操作系统传递网络适配器和网络协议信息,作为这些设备的设备路径中的控制台和引导设备。

2 EFI Device Path Protocol

其函数原型为

/**这个协议可以用于任何设备句柄,来获得相关物理设备和逻辑设备的通用路径或位置信息如果handle逻辑上没有映射到物理设备,那么该句柄不一定支持device path协议设备路径描述句柄所针对的设备的位置设备路径的大小可以从组成设备路径的结构中确定
**/
typedef struct {//设备类型UINT8    Type;    ///< 0x01 Hardware Device Path.///< 0x02 ACPI Device Path.///< 0x03 Messaging Device Path.///< 0x04 Media Device Path.///< 0x05 BIOS Boot Specification Device Path.///< 0x7F End of Hardware Device Path.UINT8    SubType; ///< Varies by Type///< 0xFF End Entire Device Path, or///< 0x01 End This Instance of a Device Path and start a new///< Device Path.UINT8    Length[2]; ///< Specific Device Path data. Type and Sub-Type define///< type of data. Size of data is included in Length.
} EFI_DEVICE_PATH_PROTOCOL

执行UEFI Image可以使用设备路径来匹配它自己的设备驱动程序到特定的设备。注意,执行UEFI操作系统加载程序和UEFI应用程序映像必须通过引导服务设备句柄访问所有物理设备,直到EFI_BOOT_SERVICES.ExitBootServices()被成功调用。UEFI驱动程序只能访问它提供功能的物理设备。

3 Device Path Nodes

设备路径节点主要有六种类型:

  1. Hardware Device Path:此设备路径定义了设备如何附加到系统的资源域,其中资源域就是系统的共享内存、内存映射I/O和I/O空间——PCI设备,vendor自定义的设备,BMC
  2. ACPI  Device Path:此设备路径用于描述未以行业标准方式描述枚举的设备,这些设备必需在ACPI名称空间中使用ACPI AML来描述,此设备路径是到ACPI名称空间的链接。——PCI总线域、显示输出设备、ACPI设备(比如鼠标、键盘)
  3. Messageing Device Path:此设备路径用于描述资源域外设备的连接路径,此设备路径可以描述物理消息传递信息,如SCSI ID或抽象信息,如网络协议IP地址。——IDE设备、USB设备、SATA设备、SAS设备、SCSI设备、UART设备、Vendor自定义对象、MAC地址、IPv4/IPv6地址、其它新兴设备
  4. Media Device Path:此设备路径用于描述由引导服务抽象的媒体部分,例如,媒体设备路径可以定义正在使用的硬盘驱动器上的哪个分区。——硬盘分区、CDROM分区、Vendor自定义的Media、文件路径、UEFI固件分区、UEFI固件文件、RAM Disk
  5. BIOS Boot Specification:此路径设备用于指向引导legacy操作系统,它基于BIOS Boot Specification 1.01——传统的BIOS启动设备
  6. 硬件路径结束:根据子类型,此设备路径用于指示设备路径实例或设备路径结构的结束。——Device Path终结符


 


http://www.mrgr.cn/news/50343.html

相关文章:

  • 【华三】基本QinQ配置实验
  • 【Linux系统编程】第三十二弹---动态库实战指南:从零构建与高效集成的奥秘
  • yjs机器学习常见算法01——KNN(K—近邻算法)
  • SQL进阶技巧:如何删除第N次连续出现NULL值所存在的行?
  • 深刻,深克
  • 唐寅,风流倜傥的艺术天才
  • 【力扣刷题实战】环形链表
  • 安全光幕的Mutting功能
  • fastify 中的 payload 作用
  • Java8开始ConcurrentHashMap,为什么舍弃分段锁?
  • 在vue项目中如何合理高效的使用生命周期钩子函数
  • 智能之眼:如何用监督学习教机器看懂世界
  • 基于springboot的网页时装购物系统(含源码)
  • BASE 原则
  • Redis如何实现高性能和高可用
  • C#中JSON字符串与Dictionary字典的相互转换方法
  • 【Oracle数据库进阶】004.SQL基础查询_聚合、分组、过滤、排序
  • C++对C的扩展(一)---作用域运算符和命名空间
  • 大数据开发电脑千元配置清单
  • 亚洲最具影响力人物颜廷利:心理健康对身体健康的重要影响