UEFI Driver编写

本文介绍了如何在UEFI Shell环境下编写设备驱动,强调了通过定义唯一GUID和使用InstallProtocolInterface来实现驱动挂接的方法,使得驱动具有良好的通用性和平台适应性。在UEFI环境中,驱动的调用和加载方式类似于Linux系统,允许通过标准接口调用,简化了测试和适配过程。然而,UEFI对于某些总线驱动如SVID和LPC等的定义尚不完善,这仍然是一个挑战。
摘要由CSDN通过智能技术生成

最近有想在UEFI SHELL下实现所有设备的测试和访问,而且要做的平台通用性,UEFI的protocol很好支持,但是很多硬件的驱动是在PEI阶段或者没有加入规范,于是按照driver的形式写这些驱动,需要调用的时候去找这些driver的GUID来调用,这样整个调用框架不变,只要每次加载不同平台的driver就可以。有点类似linux的思路,下面代码均载录EDK SHELL。


1、首先,定义一个GUID,这个GUID是唯一的,并且不能重复,以后就是通过GUID来找这个Driver。

#define EFI_CPU_ARCH_PROTOCOL_GUID \
  { 0x26baccb1, 0x6f42, 0x11d4, {0xbc, 0xe7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }

2、然后定义一个方法的集合,比如EnableInterrupt、DisableInterrupt。这里的EnableInterrupt、DisableInterrupt是函数指针,具体的实现后面会讲到

typedef struct _EFI_CPU_ARCH_PROTOCOL   EFI_CPU_ARCH_PROTOCOL;

///
/// The EFI_CPU_ARCH_PROTOCOL is used to abstract processor-specific functions from the DXE
/// Founda
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值