国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 服務(wù)器 > Web服務(wù)器 > 正文

Linux在應(yīng)用層讀寫寄存器的方法及實現(xiàn)實例

2024-09-01 13:50:46
字體:
供稿:網(wǎng)友

Linux在應(yīng)用層讀寫寄存器的方法

可以通過操作/dev/mem設(shè)備文件,以及mmap函數(shù),將寄存器的地址映射到用戶空間,直接在應(yīng)用層對寄存器進行操作,示例如下:

#include <stdio.h> #include <stdlib.h> #include <time.h> #include <unistd.h> #include <fcntl.h> #include <unistd.h>  #include <sys/mman.h> #define AUDIO_REG_BASE  (0xB800E000) #define MAP_SIZE    0xFF  static int dev_fd; int main(int argc, char **argv) {    dev_fd = open("/dev/mem", O_RDWR | O_NDELAY);       if (dev_fd < 0)    {     printf("open(/dev/mem) failed.");       return 0;   }     unsigned char *map_base=(unsigned char * )mmap(NULL, MAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, dev_fd, AUDIO_REG_BASE );    printf("%x /n", *(volatile unsigned int *)(map_base+0x38)); //打印該寄存器地址的value  #if 1 // LINE IN   printf("%x /n", *(volatile unsigned int *)(map_base+0x30));    *(volatile unsigned int *)(map_base + 0x30) = 0x208121bc; //修改該寄存器地址的value   usleep(1000000);   *(volatile unsigned int *)(map_base + 0x30) &= ~(0x1<<16); //修改該寄存器地址的value   usleep(1000000);    printf("%x /n", *(volatile unsigned int *)(map_base+0x30)); #endif    if(dev_fd)     close(dev_fd);    munmap(map_base,MAP_SIZE);//解除映射關(guān)系    return 0; } 

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 洞头县| 临湘市| 科技| 太谷县| 新兴县| 和龙市| 甘肃省| 托克逊县| 澄城县| 乃东县| 鄂州市| 石首市| 邹平县| 迭部县| 防城港市| 鹿邑县| 红安县| 瓮安县| 龙岩市| 工布江达县| 呼图壁县| 治县。| 湛江市| 定西市| 大洼县| 四子王旗| 弥勒县| 攀枝花市| 会理县| 汉川市| 涪陵区| 防城港市| 长乐市| 张北县| 大邑县| 乌兰浩特市| 泽库县| 广西| 葵青区| 五华县| 沙洋县|