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生物进化中文版(Spores)
孢子2生物进化中文版让我们来做一回疯狂的博士,打造一个属于自
叫我万岁爷九游官方版
叫我万岁爷带你体验当换地点感觉,全新的模拟手游大作让你开始一
梦回凤歌
梦回凤歌手游中你将步入古代的宫廷纷争之中,本想度过美好幸福的
洋果子店rose最新版本
洋果子店最新版是一款十分容易让人垂涎的开店经营类手游。游戏玩
明日大亨最新版
明日大亨手游,一个非常经典有趣的模拟经营类型的商战手游,在游