微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 关于PCIe的BAR空间

关于PCIe的BAR空间

时间:10-02 整理:3721RD 点击:
最近在做PCIe这一块,用的VxWorks7操作系统,关于PCIe的介绍看了很多,但是有些地方不是很明白:1)从配置寄存器获取了BAR的值,是不是直接用这个地址就可以访问BAR空间了?还是它只是PCI域的一个地址,需要转换成CPU的物理地址,再转换成虚拟地址,然后对得到的虚拟地址进行操作?
2)我选取了跟PCIe相关的组件,cpu启动后就可以识别我的PCIe板卡(EP),我还需要对配置空间做些什么设置吗?还是我获取BAR的值,就可以操作了?

这个BAR地址是物理地址

关于你说的BAR空间其实是指的PCI总线域的空间地址范围,与CPU的地址不是属于一个地址,他们之间需要进行地址转换,只是有的系统中这两个地址的值是相等的,但是实质上还是不一样的,不要弄混。

BAR寄存器存储的是你的PCIE设备占用的总线地址,在系统启动时,内核先检查总线上所有的PCIE设备,然后对每一个设备所占用的总线地址进行初始化;而应用程序这端如果想和PCIE进行数据通讯,就必须先把BAR所代表的总线地址映射到内存中,然后才能进行数据操作


那这个地址映射过程是不是操作系统在启动时就自动执行了,我只需要获取BAR的值,在由该地址通过某些操作获取系统映射到内存中的地址就可以

映射过程是系统启动时,调用相应设备驱动的初始化程序完成。你在PC的应用程序上是只能用映射到内存的地址进行读写操作的,然后pcie总线上有个设备负责把内存的地址再解析到你设备实际的总线地址,最后进读写操作

学习中

对BAR一直不怎么了解,学习了,多谢

求赐教

学习,谢谢了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top