访问从用户空间注册物理地址

时间:2014-05-03 09:25:47

标签: c linux kernel

我是Linux世界的新手,想为这个论坛提问:

如果我想从用户空间访问物理地址,并且我没有针对此特定硬件设备的任何内核驱动程序实现 - 我可以这样做吗?

我知道这不是“正确”的方式,只是想知道是否有办法。

先谢谢!

3 个答案:

答案 0 :(得分:3)

不能在没有系统调用的情况下从应用程序访问任意物理地址。 (这意味着您需要一个现有的驱动程序,或者您需要编写内核空间驱动程序来为您执行映射所需的寄存器)

Mmap也适用于虚拟地址。因此,如果您的物理地址映射到逻辑地址,那么只有您可以获得所需物理地址的映射并访问它。

答案 1 :(得分:3)

您通常无法在Linux上访问物理地址(来自用户空间程序)。

但是,您可能希望mmap(2)设备mem(4)(有关详情,请参阅virtual memory)。

您仍然会使用Advanced Linux Programming虚拟地址,但您会碰巧看到部分物理RAM。

阅读{{3}}。

答案 2 :(得分:1)

根据您的硬件架构,您可能无法直接访问寄存器的地址,因为内存保护机制以及内存地址"看到"内核与用户空间进程看到的不同。 您将需要一些内核空间代码,它们将寄存器地址来回映射到对您的用户speca进程有意义的内存地址。尝试阅读有关内存映射和mmap()相关的系统调用