Cortex-M0处理器的存储模型
eetrendMcu 2020-11-19

本文将描述Cortex-M0设备的内存映射和内存访问行为。该处理器有一个固定的存储映射,它可以提供高达4GB的可寻址内存。存储映射图如下:

该处理器为处理器核外设寄存器保留了PPB地址范围,关于Cortex-M0处理器以及核外设的内容见

1、存储区、类型和属性

存储映射被分成多个区,每个区都有其存储类型,有些区还有附加属性。存储类型及附加属性决定了如何访问该存储区。

储存类型是下列几种:

普通型(Normal)

为了提高效率、或执行预测读,处理器可以对该类型存储器的存取操作进行重排序。

设备型(Device)

该类型存储器与设备型或强顺序型存储器之间的存取操作,处理器将保持其顺序。

强顺序型(Strongly-ordered)

任何与该类型存储器相关的存取操作,处理器将保持其顺序。

对于设备型和强顺序型存储器的不同顺序要求,意味着存储系统可以将一个写操作缓存到一个设备型存储器中,但是不能缓存到一个强顺序型的存储器中。附加属性有:

可共享(ShaSharreableeable)

对于可共享的存储区,在多总线主设备系统中,存储系统可提供主设备之间的数据同步,例如某个带有DMA控制器的处理器。

强顺序型存储器都具有可共享属性。

如果多个总线主设备访问一个不可分享的存储区域,必须通过软件来保证多个总线主设备之间的数据一致性。

注意:仅当处理器在共享存储器的多处理器系统中时,该属性才有关系。

不可执行(XN)

处理器将阻止不可执行存储区指令的执行。如果从一个不可执行存储区取指令并执行,将会产生一个硬故障。

2、存储系统的访问顺序

对于多数显式的存取指令所产生的存储器访问,存储系统不能保证指令的顺序与实际操作的顺序是一致的,而且对指令的重排序并不会影响到指令序列的行为结果。通常,如果正确的程序执行要求两次内存访问必须按程序的顺序来完成,那么软件必须在内存访问指令之间插入一个存储隔离指令,相关内容见第2-16页存储访问的软件排序。

然而,存储系统能够保证访问设备和强顺序存储区的顺序。对于两个存储访问指令A1和A2,如果A1在A2程序之前发生,则存储访问顺序是:

其中:

- 表示存储系统不能保证访问的顺序。

3、存储访问行为

对内存映射中每个区的访问行为是:

表1、存储访问行为

a、关于存储区、类型和附加属性,可见上文。

其中Code、SRAM和externalRAM区可以存放程序。

关于Cache和可共享存储区的访问限制

当一个系统包含Cache或可共享存储区时,一些存储区有额外的访问限制,有些区被再次细分,如表2所示:

表2、存储区的可共享性和缓存策略


a、更多关于存储区、类型和属性的内容见上文。

b、WT=写通方式,没有写分配。WBWA=写回方式,写分配。更多内容见词汇表(Glossary)。

4、软件对存储访问排序

指令在程序中的顺序并不能始终够保证相应存储操作处理的顺序。这是由于:•处理器可对一些存储访问进行重排列,以提高效率,只要不影响指令顺序的行为。

• 内存映射中的存储器或设备可能有不同的等待状态。

• 有一些存储访问被缓冲或是预测执行的。

上文中存储系统内存访问顺序的内容描述了存储系统如何保证存储访问顺序的情况。此外,如果存储访问的顺序很重要,那么软件必须包括存储隔离指令来保证所希望的顺序。处理器提供以下存储隔离指令:

DMB

数据存储隔离指令,确保DMB之前所有显式存储访问完成之后,其后的存储访问才可以开始执行。DMB的内容见下文。

DSB

数据同步隔离指令,当DSB之前所有的显式存储访问完成之后,其后的指令才可以开始执行。见下文的DSB指令。

ISB

在ISB后续的指令被取之前,处理器的流水线必须被清空。见下文的ISB指令。

存储隔离指令的实例:

向量表

如果程序改变向量表中的一个入口地址,而后允许相应的异常发生,就需要在操作中使用一条DMB指令。这能确保能在异常被允许后就立即执行时,处理器将使用新的异常向量。

自修改代码

如果一个程序包含有自修改代码,那么在代码修改之后应使用一个ISB指令。这能确保接下来的指令使用更新后的程序。

内存映射切换

如果系统包含一个内存映射切换机制,那么在切换了内存映射之后应使用一个DSB指令。这保证接下来的指令使用更新过的内存映射。

访问强顺序存储区,例如系统控制时钟,就不需要使用DMB指令。

5、存储系统的端格式

处理器把存储系统当作一个从0开始向上增长编号的字节集合。例如0-3字节存放第一个字,4-7字节存放第二个字。内存字节顺序是在实现时定义的,下面小节的内容描述了可能的实现方案:

• 字节不变的大端格式,见下文。

• 字节不变的大端格式,见下文。

参见下文应用中断和复位控制寄存器(ApplicationInterruptandResetControlRegister)的内容,阅读AIRCRENDIANNESS位域的内容来找到所实现的端格式。

字节不变大端格式

在字节不变大端格式中,处理器在存储器的最低地址存储字的最高字节,而字的最低字节被存放在最高地址。例如:

小端格式

在小端格式中,处理器在存储器的最低地址存放字的最低字节,而字的最高字节被存放在最高地址。例如

声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
热门推荐
  • 相关技术文库
  • 单片机
  • 嵌入式
  • MCU
  • STM
  • 为什么有些CPU的主频更低,但运算效率却更高呢?

    为什么有些CPU的主频更低,但运算效率却更高呢? 比如:51单片机30M主频,STM32单片机20M主频,执行相同一段代码可能主频更低的STM32所花的时间更短。 这里就牵涉到CPU流水线的问题,本文围绕CPU流水线描述相关内容。 一、早期CPU流水线 1.流水线来源 流水线

    10-19
  • 究竟是什么让很多单片机的工作电压是5V?

    5V来自于TTL电平,5呢为True,0即为False,之后用了压降更低的PN节,衍生出了3.3这个电平。 12V和24V来自于汽车电瓶,早年乘用车又12V和24V两个系统,现在一般小型车12V,商用车24V,再究其由来应该是铅酸电池。 所以3v3和5v一般出现在信号电路或者单片机等vc

    10-19
  • 没想到,CRC校验原来这么简单

    由于公众号申请的时间比较晚,所以没有留言互动功能,最近公众号上线了读者讨论功能,和留言差不多,对本篇文章有什么感想的都可以到文章末尾留言评论。 目录 前言 CRC算法简介 CRC计算 CRC校验 CRC计算的C语言实现 CRC计算工具 总结 前言 最近的工作中,要实

    11-09
  • 解决串口传输“阻塞”问题的方案

    本文在探讨传统数据收发不足之后,介绍如何使用带FIFO的串口来减少接收中断次数,通过一种自定义通讯协议格式,给出帧打包方法;之后介绍一种特殊的串口数据发送方法,可在避免使用串口发送中断的情况下,提高系统的响应速度。 1.简介 串口由于使用简单,价格

    09-17
  • 嵌入式 Linux 的一切,看这一篇就够了!

    嵌入式Linux是什么 嵌入式Linux跟桌面Linux一样,是一个操作系统。从单片机走过来的童鞋往往习惯于直接控制寄存器,事必躬亲,从零开始实现想要的功能。而在嵌入式Linux的世界里,我们首先要抛弃这个思想,应把它作为最后没办法的办法。 就像我们想要在window

    09-11
  • 单片机高阻态与P0口上拉电阻讲解

    51单片机的时候对P0口必须加上上拉电阻,否则P0就是高阻态,对这个问题可能感到疑惑,为什么是高阻态?加上拉电阻?今天针对这一概念进行简单讲解。 在一个系统中或在一个整体中,我们往往定义了一些参考点,就像我们常常说的海平面,在单片中也是如此,我们

    09-01
  • 技术原理解读:小波变换

    记得我还在大四的时候,在申请出国和保研中犹豫了好一阵,骨子里的保守最后让我选择了先保研。当然后来也退学了,不过这是后话。当时保研就要找老板,实验室,自己运气还不错,进了一个在本校很牛逼的实验室干活路。我们实验室主要是搞图像的,实力在全国也是

    09-01
  • 数控加工刀具及工具系统:数控加工刀具

    点击蓝字关注我们 一、数控加工对刀具的要求 稳定可靠的切削性能, 很高的耐用度, 可靠的卷屑、 断屑和排屑能力, 高的加工精度和重复定位精度, 能实现刀具尺寸的预调、 快速换刀和自动换刀。 二、数控加工刀具的构成和分类  数控加工刀具一般应包括通用刀

    08-27
  • 螺纹刀具:丝锥和板牙

    一、丝锥 1.普通丝锥的结构 丝锥是加工内螺纹并能直接获得螺纹尺寸的标准螺纹刀具,它的基本结构是一个有轴向槽的外螺纹。  2.螺旋丝锥  螺旋丝锥可控制排屑方向: 加工通孔右旋螺纹用左旋槽丝锥,使切屑从孔底排出。 加工盲孔右旋螺纹用右旋槽丝锥,使切屑

    09-09
  • 单片机系统抗干扰,软件 VS 硬件哪个重要?

    在提高硬件系统抗干扰能力的同时,软件抗干扰以其设计灵活、节省硬件资源、可靠性好越来越受到重视。下面以MCS-51单片机系统为例,对微机系统软件抗干扰方法进行研究。 1、软件抗干扰方法的研究 在工程实践中,软件抗干扰研究的内容主要是:一、消除模拟输入

    08-24
  • 大牛都是怎么学习STM32的?看完顿悟

    单片机用处这么广,尤其是STM32,这么火!如何快速上手学习呢? “不要去学STM32”。我不是说STM32不好,而是这种为了学习单片机而去学习单片机的思路不对。 你问,如何系统地入门学习stm32? 这本身就是一个错误的问题。假如你会使用8051 , 会写C语言,那么

    08-25
  • 史上最全Linux/C/C++思维导图

    申明:所有图片都源自网络素材,侵删。 这是收集的,并花大量时间整理的可说最全的Linux/C/C++思维导图。 有些图可能不是高清,但是放大即可看清楚。 linux思维导图 1、认识Linux 2、Linux命令 3、Linux学习路径 4、Linux 桌面介绍 FHS:文件系统目录标准 Linu

    08-20
下载排行榜
更多
广告