Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux – lspci“Memory at …”vs / proc / bus / pci / devices BAR地址大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我有一个用户空间应用程序,我用它来写入pci设备的寄存器.它将设备的基本内存地址作为参数.我没有在每个平台上通过lspci查找,而是想编写一个bash脚本来使用供应商/设备ID来查找基地址并调用应用程序. 让我们使用设备ID为“0891”的Intel网络控制器作为示例.这是在Ubuntu盒子上,但我需要它在不同的Linux发行版上工作. 我想过用这样的东西解析lspci的输出: lspci -vn
我有一个用户空间应用程序,我用它来写入pci设备的寄存器.它将设备的基本内存地址作为参数.我没有在每个平台上通过lspci查找,而是想编写一个bash脚本来使用供应商/设备ID来查找基地址并调用应用程序.

让我们使用设备ID为“0891”的Intel网络控制器作为示例.这是在Ubuntu盒子上,但我需要它在不同的Linux发行版上工作.

我想过用这样的东西解析lspci的输出

lspci -vn | grep -A 3 0891 | grep Memory | awk '{print $3}'

产生:

f0500000

我有兴趣从文件系统的某个地方获取基地址,而不是依赖于另一个应用程序,所以我试过:

cat /proc/bus/pci/devices | grep 0891 | awk '{print $4}'

这会产生:

f0500004

为什么第二个值偏移4个字节?

额外的问题:我可以从哪里获得PCI设备基本内存地址,而不依赖于其他应用程序,如lspci?

解决方法

从我可以确定0x ???? 0004的格式传达一些额外的信息.位2表示BAR是1 = 64位,0 = 32位地址,位3表示存储区域是1 =可预取,0 =不可预取.

大佬总结

以上是大佬教程为你收集整理的linux – lspci“Memory at …”vs / proc / bus / pci / devices BAR地址全部内容,希望文章能够帮你解决linux – lspci“Memory at …”vs / proc / bus / pci / devices BAR地址所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。