內核配置devmem
devmem命令依賴于/dev/mem設備節(jié)點,需要在Linux內核中打開/dev/mem的配置:
Device Drivers --- >
Character devices --- >
[*] /dev/mem virtual device support

Linux應用層操作寄存器
除了直接使用devmem,我們也可以在Linux應用層自己實現(xiàn)一個devmem。
devmem的實現(xiàn)原理,就是打開/dev/mem,然后通過mmap映射物理地址,從而實現(xiàn)讀寫寄存器。因此,我們只要實現(xiàn)這些操作,就可以自己實現(xiàn)類似devmem的功能。
例如,在Linux應用層讀取物理地址為0x40000000的值:
#include < stdio.h >
#include < stdlib.h >
#include < time.h >
#include < unistd.h >
#include < fcntl.h >
#include < unistd.h >
#include < sys/mman.h >
#define MAP_SIZE 0x80000
#define base 0x40000000
int main(int argc, char **argv)
{
int fd = open("/dev/mem",O_RDWR|O_NDELAY);
if (fd < 0)
{
printf("open /dev/mem error!n");
return -1;
}
void *map_base = mmap(NULL,MAP_SIZE,PROT_READ|PROT_WRITE,MAP_SHARED,fd,base);
if (map_base == MAP_FAILED)
return -1;
printf("%x n",*(volatile unsigned int*)(map_base));
close(fd);
munmap(map_base,MAP_SIZE);
return 0;
}
總結
devmem是一個很常用的工具,主要給驅動開發(fā)人員在Linux應用層調試使用。devmem不僅僅是訪問寄存器,只要有權限訪問某個物理地址,就可以使用devmem,方便我們調試。
-
寄存器
+關注
關注
31文章
5608瀏覽量
129966 -
內核
+關注
關注
4文章
1467瀏覽量
42871 -
Linux
+關注
關注
88文章
11758瀏覽量
219008 -
RISC
+關注
關注
6文章
485瀏覽量
86598 -
應用層
+關注
關注
0文章
49瀏覽量
11810
發(fā)布評論請先 登錄
嵌入式linux驅動對gpio的基本操作
寄存器變量
嵌入式Linux驅動 GPIO操作 包括驅動和應用層程序對驅動進行測試
STM32的寄存器操作
Linux應用層操作寄存器
評論