原创 如何获取PCIe BAR

2019-8-14 11:35 7099 37 3 分类: FPGA/CPLD 文集: PCIE
从网上找到一段话:“pc上电初始化的时候,BIOS接管pc的初始化工作,分配管理内存,分配管理io空间,
所以开始会扫描主板上的pci设备,并且为扫描到的pci设备分配对应的内存或者io,分配完毕之后,把BAR
写入, 所以bar是有bios分配的,不是用户设定,bar是基地址,是物理内存地址,而如何获得pci对应的
bar的内存大小上面有说,向pci的bar写入 0xffffffff,之后又读取bar,读到的值清空低3bit然后去取
反,加1,就是内存大小。”

正如上图所示,2K大小的BAR空间值显示的是h'FFFFF800,所以可以根据上述方法,得到其实际大小就是h'800,即2K。
这好像是和PCI的规范有关,BAR空间大小(或者地址)由掩码方式表示,上述2k其实是从4G(FFFFFFFF)到4.294965248G(FFFFF800)的这段空间。

作者: coyoo, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-1010859.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论0条评论)

登录后参与讨论
我要评论
0
37
关闭 站长推荐上一条 /2 下一条