應用層操作寄存器
驅(qū)動中操作寄存器,需要先進行映射將物理地址轉為虛擬地址。
但如果想在應用層中操作寄存器,也是可以實現(xiàn)的。
應用層中只需打開/dev/mem
設備節(jié)點,然后用mmap
映射寄存器地址就可以訪問了。
例如,應用層讀取物理地址為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;
}
注意,內(nèi)核必須將CONFIG_STRICT_DEVMEM=y配置選項打開才有/dev/mem節(jié)點
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
寄存器
+關注
關注
31文章
5336瀏覽量
120230 -
內(nèi)核
+關注
關注
3文章
1372瀏覽量
40276 -
Linux
+關注
關注
87文章
11292瀏覽量
209326 -
應用層
+關注
關注
0文章
46瀏覽量
11500
發(fā)布評論請先 登錄
相關推薦
寄存器是什么?怎么操作寄存器點亮LED燈?
寄存器,是集成電路中非常重要的一種存儲單元,通常由觸發(fā)器組成。在集成電路設計中,寄存器可分為電路內(nèi)部使用的寄存器和充當內(nèi)外部接口的寄存器這兩
嵌入式linux驅(qū)動對gpio的基本操作
;amp;amp;gt;&amp;gt;&amp;gt;應用編寫(閃爍燈)。目標板是iTOP4412。CPU為 Exynos4412。代碼代碼部分包括 驅(qū)動層代碼對GPIO寄存器的直接操作。然后是
發(fā)表于 11-05 07:59
如何在嵌入式linux中應用層操作gpio口
嵌入式linux文件io方式操作gpio口示例在嵌入式linux中應用層操作gpio口,如果懶得寫驅(qū)動或者懶得翻
發(fā)表于 12-16 06:19
寄存器變量
C語言中使用關鍵字register來聲明局部變量為寄存器變量。寄存器變量的值會被存放在CPU的寄存器中,每當需要使用它們時,CPU就可以直接使用,而無須再通過控制器從內(nèi)存中獲取。由于
發(fā)表于 06-03 10:13
?2364次閱讀
嵌入式Linux驅(qū)動 GPIO操作 包括驅(qū)動和應用層程序?qū)︱?qū)動進行測試
;amp;amp;amp;amp;gt;&amp;amp;gt;&amp;amp;gt;應用編寫(閃爍燈)。目標板是iTOP4412。CPU為 Exynos4412。代碼代碼部分包括 驅(qū)動層代碼對GPIO寄存器的直接
發(fā)表于 11-02 14:36
?10次下載
STM32的寄存器操作
STM32的寄存器操作在使用STM32單片機編程時一般都用ST給的庫函數(shù)編程,庫函數(shù)編程的底層就是對單片機寄存器的操作,庫函數(shù)就是一系列寄存器
發(fā)表于 01-13 15:43
?19次下載
Linux驅(qū)動操作寄存器
,第四個參數(shù)是映射的大小。 驅(qū)動中操作: #define?OFFSET??0x60?//某個寄存器的偏移地址 static?int?my_probe(struct?platform_device
如何在shell中操作寄存器
shell 中操作寄存器可以使用 devmem 命令. devmem 命令其實就是上述應用層操作寄存器生成的可執(zhí)行文件,只不過busybox
評論