如何获取所有被Linux的识别出的物理设备的存储器映射。 我已经抬头看的/ proc / IOMEM和的/ proc / ioports。 但是,我没能找到每个设备存储器映射。 就如何实现这一目标的任何想法?
Answer 1:
据我所知的唯一通用的方式是/proc/iomem
。 这表明你的观点是什么存储器范围被分配给谁的内核。
如果您想了解更多的细节,你需要看每个单独的驱动程序。
你可能会得到一些更多信息/proc/vmallocinfo
因为ioremap()
使用vmalloc
(尽管可能不是在所有的架构)。
Answer 2:
当你的机器的外设寄存器位于? 以前的答案已经给了你宝贵的意见,我相信。 组合/proc/iomem
和/proc/vmallocinfo
为您提供了大量的信息。 请注意, vmalloc
,你需要深入到内核源代码的函数名与设备的驱动程序相关联。
但真正的问题是你想知道到底是什么? 目的是什么,你想要这个信息?
在我看来,你试图直接访问设备的物理内存,你应该依靠的ioctl,sysfs的,或现有的由司机“谈”与设备提供的服务。
不要忘记这一点:如果Linux不告诉你,你想要的信息,这可能是因为你是不是在找正确的信息,或者您正试图绕过现有的服务。 从视图,即应用程序的用户空间中的点,你永远不应该关心的物理内存位置。
Answer 3:
当我还记得我的内核编码次数的权利,IOMEM输出/端口只是列出什么驱动寄存器那里。 因此,它更是一个每个驱动程序,而不是每个设备输出。
由于大部分的设备是当今PCI设备上lspci -v
是也许你可以得到最好的,这说明使用的内存和IO端口。
Answer 4:
这个问题是这样老了,但在尝试安装Linux(还是新手)我这个问题挣扎了几天。
次要编号:从我收集的,每个设备仅由它是否是一个块或字符设备,也可以由一个主要标识。
在/ SYS的/ dev,文件夹,也有位于它们相应的文件夹中的每个块/字符设备的符号链接。 这些是链接到/ SYS文件夹内的物理设备信息。
有在/ dev文件夹内的并联块/焦炭的文件夹,其中的每一个具有相应的符号链接。 这些符号链接是在/ dev文件夹中的实际设备文件。
所以,如果你能得到大:设备的未成年人,可以在/ dev下的设备映射到/ SYS设备。 对于驱动器,你可以得到主要:次要与lsblk。