我可以使用物理寻址指向内存的指针从RAM加载数据吗?

时间:2013-12-03 09:45:41

标签: memory linux-kernel kernel linux-device-driver virtual-address-space

我是否可以通过在我的驱动程序(Linux内核)中使用物理寻址(而不是虚拟)的内存指针来加载RAM中的数据,而无需在虚拟寻址中分配页面(PDE / PTE)?

1 个答案:

答案 0 :(得分:3)

是的! “/ dev / mem”是物理内存的图像,您甚至可以从用户空间访问它。

例如,要访问实际地址0x7000000,下面的代码总结了以下步骤:

fd = open("/dev/mem", O_RDWR);
map = mmap(NULL, SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0x7000000);