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
评论
  • 【7.24 深圳】2025国际AI+IoT生态发展大会/2025全球 MCU及嵌入式技术论坛


  • 相关技术文库
  • 单片机
  • 嵌入式
  • MCU
  • STM
  • 基于C51单片机实现汽车座椅自动控制系统的软硬件设计

    引言 随着人们生活水平的提高,对汽车座椅的舒适性要求也越来越高,要求对汽车座椅地调节能够更加简单、方便、快捷。目前,汽车座椅位置的调节多采用基于手动调节方式的机械和电动控制两种方式。汽车座椅位置的调节...

    07-02
  • MCS51单片机程序设计时堆栈的计算方法解析

    用C语言进行MCS51系列单片机程序设计是单片机开发和应用的必然趋势。Keil公司的C51编译器支持经典8051和8051派生产品的版本,通称为Cx51。应该说,Cx51是C语言在MCS51单片机上的扩展,既有C语言的共性,又有它自己...

    07-02
  • 51单片机定时器工作原理及用法

    TMOD : 控制定时器的工作方式。8个bit,高四位 bit 控制 T1,、低四位 bit 控制 T0。因为定时器有4种工作方式;TMOD = 0x00(工作方式0),TMOD = 0x01(工作方式0),TMOD = 0x02(工作方式2),TMOD = 0x03(工作方式3)。...

    07-02
  • 51单片机学习单片机之路总结

    学习单片机有一学期了,现在也由51转到STM32了。一直想对51的学习做一个总结。也希望对别人有一些启发。也给后学者提供一些建议。当然本文是我对自己学习过程的总结,若有不对的地方,还请高手指出。 我想,再看本...

    07-02
  • hot51增强型单片机开发板原理图

    功能要求: 一):绿灯25s倒计时,绿灯过度红灯有5s黄灯时间,红灯25s后直接跳绿灯。 二):按键按下模拟闯红灯输入,产生5s蜂鸣器鸣叫。 开发环境: 软件:Keil uVision4 硬件:HOT51增强型单片机开发板 程序代码:...

    07-01
  • 51单片机的延时子程序

    延时程序在单片机编程中使用非常广泛,但一些读者在学习中不知道延时程序怎么编程,不知道机器周期和指令周期的区别,不知道延时程序指令的用法, ,本文就此问题从延时程序的基本概念、机器周期和指令周期的区别和联系...

    07-01
  • 什么是Flash盘?Flash盘的结构是什么样的?

    Flash是大家常使用的存储之一,对于Flash,大家或多或少有所了解。上篇文章中,小编对Flash闪存的类型有所介绍。为继续增进大家对Flash的认识,本文将对Flash盘、Flash盘结构以及Flash读写操作予以介绍。如果你对本...

    07-01
  • 深谈嵌入式系统,嵌入式系统是如何组成的?

    嵌入式系统在生活中有诸多应用,大家对于嵌入式系统或多或少有所耳闻。在前两篇文章中,小编对嵌入式系统进行过详细介绍。为继续增进大家对嵌入式系统的认识,本文将对嵌入式系统的组成加以说明。如果你对嵌入式系...

    06-27
  • 嵌入式系统秘籍共享,最全嵌入式系统解析

    嵌入式系统的应用十分广泛,因此越来越多的人学习嵌入式系统。由此,在学习嵌入式系统之前,我们应当对嵌入式系统具备一些认识。所以在本文余下部分,小编将对嵌入式系统进行全面解析。如果你对嵌入式系统具有兴趣...

    06-27
  • 51单片机超声波测距程序详解

    51单片机超声波测距程序详解 超声波四通道测距:超声波测距实现分为三大块: 其一是12864带字库的液晶驱动程序: 代码如下: /////////////////12864驱动程序/////////////////////////// //1写数据 void WriteDat...

    06-25
  • 51系列单片机的引脚图

    51系列单片机的引脚图 端子介绍 l P0.0~P0.7 P0口8位双向口线(在引脚的39~32号端子)。 l P1.0~P1.7 P1口8位双向口线(在引脚的1~8号端子)。 l P2.0~P2.7 P2口8位双向口线(在引脚的21~28号端子)。 l P3.0~P3.7 P2口8...

    06-25
  • 51单片机串口通信需要加超时中断吗?

    接收数据时,超过一定时间就算出错. 这个超时的时间是单片机自己算出的吗?超时的时间是由编程序的人定的,他定多长就多长从一段程序开始 实现电脑向 单片机发送一些数据,单片机返回Iget +数据 #include #define u...

    06-25
下载排行榜
更多
评测报告
更多
广告