最新下载
热门教程
- 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; } |
相关文章
- 合金装备3重制版罗高博伊小黄鸭位置攻略 罗高博伊小黄鸭在哪 09-14
- 超级机器人大战Y格雷乔姆怎么获取 机体技能及动画展示 09-14
- 合金装备3重制版扎吉欧里埃小黄鸭位置攻略 扎吉欧里埃小黄鸭在哪 09-14
- 桃源深处有人家兑换码通用不过期 兑换码大全及输入位置 09-14
- 超级机器人大战Y盖塔圣龙怎么玩 机体技能及动画展示 09-14
- 原神卡维培养攻略 卡维全方位养成攻略 09-14