PCIE 关于BAR的相关学习

来源:互联网 发布:淘宝篮球正品店推荐 编辑:程序博客网 时间:2024/05/20 21:18

什么是BAR寄存器:
BAR寄存器是基地址寄存器。
BAR寄存器的作用:
通过BAR寄存器,我们首先知道这个基址对应的空间属性,然后给这段空间分配一个基址(这个基址只是用来路由寻址用的,不能和存储器空间的地址搞混,很多软件实现上会把两个地址设置成一样,但是本质上没有任何关系,只是TLP寻址的时候用的!)。这样的话,TLP就能根据地址被路由到对应设备的BAR空间中去。比如说现在有一个mem read request,如果路由地址(地址信息包含在TLP中)是0x71000000,而有一个设备func0的mem空间范围是0x70000000~0x80000000,那么这个TLP就会被这个func处理。从func0的0x71000000对应的地址读取相应数据。

设备在系统的PCI地址空间里申请一段来用,所申请的空间基址和大小保存在BAR寄存器里。
BAR里的只是PCI域的地址空间,需要映射到IO地址空间里或者内存地址空间里之后软件才能使用。
映射到IO空间的话,用IO读写指令和函数去访问设备;映射到内存空间的话,首先得到的是物理地址,映射到虚拟地址后就可以像用指针那样访问。

原创粉丝点击