全新Linux教程-驱动大全-PCI和PCIe子系统-P2-PCI设备的访问方法-非桥设备

主要讲PCI设备的硬件访问方法。

1、PCI的硬件结构

        CPU发出的地址是CPU地址,可能是访问底下任何一个设备。地址范围不一样,访问到的外设就不一样。在嵌入式中,通常将4G内存地址空间分成好几个区域,不同的访问分给不同的地址。桥内存控制器会把CPU地址转换成addr_pci。PCI总线上的地址会到达底下的设备。此时就会引入一个问题,谁来相应这个地址(bridge底下挂载着总线,pci总线上有很多pci设备)?

        为了解决上述问题,需要去配置每个设备对应的地址范围(对每个设备进行分配固定地址)。首先就要知道每个设备需要多大的地址空间,例如A设备需要1MB,B设备需要2MB等等。驱动程序需要把PCI地址中的某一段分配给这个设备例如A-B。

步骤:

(1)读设备上的配置寄存器,得到设备的种类,得到需要申请的地址大小。如何选中要配置的设备呢?通过IDSEL信号选中设备(初始化的时候应该会对每个issel号扫描一遍)。

(2)驱动程序分配对应大小的PCI地址给设备。

(3)将地址访问写回PCI的配置寄存器。

(4)配置好后就可以像内存一样读写。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LuckyDog0623

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值