最新下载
热门教程
- 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; } | |
相关文章
- 异环开荒角色推荐 04-29
- 一加 Ace 6 至尊版全面评测:送给FPS玩家的一份梦想礼物 04-29
- 羞羞漫画免费在线观看-羞羞漫画官网免费登录 04-29
- 觉醒大妈技能搭配攻略最新(完美搭配技能,让大妈成为无敌存在!) 04-29
- 优酷云包场入口在哪-优酷云包场领取秘籍 04-29
- jk漫画永久免费下载入口在哪-jk漫画最新版本下载永久防失效地址 04-29