龙芯软件开发(31)-- PCI设备查找细节

本文详细探讨了在龙芯平台上的PCI设备查找过程,深入解析相关软件开发的细节,帮助读者理解这一领域的核心技术。
摘要由CSDN通过智能技术生成
               
这段时间,又在对龙芯盒子的PCI的总线进行编程。目前有了一点点进展,发现PCI总线也是很复杂的东西。由于所有其它外设都是挂在PCI总线上,如果要对外设进行编程,就得对PCI比较了解,并且可以对它编程。
 
PCI总线是一条平等的总线,所有设备都是平等的。在某一时刻会有一个设备是主设备。PCI的设备是一棵树的结构,以CPU为根,桥设备为树干,其它设备为叶子。由于PCI的设备是即插即用的,因此它的总线有多少设备不是固定的,那么它又是怎么样发现所有的设备的呢?它就是通过枚举所有设备,也就是由总线上寻找所有设备,比如从总线0开始,就会找到一个桥设备,这个桥设备就是在北桥那里。然后通过这个总线,就可以向下查找,就会找到南桥设备,找到显示卡设备,找到USB的主控器等等。PCI的设备为了能有自动配置的功能,就需要在固定的位置里放置一些寄存器。在PCI的规范里,定义了一段叫做配置空间的寄存器组,CPU就是通过北桥里的寄存器设置,然后根据总线号和设备号就会到PCI设备的第一个功能设备。接着读取PCI配置空间里的寄存器,就可以知道这个PCI设备是做什么使用了,这个就是class编码。比如龙芯里的USB的主控器的分类编码就是0x0C031043,从这个分类码中的0C03就可以知道它是USB的设备,后面的10说明它是OHCI协议接口,43是USB主控器的版本。这样就可以分类不同的设备了。
 
找到了设备之后,就是需要对它编程。而编程,就需要对寄存器的操作。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值