最新下载
热门教程
- 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; } | |
相关文章
- 钉钉网页版快捷入口-钉钉网页版一键登录官网 03-13
- 英语cet4成绩查询入口-cet4级成绩查询官网入口 03-13
- 老王磁力官网2026最新版-老王磁力最新网址发布页 03-13
- 哔咔漫画PicACG极速下载器-带可视化界面+多线程极速下载 03-13
- 虫虫漫画在线看入口在哪-2026最新地址与高清免费漫画在线阅读指南 03-13
- 学信网官方学籍验证通道-学信网权威学历认证通道 03-13