在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4899|回复: 9

[讨论] 关于PCIe的BAR空间

[复制链接]
发表于 2016-4-7 16:09:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
最近在做PCIe这一块,用的VxWorks7操作系统,关于PCIe的介绍看了很多,但是有些地方不是很明白:1)从配置寄存器获取了BAR的值,是不是直接用这个地址就可以访问BAR空间了?还是它只是PCI域的一个地址,需要转换成CPU的物理地址,再转换成虚拟地址,然后对得到的虚拟地址进行操作?
2)我选取了跟PCIe相关的组件,cpu启动后就可以识别我的PCIe板卡(EP),我还需要对配置空间做些什么设置吗?还是我获取BAR的值,就可以操作了?
发表于 2016-4-7 18:21:05 | 显示全部楼层
这个BAR地址是物理地址
发表于 2016-4-8 09:40:50 | 显示全部楼层
关于你说的BAR空间其实是指的PCI总线域的空间地址范围,与CPU的地址不是属于一个地址,他们之间需要进行地址转换,只是有的系统中这两个地址的值是相等的,但是实质上还是不一样的,不要弄混。
发表于 2016-4-8 10:00:11 | 显示全部楼层
BAR寄存器存储的是你的PCIE设备占用的总线地址,在系统启动时,内核先检查总线上所有的PCIE设备,然后对每一个设备所占用的总线地址进行初始化;而应用程序这端如果想和PCIE进行数据通讯,就必须先把BAR所代表的总线地址映射到内存中,然后才能进行数据操作
 楼主| 发表于 2016-4-8 10:31:01 | 显示全部楼层
本帖最后由 ainolike 于 2016-4-8 10:34 编辑

回复 4# marginall

那这个地址映射过程是不是操作系统在启动时就自动执行了,我只需要获取BAR的值,在由该地址通过某些操作获取系统映射到内存中的地址就可以
发表于 2016-4-8 10:41:33 | 显示全部楼层
回复 5# ainolike 映射过程是系统启动时,调用相应设备驱动的初始化程序完成。你在PC的应用程序上是只能用映射到内存的地址进行读写操作的,然后pcie总线上有个设备负责把内存的地址再解析到你设备实际的总线地址,最后进读写操作
发表于 2016-12-26 10:51:20 | 显示全部楼层
学习中
发表于 2017-3-25 14:36:21 | 显示全部楼层
对BAR一直不怎么了解,学习了,多谢
发表于 2017-3-30 13:30:20 | 显示全部楼层
求赐教
发表于 2017-4-5 10:37:09 | 显示全部楼层
学习,谢谢了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-23 09:45 , Processed in 0.022948 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表