BIOS之Option ROM详解

时间:2021-05-23 03:59:34

1. 何为Option ROM

PCI Option ROM又叫PCI Expansion ROM。 它是用于设备初始化和系统boot的code。有的PCI Option ROM被存放在板卡上,而有的则保存在BIOS的binary里面。

2. PCI Option ROM的分类

Option ROM按版本分有2.1的Option ROM和3.0的Option ROM.

> 通过查看PCI data structure的0x12处可以得到revision level信息。

按 class type分有Legacy Option ROM 和 EFI Option ROM.

       > 查看PCI data structure的 class type可以得到相关信息。

3. PCI Option ROM 镜像和头信息

BIOS之Option ROM详解

如上图所示,PCI Option ROM由image header, PCI data structure和Image 三个部分组成。

首先,在Option ROM的头两个字节是magic number: "0x55“,“0xAA"。由此可以验证是否是合法的option rom.

其次,在0x18-0x19这个位置可以获取到PCI Data structure pointer, 这其实是一个地址,由这个地址,我们可以得到PCI Data structure所存放的位置。

最后,通过解析PCI Data structure,我们可以获得ROM的version, class type, size等等信息。

4. PCI Option ROM之Shadow RAM

PCI 2.1 Option ROM:

BIOS之Option ROM详解 

Shadow RAM的位置为C0000 ~ FFFFF。由于1MB以上的高地址处一般用于放BIOS,所以Option ROM Shadow的位置一般为C0000 ~ E0000。