最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Linux在应用层读写寄存器的方法及实现实例
时间:2022-06-30 16:10:07 编辑:袖梨 来源:一聚教程网
Linux在应用层读写寄存器的方法
可以通过操作/dev/mem设备文件,以及mmap函数,将寄存器的地址映射到用户空间,直接在应用层对寄存器进行操作,示例如下:
代码如下 | 复制代码 |
#include #include #include #include #include #include #include #define AUDIO_REG_BASE (0xB800E000) #define MAP_SIZE 0xFF
staticintdev_fd; intmain(intargc,char**argv) {
dev_fd = open("/dev/mem", O_RDWR | O_NDELAY);
if(dev_fd < 0) { printf("open(/dev/mem) failed."); return0; }
unsignedchar*map_base=(unsignedchar* )mmap(NULL, MAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, dev_fd, AUDIO_REG_BASE );
printf("%x n", *(volatileunsignedint*)(map_base+0x38));//打印该寄存器地址的value
#if 1 // LINE IN printf("%x n", *(volatileunsignedint*)(map_base+0x30));
*(volatileunsignedint*)(map_base + 0x30) = 0x208121bc;//修改该寄存器地址的value usleep(1000000); *(volatileunsignedint*)(map_base + 0x30) &= ~(0x1<<16);//修改该寄存器地址的value usleep(1000000);
printf("%x n", *(volatileunsignedint*)(map_base+0x30)); #endif
if(dev_fd) close(dev_fd);
munmap(map_base,MAP_SIZE);//解除映射关系
return0; } |
相关文章
- 阴阳师小袖之手幽篁流影怎么样 12-23
- 王者荣耀嬴政玄雷天君怎么样 12-23
- 光遇12.23免费魔法有什么 12-23
- 光遇12.23大蜡烛在哪里 12-23
- 光遇12.23季节蜡烛在哪里 12-23
- 王者荣耀嬴政玄雷天君怎么样 王者荣耀嬴政玄雷天君皮肤介绍 12-23