Linux在应用层读写寄存器的方法及实现实例
发布时间 - 2026-01-10 23:14:06 点击率:次Linux在应用层读写寄存器的方法

可以通过操作/dev/mem设备文件,以及mmap函数,将寄存器的地址映射到用户空间,直接在应用层对寄存器进行操作,示例如下:
#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);//解除映射关系
return 0;
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Linux
# 读写寄存器
# 读写寄存器的方法
# 读写寄存器实现代码
# 虚拟机中使用linux系启用文件共享之后的文件存在的位置方法
# linux下开启php的sockets扩展支持实例
# Linux 连续执行多条命令的方法(推荐)
# Linux 添加永久静态路由的方法
# Linux系统(X64)安装Oracle11g完整安装图文教程另附基本操作
# linux下用cron定时执行任务的方法
# Linux下安装mysql-5.6.4 的图文教程
# linux正确重启MySQL的方法
# Linux tar 压缩打包命令使用方法
# 应用层
# 可以通过
# 希望能
# 谢谢大家
# sys
# mman
# define
# unistd
# time
# fcntl
# AUDIO_REG_BASE
# static
# int
# dev_fd
# MAP_SIZE
# xFF
# stdlib
# mem
# mmap
# pre
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
HTML 中动态设置元素 name 属性的正确语法详解
Laravel如何自定义错误页面(404, 500)?(代码示例)
Python结构化数据采集_字段抽取解析【教程】
Laravel如何集成Inertia.js与Vue/React?(安装配置)
php485函数参数是什么意思_php485各参数详细说明【介绍】
Laravel如何实现文件上传和存储?(本地与S3配置)
常州企业网站制作公司,全国继续教育网怎么登录?
Laravel如何编写单元测试和功能测试?(PHPUnit示例)
Laravel如何使用.env文件管理环境变量?(最佳实践)
JavaScript中的标签模板是什么_它如何扩展字符串功能
香港服务器租用费用高吗?如何避免常见误区?
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】
教你用AI润色文章,让你的文字表达更专业
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试
如何用花生壳三步快速搭建专属网站?
Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】
Laravel集合Collection怎么用_Laravel集合常用函数详解
如何快速辨别茅台真假?关键步骤解析
魔方云NAT建站如何实现端口转发?
Win11怎么设置默认图片查看器_Windows11照片应用关联设置
Laravel定时任务怎么设置_Laravel Crontab调度器配置
Android自定义控件实现温度旋转按钮效果
利用vue写todolist单页应用
焦点电影公司作品,电影焦点结局是什么?
Bootstrap整体框架之JavaScript插件架构
Laravel怎么自定义错误页面_Laravel修改404和500页面模板
java ZXing生成二维码及条码实例分享
Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤
如何用IIS7快速搭建并优化网站站点?
Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】
北京企业网站设计制作公司,北京铁路集团官方网站?
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】
Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
EditPlus中的正则表达式 实战(4)
利用JavaScript实现拖拽改变元素大小
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
Android自定义listview布局实现上拉加载下拉刷新功能
php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】
实例解析angularjs的filter过滤器
Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
图册素材网站设计制作软件,图册的导出方式有几种?
如何用狗爹虚拟主机快速搭建网站?
Mybatis 中的insertOrUpdate操作

