当前位置:  技术问答>linux和unix

pci总线上这么多设备怎么区分彼此的?

    来源: 互联网  发布时间:2017-05-22

    本文导语:  就是怎么在driver设计中 pci总线上这么多设备怎么区分彼此的?区分彼此开来 ?使用次设备号吗,但是cpu怎么区分对应的pci设备 | cpu和pci设备之间隔着pci总线控制器或者pci桥 cpu的内存地址空...

就是怎么在driver设计中 pci总线上这么多设备怎么区分彼此的?区分彼此开来 ?使用次设备号吗,但是cpu怎么区分对应的pci设备

|
cpu和pci设备之间隔着pci总线控制器或者pci桥
cpu的内存地址空间和pci总线地址空间是相互独立的隔离的,只是大多数cpu架构(x86)都是简单地把这2种地址不加任何偏移地一一映射。但是驱动程序员这个概念要分清。
cpu首先要访问pci控制器,pci控制器访问pci设备

pci设备有3种空间:配置空间、IO空间、mem空间,所以要区分每个pci设备就需要完全区分这3种空间。

其中mem空间就是pci设备分得的pci总线地址,每一个pci设备分得的pci地址空间是不会重叠的。cpu通过pci总线控制器访问不同的pci地址空间,就能访问到不同的pci设备。
pci IO空间是被淘汰的概念,与pci mem空间类似,每个pci 设备的pci io地址不一样。

比较特殊的是pci配置空间,但是没有pci配置空间,也就不可能配置IO空间和mem空间。
每个pci设备(这里只逻辑设备,一个pci物理设备可以有多个逻辑设备,就是所谓的多功能pci设备)的配置空间的地址,是一个32位的地址。由总线号+槽位号+功能号组成。
pci总线控制器决定了pci总线号。
每个pci总线控制器和pci设备相连时,有一根IDSEL信号线。IDSEL信号,一端接在pci设备的IDSEL端,另一头接在pci总线控制器的pci地址线AD[31:11]其中的一个(不会有2根IDSEL接在同一条AD[31:11]上)。这个独特的连接,决定了pci设备的slot号。
每个pci物理设备,可能含有多个逻辑设备,就是func号。

由总线号+槽位号+功能号组成的唯一的32位地址区分开pci的设备空间。

至此,pci设备的3种空间完全区分开了,每个pci设备也就区分开了。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请问接触过小型机的大大们,小型机一般有pci插槽吗?如果没有,如何接入pci设备呢?谢谢
  • solaris下通过应用程序如何访问pci设备的配置空间,i/o空间等?
  • 求助linux下面如何查看PCI设备安装成功
  • 请问大家:在LINUX环境下,如何获得PCI设备的配置空间的地址?
  • -------------- 请问大家,做好一个PCI设备驱动了,如何做个应用程序来使用这个驱动呢??
  • linux pci设备在枚举过程中向驱动程序模型注册的问题。
  • PCI设备驱动程序在哪里注册file_operations
  • 关于编译pci设备驱动程序出现的问题
  • 提问:PCI中断是如何映射的?
  • 启动项里写pci=nommconf是什么意思啊
  • PCI Utilities
  • PCI工具包
  • PCI BUS DRIVER 的问题
  • 关于pci的问题
  • 读PCI时有段代码不懂,请高手解释一下
  • 移植PCI驱动程序,提示找不到iobuf.h
  • pcie驱动和pci驱动
  • 我不会安装内核,pci_register_driver不能使用,大量发分~~~
  • Linux源代码中ata驱动为什么要调用pci驱动的代码
  • 拜求windriver开发PCI针对Altera芯片的驱动问题。
  • 为什么编译时错误:pci_register_driver没有声明~~~!!!!
  • #define PCI9054_MSG(fmt, args...) printK("kERN_WARNING:"fmt,##args)
  • 移植pci驱动和RTL8139网卡驱动,只发生一次中断?
  • 编译2.6内核出错,不知道为什么pci编译不过去!
  • Solaris下有没有访问PCI配置空间的应用程序??
  • PCI驱动程序的是不是可以不要file_operations;file;inode?
  • 如图 scsi <---> scsi controller <---> pci <---> cpu 如果我想对scsi编写驱动我该对哪个部分编写?
  • 怎樣在redhat 9.0 安裝 pci sound card


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3