基于MIPS的Linux内核PCI子系统分析系列--PCI+资源(io、mem)配置.pdfVIP

基于MIPS的Linux内核PCI子系统分析系列--PCI+资源(io、mem)配置.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于MIPS的Linux内核PCI子系统分析系列--PCI资源(io、mem)配置

基于 MIPS 的Linux 内核PCI 子系统分析 基于 MIPS 的Linux 内核PCI 子系统分析系列 — PCI 资源(io、mem)配 Current Version:V0.1 Date :2011-10-31 Author :leewg wgl.liwengang@ 1 基于 MIPS 的Linux 内核PCI 子系统分析 版本 作者 参与者 时间 备注 0.1 Li Wengang 2011-10-31 初始化版本 备注: 内核源代码版本:2.6.36 代码流程的分支:基于 MIPS 下的loongson 分支 说明:文档参考了网上的诸多关于 linux PCI 的文章,整理而成。 存在问题请大家即使指出,共同探讨进步。 2 基于 MIPS 的Linux 内核PCI 子系统分析 一、基础知识解析 1、PCI 地址空间 后面的文章均会以下面的图 6.1 为例来进行说明。 CPU 与PCI 设备需要存取在它们之间共享的内存。设备驱动程序使用这片内存来控制 PCI 设备并用来传 送信息。一般而言,这些共享内存中包含设备的控制和状态寄存器。这 些寄存器用来控制设备和读 取设备的状态。例如,PCI SCSI 设备驱动程序读取 SCSI 设备的 状态寄存器以探测该设备是否已就绪 可以将一个数据块写入 SCSI 磁盘。又例如,设备驱动 程序可以在控制寄存器中写入控制数据从而使 设备开始运转在设备电源被开启之后。 上述的共享内存可以是 CPU 的系统内存。但如果这样的话,每次PCI 设备存取内存时, CPU 将被阻塞, 等待 PCI 设备存取的结束。一般而言,在某个特定时刻,只能一个系统部 件存取一个特定的内存。 所以,上述方法会使系统性能降低。另外,允许系统的外设不在 一个良好的控制下存取主内存不 是一个好的方法。这将会是非常危险的事情。一个“淘 气”的设备可以使得系统非常不稳定。 因此,外设一般拥有它们自己的内存空间。CPU 可以存取这个空间。但是反之外设存取 系统内存必须 在DMA(Direct Memory Acce ) 的控制之下。ISA 设备可以存取两种地址空间, ISA I/O(Input/Output )和 ISA memory 。PCI 可以有三种:PCI I/O ,PCI memory 和 PCI 3 基于 MIPS 的Linux 内核PCI 子系统分析 Configuration 空间。所有的这些地址 空间都可以被CPU 所存取。其中设备驱动程序要使用 PCI I/O 和 PCI memory 空间。Linux 核心中的PCI 初 始化代码要用到 PCI Configuration 空间。 1.1、PCI 配置头(Configuration Header) 系统中的每一个PCI 设备,包括PCI-PCI 桥都由一个配置数据结构,位于 PCI 配置地址 空间中。PCI 配置头允许系统识别和控制设备。这个头位于 PCI 配置地址空间的确切位置依 赖于设备使用的 PCI 拓扑。例如,插在 PC 主板一个 PCI 槽位的一个 PCI 显示卡配置头会在 一个位置,而如果它被插到另一个PCI 槽位则它的头会出现在 PCI 配置内存中的另一个位置。 但是不管这些 PCI 设备和桥在什么位置,系统都可以发现并使用它们配置头中的状态和配置 寄存器来配置它们。 通常,系统的设计使得每一个 PCI 槽位的 PCI 配置头都有一个和它在板上的槽位相关的 偏移量。所以,举例来说,板上的第一个槽位的 PCI 配置可能位于偏移 0 而第二个槽位的在 偏移 256 (所有的头都一样长度, 256 字节),依此类推。定义了系统相关的硬件机制使 得 PCI 配置代码可以尝试检查一个给定的PCI 总线上的所有可能的

文档评论(0)

hhuiws1482 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档