内存模型 linux,内存模型 - STM32F4 编程手册学习_Linux编程_Linux公社-Linux系统门户网站...

news/2024/5/20 22:20:55/文章来源:https://blog.csdn.net/weixin_39815925/article/details/116673611

STM32F4编程手册学习2_内存模型

1. 内存映射

MCU将资源映射到一段固定的4GB可寻址内存上,如下图所示。

8ea158d275275c80deb531754bf4d716.png

内存映射将内存分为几块区域,每一块区域都有一个定义的内存类型,一些区域还有一些附加的内存类型。

内存类型有以下几种:

Normal

处理器可以为了性能而对访问该区域的任务进行重排序。

Device

处理器保证访问该内存的任务与其他访问Device或者Stronly-ordered内存的任务相对顺序不变。

Stronly-ordered

处理器保证该访问该内存的任务与所有其他任务保持相对顺序。

Execute Never(XN)

处理器避免对此的指令访问,任何试图从该区域预取指令的操作都将造成一个内存管理错误异常。

2. 内存访问顺序

对于大多数由显示内存指令访问指令所引起的内存访问而言,系统不会保证访问完成的顺序与程序中顺序一致。如果程序的执行依赖于两次内存完成的顺序,那么应该使用内存屏障指令,来保证内存访问按照程序代码中的顺序执行。

然而,内存系统可以保证,一些对Device 和Strongly-ordered内存的访问操作按顺序执行。如下表所示,其中A1、A2分别表示两次内存访问操作指令,“

c8e998f2a38908b68255c01575572953.png

内存访问屏障有DMB, DSB, ISB三种,如下表所示

指令描述

DMB

Data Memory Barrier, 保证此指令之前的内存任务执行完毕,才会执行后续的内存任务。

DSB

Data Synchronization Barrier, 保证此指令之前的内存任务执行完毕,之后才会执行后续指令。

DMB

Instruction Synchronization Barrier, 保证所有已经完成的内存任务可以被后续指令识别。

下面是几个使用内存屏障的例子:

向量表

如果程序改变了向量表某一项的入口,之后使能了对应异常。那么在使能异常之前,需要使用DMB指令,以保证异常进入的是新的异常向量表。

Self-Modifying code

如果程序包含Self-Modifying code代码,在代码修改后需要立即需要使用ISB指令,以保证后续指令使用了新的程序代码。

memory map switching

如果系统支持内存映射变换机制,那么需要在内存映射变化后使用DSB,以保证后续程序使用更新后的内存映射。

动态异常优先级更改

如果在一个异常正在执行或者就绪状态时,该异常优先级更改了,应该使用DSB指令,以保证改变生效。

访问Strongly-ordered 内存不需要使用DMB指令。

3. 内存访问行为

内存地址内存区域内存类型XN描述

0x00000000-0x1FFFFFFF

Code

Normal

-

程序代码的可执行区域,数据也可以放在这里

0x20000000-0x3FFFFFFF

SRAM

Normal

-

数据的可执行区域 代码也可以放在这里, 该区域包括位带及位带别名区

0x40000000-0x5FFFFFFF

Peripheral

Device

XN

外设区,该区域包括位带及位带别名区

0x60000000-0x9FFFFFFF

External RAM

Normal

-

数据外部存储区

0xA0000000-0xDFFFFFFF

External Device

Device

XN

外部设备区

0xED000000-0xED0FFFFF

Private Peripheral BUS

Stronly-ordered

XN

此区域报刊NVIC、系统定时器、系统控制块

0xED100000-0xFFFFFFFF

Memory mapped peripherals

Device

XN

这个区域包含STM32标准外设

Code, SRAM, exteral RAM都可以保存程序,建议程序指令保存在Code区域。

3.1 bit-band 位带

位带是指将位带别名区的一个字映射到位带区域的一个位上,如下图所示。位带区域占据SRAM和外设区的最低1M字节的地方。

68b45b0f7f7f16f1b59faf2d167ed61d.png

向别名区写一个字更新了位带区的一个对应的位。别名区一个字的bit[0]决定了对应位的值, 而其他位bit[31;1]则对位带区没有什么影响。所以写0xFF跟写0x01对位带区的影响是一样的。

0b1331709591d260c1c78e86d0c51c18.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_713229.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站点赞 评论 回复 数据库设计

本文主要分享了我在设计评论模块中的一些心得,希望对读者有些许帮助。 关于这种常用功能,查了许多资料 又基于公司的业务场景 1.由用户发表作品 其他已注册用户 在浏览个用户发表的作品时可以进行 点赞 评论 (同时可以撤销点赞&#xff09…

如何提高服务器响应的数据速度_提升网站服务器的响应速度的方法

很多朋友在使用服务器时都遇到过服务器响应缓慢的情况,那么我们该如何提升网站服务器的响应速度呢?接下来我们深圳葵芳的客服,就来为大家简单的介绍一下吧。尽可能的减少HTTP请求数从客户访问网站页面到整个页面内容完全展现出来,这其中要花…

vue seo关键词设置_网站文章中如何设置关键词才更有利于SEO优化?

文章内容在网站优化中占据重要的分量,文章内容的高质量会非常有助力网站排名提升,更能给网站带来更多的流量。那么在网站优化中,如何设置文章内容的关键词才能更利于网站SEO优化?一、文章的关键词要有合适的出现频率文章内容的关键…

怎么用百度搜索php网站,PHP简单获取网站百度搜索和搜狗搜索收录量的方法

本文实例讲述了PHP简单获取网站百度搜索和搜狗搜索收录量的方法。分享给大家供大家参考,具体如下:获取网站百度搜索和搜狗搜索的收录量代码,可以用于获取网站域名在搜索引擎的收录数量,一直想找这个API但没找到,就在网…

使用 MSDeploy 部署网站

在Visual Studio 2010中,有了一种新的方式来部署网站。使用MSDeploy,可以更方便得将网站部署到多台服务器上。它会先将项目进行打包,包中包含了配置信息和网站文件。配置Package可通过右键项目,选择Package/publish settings 随后…

介绍一个工具给大家,做网站时,经常要上传文件到外网服务器,但是上传时往往需要很长时间,如果有一个文件对比工具……...

介绍一个工具给大家,做网站时,经常要上传文件到外网服务器,但是上传时往往需要很长时间,如果有一个文件对比工具,可以对比每次版本有什么文件变化,并单独找出来。这样只需要上传需求的文件就可以达到版本更…

html 分页 惰性加载,懒加载实现的分页网站footer自适应

最近在做手机端,发现下拉刷新和上拉加载的jq控件很少而且自我感觉不好用,比如iscroll之类……然后自己写了个懒加载的,也很简单,最基础的代码【不喜勿喷,但蛮实用的】wap手机端懒加载分页:用之前先引用下jq…

php二级域名 同步登录,php网站单点登录--卷一(跨二级域名)

Session主要分两部分:一,是Session数据,该数据默认情况下是存放在服务器的tmp文件下的,php.ini中可以更改。二,是标志着Session数据的Session Id,Session ID,就是那个 Session 文件的文件名&…

vue seo关键词设置_「干货」SEO常识关键词选取及设置方法

在做关键词策略的时候,选取关键词是一个很重要的环节。如何选取适合自己网站而且能够带来一定效益的关键词。常见方法如下:1、趋势推测法所谓的趋势推测法就是利用即将到来的事件进行关键词的提前策划与推测。在SEO领域,获得了先机往往能够获…

优化服务器犯法吗,服务器稳定性对于SEO优化有什么影响

服务器的稳定对于一个网站的SEO优化有什么影响呢?这一点很多的站长不是很了解,很多的站长在建设网站的时候,考虑比较多的一方面就是能省一点就是一点。但是,很多的朋友并不知道在建设网站时不能省的就是网站服务器这一块。为什么这…

webmin开新网站/创建虚拟服务器失败setquota: Quota file not found

如果你在webmin后台,开新网站/创建服务器遇到如下提示,恭喜,你找对教程了。 创建虚拟服务器失败 : setquota: Quota file not found or has wrong format. setquota: Not all specified mountpoints are using quota. 可能你会不甘心&#xf…

云视通手机下载的文件存储位置_小白版丨IPFS网络怎么存储、下载文件?怎么托管网站?...

IPFS是一种用于文件存储的对等网络协议,采用的是基于内容的寻址,而非基于位置。这意味着要查找文件,我们不需要知道它在哪里(abc.com/cat.png),而是它包含的内容(QmSNssW5a9S3KVRCYMemjsTByrNNrtXFnxNYLfmDr9Vaan)——由内容的哈希…

html优化布局什么意思,HTML标签布局对seo的重要性(如:h1,p,alt等标签)

不少的SEO教程都在强调html标签的重要性,但是又有多少的网站html标签符合SEO原则呢?而且有很多的大网站都不符合这个原则;虽然说html标签的好不对网站影响不是很大,对用户来说更加无影响,因为用户不会看你的网站源代码…

我的世界服务器换披风的网站,我的世界评测_我的世界正版披风怎么换|或_游戏手机游戏-中关村在线...

【我的世界评测】我的世界正版披风怎么换。那下面给大家分享的则是我的世界正版中更换披风的教程哦~那到底怎么更换披风呢?那下面就给大家详细的介绍一下吧!如果你有心仪的作品或者心得分享的话,欢迎来游戏园投稿,大家可以点击>…

python网站开发实例 flask_python-flask框架web服务接口开发实例

一、flask flask是一个python编写的轻量级框架,可以使用它实现一个网站或者web服务。本文就用flask来开发一个接口。 二:安装框架 flask需要先安装再引用。pip install flask 安装成功见截图三:flask开发接口流程 用flask开发接口的流程为&am…

wordpress如何让百度快速收录_百度搜狗蜘蛛池让你的新网站内页快速收录

新网站如何让网站内页,收录加快?接下来最蜘蛛池小编就跟大家分享下新站让网站内页收录加快的方法,一起来看看吧!1、使用专业的蜘蛛池平台最蜘蛛池为您提供7X24小时不间断的收录服务,35台智能服务器,每天超千万蜘蛛爬行&#xff0…

织梦网站调用变量失败_(自适应手机版)响应式精密机械模具类网站织梦模板 织梦仪器模具加工设备网站模板下载...

模板名称:(自适应手机版)响应式精密机械模具类网站织梦模板 织梦仪器模具加工设备网站模板下载本套织梦模板采用织梦最新内核开发的模板,这款模板使用范围广,不仅仅局限于一类型的企业,矿山钻机设备、矿机网站类的网站都可以用该模…

springboot做网站_Github点赞接近100k的SpringBoot学习教程+实战推荐!牛批!

如果觉得看完文章对你有帮助记得点个赞,不要做收藏党、丢进收藏夹吃灰哦!很明显的一个现象,除了一些老项目,现在 Java 后端项目基本都是基于 Spring Boot 进行开发,毕竟它这么好用以及天然微服务友好。不夸张的说&…

响应已被截断_技术:RWD响应式网站网页设计基本原则

响应式网站网页设计RWD响应式网站网页设计对于解决多尺寸屏幕问题是个很好的解决方案,从平面的角度切入需克服很多困难,没有固定的页面尺寸、没有毫米或英寸,没有任何限制会让人感到无从下手。随着建立网站的小工具越来越多, 网页…

支持哪些格式的图标_免费矢量图标素材资源网站,您一定会有需要(建议收藏)...

做设计、自媒体的朋友们,以及脑图爱好者,一定有过到处找矢量图标资源的经历,现在为大家推荐几个免费的矢量图标素材资源网站,对提高生产力很有帮助。一、Iconfont-阿里巴巴矢量图标库链接:https://www.iconfont.cn/Ico…