文章目录

  • 总线概念
    • PCI总线
      • PCI总线体系结构
      • PCI设备寻址
      • PCI寻址
    • 配置寄存器

总线概念

总线是一种传输信号的信道;总线是连接一个或多个半导体的电气连线。总线由电气接口和编程接口组成,对于软件设计人员来说,重点关注编程接口。

PCI总线

PCI(Perpheral Component Interconnect)(外围设备互联),是在桌面及更大型的计算机上普遍使用的外设总线。

PCI总线优点:

  • 在计算机和外设间传输数据时具有更好的性能
  • 能够尽量独立于具体的平台
  • 可以方便的实现即插即用

PCI总线体系结构

体系结构1

PCI桥用于生成PCI总线

体系结构2

PCI设备寻址

每个PCI设备由一个总线号、一个设备号、和一个功能号确定。PCI规范允许一个系统最多拥有256条总线,每条总线最多带32个设备,但每个设备可以是最多8个功能的多功能板(如:一个音频设备带一个CD-ROM驱动器)。

/proc/iomem描述了系统中所有设备I/O在内存地址空间上的映射。
可以看到地址从1G开始的第一个设备在/proc/iomem中是如何描述的:
40000000—400004ff : 0000:00:1f.1
这是一个PCI设备,40000000—400004ff 是它所映射的内存地址,占据了内存地址空间1024 bytes的位置,而0000:00:1f.1则是这个PCI外设的地址,它以冒号和逗号分隔为4个部分,第一个16位表示域,第二个8位表示一个总线号。第三个5位表示一个设备号,最后是3位,表示功能

PCI寻址

在linux系统中,可以通过 lspci 命令查看系统中的PCI设备

由下边的数据画出PCI结构图

可以得到如下结构图:

配置寄存器

每个PCI设备都有一组固定格式的寄存器,即配置寄存器,配置寄存器由linux内核中的PCI初始化代码与驱动程序共同使用。内核在启动时负责对配置寄存器进行初始化,包括设置中断号以及I/O基址等。
寄存器组织架构图:

这些寄存器中比较重要的配置

  • 00H—01H Vendor ID 制造商标识
  • 02H—03H Device ID 设备标识
  • 04H—05H Command 命令寄存器
  • 06H—07H Status 状态寄存器
  • 08H Revison ID 版本识别号寄存器
  • 09H—0bH Class Code 分类代码寄存器
  • 0cH Cache Line Size CACHE 行长度寄存器
  • 0dH Latency Timer 主设备延迟时间寄存器
  • 0eH Header Type 投标类型寄存器
  • 0fH Built-in-teset Register 自测试寄存器
  • 10H—13H Base Address Register 0 基地址寄存器0
  • 14H—17H Base Address Register 1 基地址寄存器1
  • 18H—1bH Base Address Register 2 基地址寄存器2
  • 1cH—19H Base Address Register 3 基地址寄存器3
  • 30H—33H Expasion ROM Base Address 扩展ROM基地址
  • 34H—3bH 保留
  • 3cH Interrupt Line 中断线寄存器
  • 3dH Interrupt Pin 中断引脚寄存器
  • 3eH Min_Gnt 最小授权寄存器
  • 3fH Max_Lat 最大延迟寄存器

linux设备驱动之PCI总线概述相关推荐

  1. Linux设备驱动-platform虚拟总线dya01

    参考连接:https://www.cnblogs.com/deng-tao/p/6026373.html 参考书:<Linux设备驱动开发详解>宋宝华 根据参考资料和同事讨论总结. 摘要: ...

  2. 君君学Linux设备驱动第一天之概述及开发环境搭建

    一.设备驱动的作用:     1 计算机系统里面的软件和硬件是互相成就的,没有软件的硬件是废铁,没有硬件作为依托的软件是空中楼阁.     2 当应用软件工程师不想了解硬件底层的具体操作的时候,就需要 ...

  3. Linux设备驱动-platform虚拟总线dya02

    参考书:<linux设备驱动开发详解>宋宝华 上一篇介绍了platform的基本构成与源码,本篇用实例来说明platform的实现. 参考书中介绍了一个名为globalfifo的驱动,以他 ...

  4. linux设备驱动之pci设备的驱动架构

    驱动工程师最关心就是如何编写PCI设备驱动了. 经过前面的处理,所有设备及其信息都已经遍历出来了.在深入分析PCI驱动架构之前,我们来回顾一下前面遍历PCI设备时,对pci_dev->dev的一 ...

  5. Linux设备驱动之——I2C总线

    2  I2C子系统 2.1 LinuxI2C子系统架构 在内核中已经提供I2C子系统,所以在做I2C驱动之前,就必须要熟悉该子系统. 2.2 三大组成部分 1.I2C核心(i2c-core) I2C核 ...

  6. linux设备驱动之pci设备的I/O和内存

    ------------------------------------------ 本文系本站原创,欢迎转载! 转载请注明出处:http://ericxiao.cublog.cn/ -------- ...

  7. Linux设备驱动模型2——总线式设备驱动组织方式

    以下内容源于朱有鹏嵌入式课程的学习,如有侵权,请告知删除. 更深入理解资料:http://blog.csdn.net/oqqhutu12345678/article/details/78933386 ...

  8. Linux设备驱动——接口与总线

    文章目录 串口 IIC SPI USB 以太网接口 串口 RS-232.RS-422.RS-485都是串行数据接口标准,最初是由电子工业协会(EIA)制定并发布的. 如今,RS-232的修改版RS-2 ...

  9. linux平台设备驱动模型是什么意思,Linux设备驱动模型之我理解

    点击(此处)折叠或打开 /* my_bus.c   */ #include #include #include #include #include #include "my_bus.h&qu ...

最新文章

  1. vue+element 后台管理系统(三)树形图
  2. Eclipse快捷键归纳及整理
  3. node install.js 很长_余生很长,放下错的人,才能拥抱属于你的幸福。很唯美的心灵鸡汤...
  4. jquery datatable搜索框添加按钮,改变keypress搜索为点击按钮搜索
  5. python启动方法_python进程开启的两种方式
  6. tp5易支付完整版源码
  7. Android模块化之MicroModule(微信Pins工程)
  8. rz/sz:工作原理
  9. 括号里面一个上面一个数下面一个数符号怎么打?/ 概率论组合符号怎么打?
  10. java实验报告大全
  11. 查看jdk版本号和安装目录
  12. 信噪比计算方式(小问题解惑)
  13. VS2015安装(windows10+64)
  14. SAI颈部正面的画法
  15. Monte Carlo算法
  16. python爬取网页数据总结_python之爬取网页数据总结(一)
  17. zhu hao shi de shi
  18. python 数据可视化sns作图
  19. MSDC 4.3 接口规范(8)
  20. virtualbox虚拟机窗口大小调整

热门文章

  1. 2022年汽车计算和人工智能技术(英) PPT
  2. Word文件批量转PDF格式超实用
  3. 第006天:APP的数据存储技术
  4. 01 熟悉python绘图工具——matplotlib
  5. Python编写温度转换,逐行解释
  6. ANSYS 2020R2 FLUENT汉化的方法
  7. 文本处理强调的是使用计算机,计算机一级信息技术第五六章复习题课件.ppt
  8. GoAhead4.1.0 开发总结一(移植)
  9. kali系统安装DVWA(最全)
  10. 灰度重心法提取光条纹中心