技术标签: C语言 linux /dev/mem 读写reg mmap 嵌入式
通常读写某个寄存器的操作如下:
fd = open("/dev/mem", O_RDWR|O_SYNC);
if (fd == -1)
{
printf("open err!\n");
return (-1);
}
map_base = mmap(NULL, mem_length, PROT_READ|PROT_WRITE, MAP_SHARED, fd, base_addr);
但是有时会却会遇到报错:Segmentation fault
该错误其实是mmap地址错误的问题导致的,因为内存在使用时分配的最小单位都是以page来分配的,因此在做mmap时,地址必须以page大小来字节对其。
系统的page大小可以通过linux命令getconf命令来获取:getconf PAGE_SIZE,在C函数中也可以通过函数getpagesize()获取大小;通常大小都为4096。
因此,假设需要访问地址0xF2440100,则base_addr需要设定的值该为0xF2440100 & 4095
fd = open("/dev/mem", O_RDWR|O_SYNC);
if (fd == -1)
{
printf("open err!\n");
return (-1);
}
page_size = getpagesize();
base_addr = phy_addr & (~(page_size -1));
mem_length = page_size*n;
map_base = mmap(NULL, mem_length, PROT_READ|PROT_WRITE, MAP_SHARED, fd, base_addr);
virt_addr = (unsigned long )map_base + (phy_addr - base_addr);
Flutter进阶文章目录Flutter进阶如何构造炫酷的动画效果Animation、AnimationController与ListenerAnimationWidget与AnimationBuilderhero动画单线程模型怎么保证UI运行流畅Event Loop机制异步任务异步函数IsolateHTTP网络编程与JSON解析HTTP网络编程HttpClienthttpdioJSON解析如何解析补充本地存储与数据库的使用与优化文件SharedPreference数据库如何在Dart层兼容Android
简介:云原生和边缘计算是近两年都非常火的技术话题了,在第十届云计算标准和应用大会上,阿里云高级技术专家熊鹰分享了《基于融合、协同系统的边缘云原生架构演进和实践》,希望通过介绍现在阿里云在边缘计算和边缘云原生这些技术领域的系统架构演进,让大家了解到业务在云原生和边缘计算结合场景下落地的一些思考。云原生和边缘计算是近两年都非常火的技术话题了,在第十届云计算标准和应用大会上,阿里云高级技术专家熊鹰分享了《基于融合、协同系统的边缘云原生架构演进和实践》,希望通过介绍现在阿里云在边缘计算和边缘云原生这些技术领域的系统
<script>export default { data() { return { app_height: 0 }; }, onLoad() { const _this = this; uni.getSystemInfo({ success: res => { console.log('手机可用高度:' + res.w.
Beta版:产品(驱动、BIOS)发布之前的测试版本,也叫做β版,与此对应的还有α版(Alpha版)。α版通常是软件开发商内部自行测试的版本,而β版则是公开发布让用户来进行测试的版本。 版本号里面的Build说明这个版本是第几次编译的结果,比如: V1.79Build210比V1.79Build200的版本要新,因为V1.79Build210是"电子文档处理器"第210次编译的版本。 Alpha:
android 中使用百度地图关于地点弹出框的样式与实现方法
Java多线程详解
1、保存模型model.save('**.h5')将整个模型保存下来,以后直接载入模型与训练数据即可开始训练.不用再定义网络和编译模型.(这种方法已经保存了模型的结构和权重,以及损失函数和优化器)载入模型代码如下:from keras.models import load_modelmodel.load_model('**.h5')2、保存模型权重model.save...
本文通过大量的示例和图示分析了常见的JVM工具的是呀方法和解决问题的思路步骤
1.信息技术为主要手段建立的用于政务服务的信息化系统属于()。A.信息资源系统 B.信息网络系统 C.信息应用系统 D.信息存储系统2.相对于信息系统工程,建筑工程具有()的特点。A.技术复杂 B.难以度量和检查 C.复制成本低 D.设计与实施分离3.信息系统的生命周期可以分为立项、开发、运维、消亡四个阶段,()不属于开发阶段的任务。A.系统规划 B.系统分析 C.系统设计 D.系统验收4.()不属于国家政务信...
自从谷歌 I/O 2017宣布将支持 Kotlin 作为 Android 开发的 First-Class 语言,各种 Kotlin 能否取代 Java 的文章、争论层出不穷。 作为一名老 Java 程序员,虽然类似场面见过不少,但心态是比较复杂的。早在 2009 年,就有了 Scala 是否是 Java 后继者的争论。2009年7月 InfoQ 发表的一篇文章:「Roundup: Scala as
1.EXPLAINtype列,连接类型。一个好的SQL语句至少要达到range级别。杜绝出现all级别。key列,使用到的索引名。如果没有选择索引,值是NULL。可以采取强制索引方式。key_len列,索引长度。rows列,扫描行数。该值是个预估值。extra列,详细说明。注意,常见的不太友好的值,如下:Using filesort,Using temporary。2.SQL语句中IN包含的值不应过多MySQL对于IN做了相应的优化,即将IN中的常量全部存储在一个数组里面,而且这个数组是排好
Fiddler系列教程:使用Fiddler录制Jmeter性能测试脚本 我们知道Jmeter本身可以录制脚本,也可以通过BadBoy,BlazeMeter等工具进行录制,其实Fiddler也可以录制Jmter脚本(而且有些页面,由于安全设置等原因,使用Jmeter直接无法打开录制时,这时就需要用到Fiddler这个专业的抓包工具了)。 运行环境为Windows10系统...