Electronic Joint Business

Solution for E-Business

X86/X64 架构的系统地址表初始化 (1):PCI 总线系统

去年我在《信息安全杂志》上发表了“恶意的 PCI 扩展 ROM”一文,文中并未对 PCI 扩展 ROM 1的地址映射展开讨论,这篇文章2在此作出补充。系统程序员常对设备内存(如 PCI 设备内存)是如何映射到系统地址空间感到疑惑不已。本文详细论述了系统地址表的初始化过程,尤其是那些控制着设备内存映射到系统地址表的 PCI 芯片寄存器的初始化。注意:只有带内存的 PCI 设备才有地址映射的要求,比如显卡、带有板载缓冲区或支持 PCI 扩展 ROM 的网卡等。 由于 X86/X64 架构的总线协议必须保持向后兼容,因此其系统地址表十分复杂。系统所使用的总线协议规定了总线设备的内存到系统地址表的地址映射关系。因此,要了解系统地址表的初始化,就必须了解特定的总线协议的地址映射机制。本文重点关注基于 PCI 总线协议的系统。以当今的的标准来衡量,PCI 总线协议略显老旧了。但是,弄清楚它在软件/固件的最底层中所起到的作用仍非常重要。不了解 PCI 总线协议,就无法理解后续的 PCI Express (PCIe) 总线协议。而 PCIe 现在基本成为 X86/X64 系统的主流总线协议。 本系列文章的第 2 部分将讨论基于 PCIe 的系统。 约定 本文常常可见“内存”或“存储器”这个词,且含义不尽相同。为了避免困惑,本文约定如下: “主存储器” 或者 “主存” 指的是安装在主板上的 RAM 模块。 “内存控制器” 指的是 CPU 或者芯片组中用以控制和存取 RAM 模块的部分 “可刷新存储器” 指的是主板上存储 […]

, ,

One thought on “X86/X64 架构的系统地址表初始化 (1):PCI 总线系统

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.