首页 PCI介绍

PCI介绍

举报
开通vip

PCI介绍 PCI介绍 外围设备互连(PCI)是一种将系统中外部设备以结构化与可控制方式连接到起来的总 线标准,包括系统部件连接的电气特性及行为。本章将详细讨论 Linux核心对系统中的 PCI 总线与设备的初始化过程。 图 6.1 一个基于 PCI的系统示意图 图 6.1是一个基于 PCI的系统示意图。PCI总线和 PCI-PCI桥接器在连接系统中设备 到上起关键作用,在这个系统中 CPU和视频设备被连到 PCI bus 0上,它是系统中的主干 PCI总线。而PCI-PCI桥接器这个特殊PCI...

PCI介绍
PCI介绍 外围设备互连(PCI)是一种将系统中外部设备以结构化与可控制方式连接到起来的总 线标准,包括系统部件连接的电气特性及行为。本章将详细讨论 Linux核心对系统中的 PCI 总线与设备的初始化过程。 图 6.1 一个基于 PCI的系统示意图 图 6.1是一个基于 PCI的系统示意图。PCI总线和 PCI-PCI桥接器在连接系统中设备 到上起关键作用,在这个系统中 CPU和视频设备被连到 PCI bus 0上,它是系统中的主干 PCI总线。而PCI-PCI桥接器这个特殊PCI设备将主干总线PCI bus 0与下级总线PCI bus 1连接到一起。PCI标准术语中,PCI bus 1是 PCI-PCI桥接器的 downstream而 PCI bus 0是此桥接器的 up-stream。SCSI和以太网设备通过二级 PCI总线连接到这个系统中。 而在物理实现上,桥接器和二级 PCI总线被集成到一块 PCI卡上。而 PCI-ISA桥接器用来 支持古老的 ISA设备,图中有一个高级 I/O控制芯片来控制键盘、鼠标及软盘设备。 6.1 PCI地址空间 CPU和 PCI设备需要存取在它们之间共享的内存空间。这块内存区域被设备驱动用来 控制 PCI设备并在 CPU与 PCI设备之间传递信息。最典型的共享内存包括设备的控制与状 态寄存器。这些寄存器用来控制设备并读取其 信息。例如 PCI SCSI设备驱动可以通过读 取其状态寄存器,找出已准备好将一块数据写入 SCSI磁盘的 SCSI设备。同时还可以在设 备加电后,通过对控制寄存器写入信息来启动设备。 CPU的系统内存可以被用作这种共享内存,但是如果采用这种方式,则每次 PCI设备 访问此内存块时,CPU将被迫停止工作以等待 PCI设备完成此操作。这种方式将共享内存 限制成每次只允许一个系统设备访问。该策略会大大降低系统性能。但如果允许系统外设不 受限制地访问主存也不是好办法。它的危险之处在于一个有恶意行为的设备将使整个系统置 于不稳定状态。 外设有其自身的内存空间。CPU可以自由存取此空间,但设备对系统主存的访问将处 于 DMA(直接内存访问)通道的严格控制下。ISA设备需要存取两个地址空间:ISA I/O (输入输出)和 ISA内存。而 PCI设备需要访问三种地址空间:PCI I/O、PCI内存和 PCI 配置空间。CPU则可以访问所有这些地址空间。PCI I/O和 PCI内存由设备驱动程序使用 而 PCI配置空间被 Linux 核心中的 PCI初始化代码使用。 Alpha AXP处理器并不能象访问系统地址空间那样随意访问这些地址空间,它只能通 过辅助芯片组来存取这些 地址空间,如 PCI配置空间。Alpha AXP处理器使用稀疏地址 映射策略来从系统巨大的虚拟内存中"窃取"一部分并将其映射到 PCI地址空间。 6.2 PCI 配置头 图 6.2 PCI配置头 系统中每个 PCI设备,包括 PCI-PCI桥接器在内,都有一个配置数据结构,它通常位 于 PCI配置地址空间中。PCI配置头允许系统来标识与控制设备。配置头在 PCI配置空间 的位置取决于系统中 PCI设备的拓扑结构。例如将一个 PCI视频卡插入不同的 PCI槽,其 配置头位置会变化。但对系统没什么影响,系统将找到每个 PCI设备与桥接器并使用它们 配置头中的信息来配置其寄存器。 典型的办法是用 PCI槽相对主板的位置来决定其 PCI配置头在配置空间中的偏移。比 如主板中的第一个 PCI槽的 PCI配置头位于配置空间偏移 0处,而第二个则位于偏移 256 处(所有 PCI配置头长度都相等,为 256字节),其它槽可以由此类推。系统还将提供一 种硬件相关机制以便 PCI设置代码能正确的辨认出对应 PCI总线上所有存在的设备的 PCI 配置头。通过 PCI配置头中的某些域来判断哪些设备存在及哪些设备不存在(这个域叫厂 商标志域: Vendor Identification field)。对空 PCI槽中这个域的读操作将得到一个值为 0xFFFFFFFF的错误信息。 图 6.2给出了 256字节 PCI配置头的结构,它包含以下域: 厂商标识(Vendor Identification) :用来唯一标识 PCI设备生产厂家的数值。Digital 的 PCI厂商标识为 0x1011而 Intel的为 0x8086。 设备标识(Device Identification) :用来唯一标识设备的数值。Digital 21141快速 以太设备的设备标识为 0x0009。 状态(Status) :此域提供 PCI标准定义中此设备的状态信息。 命令(Command) :通过对此域的写可以控制此设备,如允许设备访问 PCI I/O内存。 分类代码(Class Code) :此域标识本设备的类型。对于每种类型的视频,SCSI等设 备都有标准的分类代码。如 SCSI设备分类代码为 0x0100。 基地址寄存器(Base Address Registers) :这些寄存器用来决定和分配此设备可以 使用的 PCI I/O与 PCI内存空间的类型,数量及位置。 中断引脚(Interrupt Pin) :PCI卡上的四个物理引脚可以将中断信号从插卡上带到 PCI总线上。这四个引脚标准的标记分别为 A、B、C及 D。中断引脚域描叙此 PCI设备使 用的引脚号。通常特定设备都是采用硬连接方式。这也是系统启动时,设备总使用相同中断 引脚的原因。中断处理子系统用它来管理来自该设备的中断。 中断连线(Interrupt Line) :本设备配置头中的中断连线域用来在 PCI初始化代码、 设备驱动以及 Linux中断处理子系统间传递中断处理过程。虽然本域中 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 的这个数值对 于设备驱动毫无意义。但是它可以将中断处理过程从 PCI卡上正确路由到 Linux操作系统 中相应的设备驱动中断处理代码中。在 interrupt一章中将详细描叙 Linux中断处理过程。 6.3 PCI I/O和 PCI内存地址 这两个地址空间用来实现 PCI设备和 Linux核心中设备驱动程序之间的通讯。例如 DEC21141快速以太网设备的内部寄存器被映射到 PIC I/O空间上时,其对应的 Linux设 备驱动可以通过对这些寄存器的读写来控制此设备。PCI视频卡通常使用大量的 PCI内存 空间来存储视频信息。 在 PCI系统建立并通过用 PCI配置头中的命令域来打开这些地址空间前,系统决不允 许对它们进行存取。值得注意的是只有 PCI配置代码读取和写入 PCI配置空间,Linux设 备驱动只读写 PCI I/O和 PCI内存地址。 6.4 PCI-ISA 桥接器 这种桥接器通过将 PCI I/O和 PCI内存空间的存取转换成对 ISA I/O和 ISA内存的存 取来支持古老的 ISA设备。市场上许多主板中同时包含几个 ISA总线槽和 PCI槽。但今后 对 ISA设备的向后兼容支持将逐渐减弱,最终主板上只会有 PCI槽。早期的 Intel 8080 PC 就将 ISA设备的 ISA地址空间固定了下来。即使在价值 5000美圆的 Alpha AXP 系统中 其 ISA软盘控制器地址也和最早 IBM PC上的相同。PCI标准将 PCI I/O和 PCI内存的低 端部分保留给系统中的 ISA外设,另外还使用 PCI-ISA桥接器实现从 PCI内存访问到 ISA 内存访问的转换。 6.5 PCI-PCI 桥接器 PCI-PCI桥接器是一种将系统中所有 PCI总线连接起来的特殊 PCI设备。在简单系统 中只存在一条 PCI总线,由于受电气特性的限制,它所连接的 PCI设备个数有限。引入 PCI-PCI桥接器后系统可以使用更多的 PCI设备。对于高性能服务器这是非常重要的。 Linux提供了对 PCI-PCI桥接器的全面支持。 6.5.1 PCI-PCI桥接器:PCI I/O和 PCI 内存窗口 PCI-PCI桥接器将 PCI I/O和 PCI内存读写请求中的一个子集向下传送。例如在图 6.1 中,如果来自PCI 总线0请求是对SCSI或以太设备所拥有的PCI I/O或PCI内存的读写, 则此 PCI-PCI桥接器将只需把请求从总线 0传递到 PCI总线 1上;所有其它 PCI I/O和 内存地址都将被它忽略。这个过滤使得这些地址信息不会在整个系统中扩散。为了实现这点, PCI-PCI桥接器必须编程为有某个 PCI I/O及 PCI内存基址和上限,只有在这个地址范围 内的 PCI地址访问才能从主干总线传递到二级总线。一旦系统中的 PCI-PCI桥接器被设置 成这样,则只要当 Linux设备驱动程序通过这个窗口访问 PCI I/O和 PCI内存空间时,此 PCI-PCI桥接器就将变得透明。这样也给 Linux PCI设备驱动编写者提供了方便。我们在 稍后的讨论中将看到 Linux对 PCI-PCI桥接器非常巧妙的配置。 6.5.2 PCI-PCI桥接器:PCI配置循环及 PCI总线编号方式 图 6.3 0类型 PCI配置循环 图 6.4 1类型 PCI配置循环 为了让 CPU上运行的 PCI初始化代码能访问位于分支 PCI总线上的设备,必须为桥接 器提供某种机制以便它可以决定是否将配置循环从主干接口传递到其二级接口。循环是出现 在 PCI总线上的一个地址。PCI 标准定义了两种 PCI配置寻址格式;类型 0和类型 1;它 们分别如图 6.3及 6.4所示。类型 0 PCI配置循环不包含总线序号,同时在此 PCI总线上 对应于这个 PCI配置地址的所有 PCI设备都会来对它们进行解释。类型 0 配置循环的 11 位到 31位用来进行 PCI设备选择。有种设计方式是让每位代表系统中一个不同的设备。这 时 11位对应 PCI槽 0中的 PCI设备而 12位标识槽 1中的设备等等,如此类推。另外一 种方式是直接将设备的槽号写入到位 31到 11中。系统使用哪种机制依赖于系统 PCI内存 控制器。 类型 1 PCI配置循环包含一个 PCI总线序号,同时这种配置循环将被除桥接器外的所有 PCI设备所忽略。所有发现类型 1 配置循环的 PCI-PCI桥接器把它们看到的地址传递到各 自的下级 PCI总线。至于 PCI-PCI桥接器是否忽略类型 1 配置循环或将其传递到 PCI总 线则依赖于 PCI-PCI桥接器的配置方式。每个 PCI-PCI桥接器都拥有一个主干总线接口序 号以及一个二级总线接口序号。主干总线是那个离 CPU最近的 PCI总线而二级总线是离它 稍远的 PCI总线。任何 PCI-PCI桥接器还包含一个从属总线序号,这是所有二级总线接口 所桥接的 PCI总线中序号最大的那个。或者说这个从属总线序号是 PCI-PCI桥接器向下连 接中 PCI总线的最大序号。当 PCI-PCI桥接器看到类型 1 PCI配置循环时它将进行如下操 作:  如果此总线序号不在桥接器的二级总线序号和从属总线序号之间则忽略掉它。  如果此总线序号与桥接器的二级总线序号相同则将其转换成类型 0 配置命令。  如果此总线序号位于桥接器的二级总线序号与从属总线序号之间则将它不作改变 的传递到二级总线接口中。 所以如果想寻址 PCI-PCI配置例 4中总线 3上的设备 1,我们继续从 CPU中产生一 个类型 1 配置命令。桥接器 1将其传递给总线 1。桥接器 2虽然忽略它但会将其转换成一 个类型 0 配置命令并送到总线 3上,在那里设备 1将作出相应反应。 PCI配置中总线序号由操作系统来分配。但是序号分配策略必须遵循对系统中所有 PCI-PCI桥接器都正确的描叙: “位于PCI-PCI桥接器后所有的PCI总线必须位于二级总线序号和从属总线序号之间”。 如果这个规则被打破,则 PCI-PCI桥接器将不能正确的传递与转换类型 1 PCI配置循 环,同时系统将找不到或者不能正确地初始化系统中的 PCI设备。为了满足这个序号分配策 略,Linux以特殊的顺序配置这些特殊的设备。PCI-PCI总线序号分配一节详细描叙了 Linux的 PCI桥接器与总线序号分配策略。 6.6 Linux PCI 初始化过程 Linux中的 PCI初始化代码逻辑上可分成三个部分: PCI 设备驱动 这个伪设备驱动程序将从总线 0开始搜索 PCI系统并定位系统中所有的 PCI设备与桥 接器。它将建立起一个描叙系统拓扑结构的数据结构链表。另外它还为所有的桥接器进行编 号。 PCI BIOS 这个软件层提供了在 bib-pci-bios定义中描叙的服务。即使 Alpha AXP没有 BIOS 服务,Linux核心也将为它提供具有相同功能的代码。 PCI Fixup 系统相关补丁代码将整理 PCI初始化最后阶段的一些系统相关事物。 6.6.1 Linux 核心 PCI数据结构 图 6.5 Linux核心 PCI数据结构 Linux核心初始化 PCI系统时同时也建立了反应系统中真实 PCI拓扑的数据结构。 图 6.5显示了图 6.1所标识的 PCI示例系统中数据结构间关系。每个 PCI设备(包括 PCI-PCI 桥接器)用一个 pci_dev数据结构来描叙。每个 PCI总线用一个 pci_bus数据结构来描叙。 这样系统中形成了一个 PCI总线树,每棵树上由一些子 PCI设备组成。由于 PCI总线仅能 通过 PCI-PCI桥接器(除了主干 PCI总线 0)存取,所以 pci_bus结构中包含一个指向 PCI-PCI桥接器的指针。这个 PCI设备是 PCI总线的父 PCI总线的子设备。 在图 6.5中没有显示出来的是一个指向系统中所有 PCI设备的指针,pci_devices。 系统中所有的 PCI设备将其各自的 pci_dev数据结构加入此队列中。这个队列被 Linux核 心用来迅速查找系统中所有的 PCI设备。 6.6.2 PCI设备驱动 PCI设备驱动根本不是真正的设备驱动,它仅是在系统初始化时由操作系统调用的一些 函数。PCI初始化代码将扫描系统中所有的 PCI总线以找到系统中所有的 PCI设备(包括 PCI-PCI桥接器)。 它通过 PCI BIOS代码来检查当前 PCI总线的每个插槽是否已被占用。如果被占用则 它建立一个 pci_dev数据结构来描叙此设备并将其连接到已知 PCI设备链表中(由 pci_devices指向)。 首先 PCI初始化代码扫描 PCI总线 0。它将试图读取对每个 PCI槽中可能的 PCI设备 厂商标志与设备标志域。当发现槽被占用后将建立一个 pci_dev结构来描叙此设备。所有 这些 PCI初始化代码建立的 pci_dev结构(包括 PCI-PCI桥接器)将被连接到一个单向链 表 pci_devices中。 如果这个 PCI设备是一个 PCI-PCI桥接器则建立一个 pci_bus结构并将其连接到由 pci_root指向的 pci_dev结构和 pci_bus树中。PCI初始化代码通过类别代码 0x060400 来判断此 PCI设备是否是一个 PCI-PCI桥接器。然后 Linux 核心代码将配置此 PCI-PCI 桥接器下方的 PCI设备。如果有更多的桥接器被找到则进行同样的配置。显然这个过程使 用了深度优先搜索算法;系统中 PCI拓扑将在进行广度映射前先进行深度优先映射。图 6.1 中 Linux将在配置 PCI总线 0上的视频设备前先配置 PCI设备 1上的以太与 SCSI设备。 由于 Linux优先搜索从属的 PCI总线,它必须处理 PCI-PCI桥接器二级总线与从属总 线序号。在下面的 pci-pci总线序号分配中将进行详细讨论。 配置 PCI-PCI桥接器 - 指定 PCI总线序号 图 6.6 配置 PCI系统:第一部分 为了让 PCI-PCI桥接器可以传递 PCI I/O、PCI内存或 PCI配置地址空间,它们需要 如下内容: Primary Bus Number:主干总线序号 位于 PCI-PCI桥接器上方的总线序号 Secondary Bus Number:二级总线序号 位于 PCI-PCI桥接器下方的总线序号 Subordinate Bus Number:从属总线序号 在桥接器下方可达的最大总线序号 PCI I/O and PCI Memory Windows: PCI I/O与 PCI内存窗口 对于 PCI-PCI桥接器下方所有 PCI I/O地址空间与 PCI内存地址空间的窗口基址和大 小。 配置任一 PCI-PCI桥接器时我们对此桥接器的从属总线序号一无所知。不知道是否还 有下一级桥接器存在,同时也不知道指派给它们的序号是什么。但可以使用深度优先遍历算 法来对扫描出指定 PCI-PCI桥接器连接的每条总线,同时将它们编号。当找到一个 PCI-PCI 桥接器时,其二级总线被编号并且将临时从属序号 0xff指派给它以便对其所有下属 PCI-PCI桥接器进行扫描与指定序号。以上过程看起来十分复杂,下面将提供一个实例以 帮助理解。 PCI-PCI 桥接器序号分配:步骤 1 考虑图 6.6所显示的拓扑结构,第一个被扫描到的桥接器将是桥 1。所以桥 1下方的 总线将被编号成总线 1,同时桥 1被设置为二级总线 1且拥有临时总线序号 0xff。这意味着 所有 PCI总线序号为 1或以上的类型 1 PCI配置地址将被通过桥 1传递到 PCI总线 1上。 如果其总线序号为 1则此配置循环将被转换成类型 0 配置循环,对于其它序号不作转换。 这正是 Linux PCI初始化代码所需要的按序访问及扫描 PCI总线 1。 图 6.7 配置 PCI系统:第二部分 PCI-PCI 桥接器序号分配:第二步 由于 Linux使用深度优先算法,初始化代码将继续扫描 PCI总线 1。在此处它将发现一 个 PCI-PCI桥接器 2。除此桥接器 2外再没有其它桥接器存在,因此它被分配给从属总线 序号 2,这正好和其二级接口序号相同。图 6.7画出了此处的 PCI-PCI桥接器与总线的编 号情况。 图 6.8 配置 PCI系统:第三部分 PCI-PCI 桥接器序号分配:步骤三 PCI初始化代码将继续扫描总线 1并发现另外一个 PCI-PCI桥接器,桥 3。桥 3的主 干总线接口序号被设置成 1,二级总线接口序号为 3,同时从属总线序号为 0xff。图 6.8给 出了系统现在的配置情况。 带总线序号 1、2或者 3的类型 1 PCI配置循环将被发送到正 确的 PCI总线。 图 6.9 配置 PCI系统:第四部分 PCI-PCI 桥接器序号分配:步骤四 Linux开始沿PCI总线3向下扫描PCI-PCI桥接器。PCI总线3上有另外一个PCI-PCI 桥接器(桥 4), 桥 4的主干总线序号被设置成 3,二级总线序号为 4。由于它是此分支 上最后一个桥接器所以它的从属总线接口序号为 4。初始化代码将重新从 PCI-PCI桥接器 3 开始并将其从属总线序号设为 4。 最后 PCI初始化代码将 PCI-PCI桥接器 1的从属总线 序号设置为 4。图 6.9给出了最后的总线序号分配情况。 6.6.3 PCI BIOS 函数 PCI BIOS函数是一组适用于所有平台的标准过程。在 Intel和 Alpha AXP系统上没 有区别。虽然在 CPU控制下可以用它们对所有 PCI地址空间进行访问。但只有 Linux核心 代码和设备驱动才能使用它们。 6.6.4 PCI 补丁代码 在 Alpha AXP平台上的 PCI补丁代码所作工作量要大于 Intel平台。 基于 Intel的系统在系统启动时就已经由系统 BIOS完成了 PCI系统的配置。Linux 只需要完成简单的映射配置. 非 Intel系统将需要更多的配置:  为每个设备分配 PCI I/O及 PCI内存空间。  为系统中每个 PCI-PCI桥接器配置 PCI I/O和 PCI内存地址窗口。  为这些设备产生中断连线值;用来控制设备的中断处理。 下一节将描叙这些代码的工作过程。 确定设备所需 PCI I/O和 PCI内存空间的大小 系统要查询每个PCI设备需要多少PCI I/O于PCI内存地址空间。为了完成这项工作, 每个基地址寄存器将被写上全 1并读取出来。设备将把不必要的地址位设为 0从而有效的 定义所需地址空间。 图 6.10 PCI配置头:基地址寄存器 有两类基本的基地址寄存器,一类标识设备寄存器必须驻留的地址空间;另一类是 PCI I/O或 PCI内存空间。此寄存器的 0位来进行类型的区分。图 6.10给出了对应于 PCI内 存和 PCI I/O两种不同类型的基地址寄存器。 确定某个基地址寄存器所需地址空间大小时, 先向此寄存器写入全 1再读取此寄存器,设备将在某些位填上 0来形成一个二进制数表示所 需有效地址空间。 以初始化DEC 21142 PCI快速以太设备为例,它将告诉系统需要0x100 字节的 PCI I/O空间或者 PCI内存空间。于是初始化代码为其分配空间。空间分配完毕后, 就可以在那些地址上看到 21142的控制与状态寄存器。 为 PCI-PCI桥接器与设备分配 PCI I/O与 PCI内存 象所有内存一样,PCI I/O和 PCI内存空间是非常有限甚至匮乏。非 Intel系统的 PCI 补丁代码(或者 Intel 系统的 BIOS代码)必须为每个设备分配其所要求的内存。PCI I/O 和 PCI内存必须以自然对齐方式分配给每个设备。比如如果一个设备要求 0xB0大小的 PCI I/O空间则它必须和一个 0xB0倍数的地址对齐。除此以外,对于任何指定桥接器,其 PCI I/O和 PCI内存基址必须以在 1M字节边界上以 4K字节方式对齐。所以在桥接器下方的设 备的地址空间必须位于任意指定设备上方的 PCI-PCI桥接器的内存范围内。进行有效的空 间分配是一件比较困难的工作。 Linux使用的算法依赖于由 PCI设备驱动程序建立的描叙 PCI设备的总线/设备树,每 个设备的地址空间按照 PCI I/O内存顺序的升序来分配。同时再次使用遍历算法来遍历由 PCI初始化代码建立的 pci_bus和 pci_dev结构。从根 PCI总线开始(由 pci_boot指向) PCI补丁代码将完成下列工作: ·使当前全局 PCI I/O和内存的基址在 4K,边界在 1M上对齐。 ·对于当前总线上的每个设备(按照 PCI I/O内存需要的升序排列) ·在 PCI I/O和 PCI内存中为其分配空间 ·为全局 PCI I/O和内存基址同时加上一个适当值 ·授予设备对 PCI I/O和 PCI内存的使用权 ·为对于当前总线下方的所有总线循环分配空间。注意这将改变全局 PCI I/O和内存 基址。 ·使当前全局 PCI I/O和内存的基址和边界分别在 4K和 1M对齐,以便确定当前 PCI-PCI桥接器所需的 PCI I/O和 PCI内存基址及大小。 ·对此 PCI-PCI桥接器编程,将其 PCI I/O和 PCI内存基址及界限连接到总线上。 ·打开 PCI-PCI桥接器上的 PCI I/O和 PCI内存访问桥接功能。这时在此桥接器主干 PCI总线上位于此桥接器 PCI I/O和 PCI内存地址窗口中的任何 PCI I/O或者 PCI 内存地址将被桥接到二级 PCI总线上。 以图 6.1中的 PCI系统为例,PCI补丁代码将以如下方式设置系统: 对齐 PCI基址 PCI I/O基址为 0x4000而 PCI内存基址为 0x100000。这样允许 PCI-ISA桥接器 将此地址以下的地址转换成 ISA地址循环。 视频设备 我们按照它的请求从当前 PCI内存基址开始分配 0x200000字节给它,这样可以在边 界上对齐。PCI内存基址被移到 0x400000同时 PCI I/O基址保持在 0x4000。 PCI-PCI 桥接器 现在我们将穿过 PCI-PCI桥接器来分配 PCI内存,注意此时我们无需对齐这些基址, 因为它们已经自然对齐。 以太网设备 它需要 0xB0字节的 PCI I/O和 PCI内存空间。这些空间从 PCI I/O地址 0x4000 和 PCI内存地址 0x400000处开始。PCI内存基址被移动到 0x4000B0同时 PCI I/O基 址移动到 0x40B0。 SCSI 设备 它需要0x1000字节PCI内存,所以它将在自然对齐后从0x401000处开始分配空间。 PCI I/O基址仍然在 0x40B0而 PCI内存基址被移动到 0x402000。 PCI-PCI 桥接器的 PCI I/O和内存窗口 现在我们重新回到桥接器并将其 PCI I/O窗口设置成 0x4000和 0x40B0之间, 同时 其 PCI内存窗口被设置到 0x400000和 0x402000之间。这样此 PCI-PCI桥接器将忽略 对视频设备的 PCI内存访问但传递对以太网设备或者 SCSI设备的访问。  来自: http://blog.csdn.net/unbutun/archive/2008/11/26/3381093. aspx
本文档为【PCI介绍】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_890293
暂无简介~
格式:pdf
大小:183KB
软件:PDF阅读器
页数:0
分类:互联网
上传时间:2012-01-31
浏览量:15