首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取linux中每个设备的内存映射

获取linux中每个设备的内存映射
EN

Stack Overflow用户
提问于 2012-04-26 21:36:03
回答 4查看 36.8K关注 0票数 6

如何获取Linux可识别的所有物理设备的内存映射。我已经查找了/proc/iomem和/proc/ioports。但是,我找不到每个设备的内存映射。有关于如何实现这一点的想法吗?

EN

回答 4

Stack Overflow用户

发布于 2012-04-30 10:15:09

据我所知,唯一通用的方法是/proc/iomem。这向您展示了分配给谁的内存范围的核心视图。

如果你想了解更多细节,你需要查看每个单独的驱动程序。

您可能会从/proc/vmallocinfo获得更多信息,因为ioremap()使用vmalloc (尽管可能不是在所有架构上)。

票数 10
EN

Stack Overflow用户

发布于 2012-05-20 07:00:50

您的机器的外围设备寄存器位于何处?我相信之前的回答已经为您提供了有价值的输入。/proc/iomem/proc/vmallocinfo的结合为您提供了大量信息。请注意,使用vmalloc时,您需要深入研究内核源代码,以便将函数名与设备驱动程序相关联。

但真正的问题是你到底想知道什么?您需要此信息的目的是什么?

在我看来,您似乎是在尝试直接访问设备的物理内存,您应该依靠ioctl、sysfs或驱动程序提供的现有服务来与设备“对话”。

不要忘记这一点:如果Linux没有显示您想要的信息,这可能是因为您没有寻找正确的信息,或者您试图绕过现有的服务。从用户空间的角度来看,即应用程序,你永远不应该关心物理内存的位置。

票数 5
EN

Stack Overflow用户

发布于 2012-04-26 21:42:37

当我记得我的内核编码时间正确时,iomem/ports的输出只列出了驱动程序在那里注册的内容。因此,它更多地是每个驱动程序的输出,而不是每个设备的输出。

因为现在大多数设备都是pci设备,所以lspci -v可能是你能得到的最好的,它可以显示已使用的内存和io端口。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10334596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档