內核配置devmem
devmem命令依賴于/dev/mem設備節點,需要在Linux內核中打開/dev/mem的配置:
Device Drivers --- >
Character devices --- >
[*] /dev/mem virtual device support
Linux應用層操作寄存器
除了直接使用devmem,我們也可以在Linux應用層自己實現一個devmem。
devmem的實現原理,就是打開/dev/mem,然后通過mmap映射物理地址,從而實現讀寫寄存器。因此,我們只要實現這些操作,就可以自己實現類似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是一個很常用的工具,主要給驅動開發人員在Linux應用層調試使用。devmem不僅僅是訪問寄存器,只要有權限訪問某個物理地址,就可以使用devmem,方便我們調試。
-
寄存器
+關注
關注
31文章
5421瀏覽量
123315 -
內核
+關注
關注
3文章
1409瀏覽量
41093 -
Linux
+關注
關注
87文章
11457瀏覽量
212772 -
RISC
+關注
關注
6文章
479瀏覽量
84695 -
應用層
+關注
關注
0文章
46瀏覽量
11664
發布評論請先 登錄
嵌入式linux驅動對gpio的基本操作
寄存器變量
嵌入式Linux驅動 GPIO操作 包括驅動和應用層程序對驅動進行測試

STM32的寄存器操作

評論