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 镜像和头信息
如上图所示,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:
Shadow RAM的位置为C0000 ~ FFFFF。由于1MB以上的高地址处一般用于放BIOS,所以Option ROM Shadow的位置一般为C0000 ~ E0000。