【驱动】TI AM437x(内核调试-07):devmem2直接读写内存、寄存器,devkmem读取内核变量

1、/dev/mem 和 /dev/kmem

1)/dev/mem: 物理内存的全镜像。可以用来访问物理内存

2)/dev/kmem: kernel看到的虚拟内存的全镜像。可以用来访问kernel的内容。kernel部分内存用户空间本不可访问。但是因为所有进程共享内核空间的页表。所以内核虚拟地址对应物理地址是确定的。kmem的作用即是根据kernel的虚拟地址,找到对应的物理地址,再将物理地址映射到用户空间。这样访问映射的虚拟地址,即访问内核对应的内容。

3)区别:
/dev/mem: 物理内存的全镜像。可以用来访问物理内存。
/dev/kmem: kernel看到的虚拟内存的全镜像。可以用来访问kernel的内容。

4)作用:
前者用来访问物理IO设备,比如访问显卡的物理内存,或嵌入式中访问GPIO。用法一般就是open,然后mmap,接着可以使用map之后的地址来访问物理内存。这其实就是实现用户空间驱动的一种方法。
后者一般可以用来查看kernel的变量,或者用作rootkit之类的。

2、内核配置

Device Drivers → Character devices → /dev/kmem virtual device support
【驱动】TI AM437x(内核调试-07):devmem2直接读写内存、寄存器,devkmem读取内核变量_第1张图片

3、devmem2

1)使用方法
注意:该工具一次只能读/写1个寄存器

 
 

你可能感兴趣的:(linux驱动,linux,devmem,devkmem)