Legacy protocol知识总结

由C写成的EfiCompatibility code存在于EFI环境中,它构成了一些protocols。

1,Legacy BIOS Protocol

LegacyBios module构成了CSM的框架,所以Legacy BIOS Protocol 是CSM的基本protocol,作用于platform与hardware之间。这个protocol包括以下function:

BootUnconventionalDevice() ;   CheckPciRom() ;  CopyLegacyRegion();

GetLegacyRegion();            FarCall86() ;      GetBbsInfo() ;

GetLegacyRegion() ;            Int86() ;        InstallPciRom() ;

LegacyBoot() ;             PrepareToBootEfi() ; ShadowAllLegacyOproms()  ;

UpdateKeyboardLedStatus();

2,Legacy BIOS Platform Protocol

Platform特有的protocol。当使用同一chipset时,该protocol提供独一无二的信息来比较两个platform。这个protocol包括以下function:

GetPlatformHandle() ;   GetPlatformInfo() ;   GetRoutingTable();

PlatformHooks() ;       PrepareToBoot() ;    SmmInit() ;

TranslatePirq()

3,Legacy Region Protocol 

管理硬件使得0xC0000 到0xFFFFF之间的物理区域变为RO或RW。

这个protocol包括以下function:

Decode() ;          Lock()(write protect) ;

BootLock() ;         Unlock()(read-write) ;

4,Legacy 8259 Protocol

在保护模式和实模式下通过管理硬件控制8259 PIC。这个protocol包括以下function:

SetVectorBase() ;    GetMask() ;    SetMask() ;

SetMode() ;        GetVector() ;    EnableIrq() ;

DisableIrq() ;    GetInterruptLine();  EndOfInterrupt();

5,Legacy Interrupt Protocol

Chipset特有protocol,管理硬件来为PCI分配IRQs。这个protocol包括以下function:

GetNumberPirqs() ;          GetLocation() ;

ReadPirq() ;                 WritePirq() ;

 

Compatibility16 function

这个function允许EfiCompatibility code与Compatibility16 code交互,下面列出主要的function:

·Compatibility16InitializeYourself() 

允许Compatibility16做一些初始化(0xE0000 to 0xFFFFF RW)

·Compatibility16UpdateBbs()

允许Compatibility16 code更新CSM’s BBS data structures为一些关联INT13, INT18, INT19的OpROM。(0xE0000 to 0xFFFFF RW)

·Compatibility16PrepareToBoot()

允许booting a traditional OS前Compatibility16 code做一些动作。(0xE0000 to 0xFFFFF RW)

·Compatibility16Boot()

booting a traditional OS前最后一个function。(0xE0000 to 0xFFFFF write protect)

·Compatibility16RetrieveLastBootDevice()    

检索最后一个boot device的priority number. (0xE0000 to 0xFFFFF write protect)

·Compatibility16DispatchOprom()

将控制权交给OpROM initialization address,这个地址允许Compatibility16

Code的一些操作。(0xE0000 to 0xFFFFF write protect,当OpROMs位于0xExxxx区域时 RW)

·Compatibility16GetTableAddress() 

请求Compatibility16分配一块制定大小的区域在0xE0000–0xFFFFF之间,EfiCompatibility code会复制数据到这块区域。(0xE0000 to 0xFFFFF RW)

·Compatibility16SetKeyboardLeds() 

允许Compatibility16 code更新keyboard LED state下的任何不标准数据结构。(0xE0000 to 0xFFFFF RW)

·Compatibility16InstallPciHandler() 

使得Compatibility16 code安装一个IRQ handler为大量没有OpROM关联的存储设备,例如SATA.

转载于:https://www.cnblogs.com/wudibuzaijia/p/8490830.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值