ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
## 第 12 章 PCI 驱动 虽然第 9 章介绍了硬件控制的最低层, 本章提供了总线结构的高级一些的概括. 一个总线由电路接口和一个编程接口组成. 在本章, 我们涉及编程接口. 本章涉及许多总线结构. 但是, 主要的焦点在存取 PCI 外设的内核函数, 因为如今 PCI 总线是在桌面计算机和更大的计算机上最普遍使用的外设总线. 这个总线是被内核支持得最好的. ISA 对于电子爱好者仍然是普遍的, 在后面描述它, 尽管它更多的是一个裸露金属类型的总线, 并且没有更多的要讲的, 除了在第 9 章和第 10 章涵盖到的. ### 12.1. PCI 接口 尽管许多计算机用户认为 PCI 是一种电路布线方法, 实际上它是一套完整的规格, 定义了一个计算机的不同部分应当如何交互. PCI 规范涉及和计算机接口相关的大部分问题. 我们不会在这里涵盖全部; 在本节, 我们主要关注一个 PCI 驱动如何能找到它的硬件并获得对它的存取. 在第 2 章的"模块参数"一节和第 10 章的"自动探测 IRQ 号"一节讨论的探测技术可被用在 PCI 设备, 但是这个规范提供了一个更适合探测的选择. PCI 体系被设计为 ISA 标准的替代品, 有 3 个主要目的: 当在计算机和它的外设之间传送数据时获得更好的性能, 尽可能平台无关, 以及简化添加和去除系统的外设. PCI 总线通过使用一个比 ISA 更高的时钟频率, 获得更好的性能; 它的设置运行在 25 或者 33 MHz (它的实际频率是系统时钟的一个因数), 以及 66-MHz 甚至 133-MHz 的实现最近也已经被采用. 但是, 它配备有 32-位 数据线, 并且一个 64-位扩展已经被包含在规范中. 平台独立性常常是一个计算机总线设计的目标, 并且它是 PCI 的一个特别重要的特性, 因为 PC 世界已一直被处理器特定的接口标准占据. PCI 当前广泛用在IA-32, Alpha, PowerPC, SPARC64, 和 IA-64 系统中, 以及一些其他的平台. 但是, 和驱动作者最相关的, 是 PCI 对接口板的自动探测的支持. PCI 设备是无跳线的(不象大部分的老式外设)并且是在启动时自动配置的. 接着, 设备驱动必须能够存取设备中的配置信息以便能完成初始化. 这不用进行任何探测.