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; } |
火柴人绳索英雄2无限金币版 (Stickman Rope Hero 2)安卓版v2.2v3.4.2
下载奥特曼之格斗超人内测版本 安卓最新版v11.0.0
下载奥特曼之格斗超人百度版 安卓版v11.0.0
下载奥特曼之格斗超人4399游戏盒版 最新安卓版v11.0.0
下载德凯奥特曼D闪光剑模拟器 安卓版v1.0
德凯奥特曼D闪光剑模拟器是一个非常有趣的奥特曼变身模拟器,可
亚刻觉醒器 安卓版v1.1
亚刻觉醒器模拟器是一个非常有趣的奥特曼变身模拟器,为喜欢亚刻
海上餐厅无限金币版 v1.0
海上餐厅免广告版是游戏的破解版本,在该版本中为玩家去除了广告
阿西美女室友竟然全解锁版 v1.0.2
阿西美女室友竟然内置菜单版是游戏的破解版本,在该版本中为玩家
我是大东家正版 最新版v1.2.738
我是大东家正版是一款放置类模拟经营手游,玩家将回到古代成为家