Cortex-M3存储器系统

发布者:kappa20最新更新时间:2019-03-08 来源: eefocus关键字:Cortex-M3  存储器系统 手机看文章 扫描二维码
随时随地手机看文章

一、存储器系统的功能概览


  1、Cortex-CM3存储器系统功能


   1)、存储器映射是预定义的,并且还规定好了那个位置使用那条总线。


   2)、Cortex-CM3的存储器系统支持“位带”操作。


   3)、Cortex-CM3存储器系统支持非对齐访问和互斥访问。


   4)、Cortex-CM3的存储器系统支持both大端配置和小端配置。


二、存储器映射


  1、Cortex-CM3只有一个单一固定的存储器映射。这极大方便了软件在各种Cortex-CM3单片机间的移植。


  2、存储器的一些位置用于调试组件等私有外设,这个地址被称为“私有外设区”。私有外设区的组件包括:


   1)、闪存地址重载及断点单元(FPB)。


   2)、数据观察点单元(DWT)。


   3)、指令跟踪宏单元(ITM)。


   4)、嵌入式跟踪宏单元(ETM)。


   5)、跟踪端口接口单元(TPIU)。


   6)、ROM表。


  3、Cortex-CM3的地址空间是4GB,程序可以在代码区,内部SRAM区以及RAM区执行。4GB粗线条划分:



   1)、内部SRAM区的大小是512MB,用于让芯片制造商连接片上的SRAM,这个区通过系统总线来访问。在此区的下部,有一个1MB的位带区,该位带区还有一个对应的32MB的“位带别名区”,容纳了8M个“位变量”。位带区对应的是最低的1MB地址范围,而位带别名区里面的每个字对应位带区的一个比特。位带操作只适用于数据访问,不适用与取指操作。


   2)、地址空间另一个512范围由片上外设(的寄存器)使用。这个区也有一条32MB的位带别名,以便于快捷的访问外设寄存器。


   3)、还有两个1GB的范围,分别用于连接外部RAM和外部设备,它们之间没有位带。两者的区别在于外部RAM区允许执行指令,而外设设备区则不允许。


   4)、最后剩下0.5GB的地带是Cortex-CM3内核所在区域,包括系统级组件,内部私有外部总线S,外部私有外部总线S,以及由提供者定义的系统外设。


   5)、私有外部总线有两条


    I、AHB外设总线,只用于Cortex-CM3内部的AHB设备,它们是:NVIC,FPB,DWT和ITM。


    II、APB外设总线,即用于Cortex-CM3内部的APB设备,也用于外部设备


   6)、NVIC所处的区域叫做“系统控制空间(SCS)”在SCS里面还有SysTick、MPU以及代码调试控制所用的寄存器:



三、存储器访问属性S


  1、Cortex-CM3为存储器做了映射之外,还为存储器的访问规定了4中属性:


   1)、可否缓冲(Bufferable)


   2)、可否缓存(Cacheable)


   3)、可否执行(Executable)


   4)、可否共享(Shareable)


  2、如果配置了MPU,则可以通过它配置不同的存储区,并且覆盖缺省的访问属性。



四、存储器的缺省访问许可


  1、Cortex-CM3有一个缺省的访问许可,它能防止使用户代码访问系统控制存储空间,保护NVIC,MPU等关键组件。缺省访问许可在以下条件时生效:


   1)、没有配置MPU。


   2)、配置了MPU,但是MOPU被除能。


  2、存储器的缺省访问许可


四、位带操作


 一)、简介


  1、支持位带操作后,可以使用普通的加载/存储指令来对单一的比特进行读写。在Cortex-CM3中,有两个区实现了位带。其中一个是SRAM区的最低1MB,第二个则是片内外


        设区的最低1MB范围。这两个区的地址除了可以像普通的RAM使用外,它也都有自己的“位带别名区”,位带别名区把每个比特膨胀成一个32位的字。


  1)、位带区与别名区的膨胀对应关系图A



   2)、位带区与别名区的膨胀对应关系图B



  2、Cortex-CM3用如下术语来表示位带存储的地址区


   1)、位带区:支持位带操作的地址区。


   2)、位带别名:对别名地址的访问最总作用到位带区的访问上。(注意:这中途有一个地址映射过程)


  3、在位带区中每个比特都都映射到别名地址区的一个字——这是只有LSB有效的字。当一个别名地址被访问时,会先把改地址变换成位带地址。


   1)、对于读操作,读取位带地址中的一个字,再把需要的位右移到LSB,并把LSB返回。


   2)、对于写操作,把需要写的位左移到对应的位序号处,然后执行一个原子的“读-改-写”过程。


  4、支持位带操作的两个内存区的范围是:


   1)、0x2000_0000-0x000F_FFFF(SRAM区中的最低1MB)和0x4000_0000-0x400F_FFFF(片上外设区中的最低1MB)。


   2)、对于SRAM位带区的某个比特,记它所在字节地址为A,位序号为n,则该比特在别名区的地址是:

   3)、对于片上外设位带区的某个比特,记它所在字节地址为A,位序号为n,则该比特在别名区的地址是:


  5、位带地址映射


   1)、SRAM区中的位带地址映射


   2)、片上外设区中的位带地址映射


 二)、位带操作的优越性


   1、位带操作对硬件I/O密集型的底层程序提供了很大方便。


   2、位带操作可用来化简跳转的判断。是代码更整洁。


  3、在多任务中用于实现共享资源在任务间的“互锁”访问。


 三)、其他数据长度上的位带操作


  1、位带操作并不限于以字为单位的传送。亦可以按半子节和字节为单位传送。


五、在C语言中使用位带操作


  1、C编译器中并没有直接支持位带操作。欲在在C中使用位带操作,最简单的做法就是#define一个位带别名区的地址。为了简化位带操作,也可以定义一些宏。


  2、当使用位带功能时,要访问的变量必须用vollatile来定义。


六、非对齐数据传送


  1、Cortex-CM3支持在单一的访问中使用非(地址)对齐的传送,数据存储器的访问无需对齐。


  2、非对齐传送实例

  3、在Cortex-CM3中,非对齐的数据传送只发生在常规的数据传送指令中,其他的指令则不支持:


   1)、多个数据的加载存储(LDM/STM)。


   2)、栈堆操作(PUSH/POP)。


   3)、互斥访问(LDREX/STREX)。


   4)、位带操作。


  4、应该养成好习惯,总是保持地址对齐。为此可以变成NVIC,使之监督地址对齐。


七、互斥访问


  1、在Cortex-CM3中,用互斥体访问取代了ARM处理器中的SWP指令。


  2、互斥访问的理念同SWP非常相似,不同点在于:在互斥访问操作下,允许互斥体所在的总线被其他master访问,也允许被其他运行在本机上的任务访问,但是Cortex-CM3能驳回有可能导致竟态条件的互斥访问。


  3、互斥访问分为加载/存储,相应的指令为LDREX/STREX,LDREXH/STREXH,LDREXB/STREXB,分别对应于字/半字/字节



  4、使用方式(以LDREX/STREX为例)


   1)、语法格式


   2)、LDREX指令与LDR相同。而STREX不同,STREX指令的执行是可以被驳回的。


    I、当处理器同意执行STREX,Rxf的值会被存储到(Rn+Offset)处,并且把Rd的值更新。


    II、若处理器驳回了STREX的执行,则不会发生存储动作,并且把Rd的值更新为1。


   3)、驳回规则:只有在LDREX执行后最近的一条STREX才能成功执行。其他情况下,驳回此STREX


    I、中途有其他STR指令执行。


    II、中途有其他的STREX执行。


   4)、当时用互斥访问时,LDREX/STREX指令必须成对使用。


八、端模式


  1、Cortex-CM3支持both小端模式和大端模式。在绝大多数情况下,Cortex-CM3都是用小端模式——为了避免不必要的麻烦,推荐使用小端模式。


  2、Cortex-CM3中对大端模式的定义与ARM7的不同(小端定义都相同)。在ARM7中大端模式称为“字不变大端”,而在Cortex-CM3中,使用的是“字节不变大端”。


   1)、Cortex-CM3的字节不变大端:存储器视图

   2)、Cortex-CM3的字节不变大端:在ABH上的数据

   3)、ARM7字节不变大端:在ABH上的数据


  3、在Cortex-CM3,是在复位时确定使用那种端模式的,且运行时不得改变。指令预取永远使用小端模式,在配置控制存储空间的访问也永远小端模式(包括NVIX,FPB之流)。另外外部私有总线地址区0xE0000000至0xE00FFFFF也永远使用小端模式。


关键字:Cortex-M3  存储器系统 引用地址:Cortex-M3存储器系统

上一篇:Cortex-M3的整体风景
下一篇:Cortex-M3栈内存操作

推荐阅读最新更新时间:2024-03-16 16:25

ARM Cortex-M3 学习笔记(4-2)
最近在学ARM Cortex-M3,找了本号称很经典的书 An Definitive Guide to The ARM Cortex-M3 在看。这个系列学习笔记其实就是在学习这本书的过程中做的读书笔记。 第四章 指令系统 数据传送类指令 寄存器到寄存器传送:MOV 指令、MVN指令 MOV R8, R3; R8 = R3 MVN R8, R3; R8 = -R3 学过微机原理的都应记得,x86中一条MOV 指令存储器和寄存器间的任意传送。ARM 中是不行的,这也是CISC和RISC 内核的一个比较明显的区别。 存储器到寄存器传送:LDRx 指令、LDMxy指令 寄存器到存储器:STRx 指令、STMxy指令 LDRx 指令
[单片机]
OS_CPU_A.ASM cortex-M3 解析
琢磨ucos内核进行中++ 先上cortex-M3 与本部分相关的汇编指令 相关的汇编指令 至于相关伪指令,参见:-----ARM汇编伪指令---- NVIC---Nested Vectored Interrupt controller--嵌套向量中断控制器 这里给出NVIC寄存器映射: NVIC 空间还用来实现系统控制寄存器。NVIC 空间分成以下部分: 0xE000E000 - 0xE000E00F. 中断类型寄存器 0xE000E010 - 0xE000E0FF. 系统定时器 0xE000E100 - 0xE000ECFF. NVIC 0xE000ED00 -0xE000ED8F. 系统控制模块,包括
[单片机]
OS_CPU_A.ASM <font color='red'>cortex-M3</font> 解析
cortex-M3粗略延时计算
最近调试磁铁驱动程序时,遇到一个奇怪的情况:(问题描述在下边这个帖子中) OSTimeDly在ucos最高优先级任务中,多次使用,有什么说法? 只是知道问题大概出现在哪块,没找到出现这种状况的理由。顺带着理清楚一些基本的常识性的东西。如下: 基本概念: AHB:Advanced High performance Bus,先进的高性能总线,这是一种“系统总线”。AHB 是在地址/控制阶段和数据阶段之间具有固定流水线的总线协议。它只支持由 AMBA AXI 协议提供的功能性的子集。 完全的 AMBA AHB 协议规范包括许多对于主机和从机 IP 开发来说不是必需的属性,因此 ARM 公司建议通常只使用该协议的子集。这个子集
[单片机]
嵌入式系统中动态随机存储器性能的研究
  引言   随着超大规模集成电路的制造工艺的进步,在单一芯片上动态随机存储器实现了更高密度的比特位,使得计算机系统在计算速度迅猛发展的同时,内存容量极大的扩大。伴随着集成度的提高,存储器单元呈现失效的可能性随之增大,失效的形式和原因也趋于更加复杂化。存储器测试的目的是确保其每个单元能够存储数据并且惟一的寻址、读、写。存储器的测试面临两方面的要求:较高失效类型覆盖率,尽可能检测出潜在的存储器故障;较少的存储器操作,以便缩短检测时间。因此存储器测试应能够在一定的测试时间内得到可能的最佳故障覆盖率。由于对存储器进行物理检测是不可能的,可行的办法是将待测存储器的访存结果与认定无故障的存储器的访存结果做比较。   1 DRAM的原理及失效
[单片机]
嵌入式<font color='red'>系统</font>中动态随机<font color='red'>存储器</font>性能的研究
ARM CORTEX-M3 内核架构理解归纳
在我看来,Cotex-M3内核的主要包括:嵌套向量中断控制器(NVIC),取值单元,指令译码器,算数逻辑单元(ALU),寄存器组,存储器映射(4GB统一编址各区域功能的划分与界定),对于开发者而言,其实主要关注的主要分为三大块: 1、寄存器组2、地址功能划分映射3、中断机制(NVIC)。 1)寄存器组 Cortex-M3内核共有19组32位寄存器: R0 R12(通用寄存器); 低寄存器组R0 R7 32位Thumb-2指令与16位Thumb指令均可访问 高寄存器组R8 R12 32位Thumb-2指令与极少数16位Thumb指令可访问 R13(堆栈指针寄存器); 主堆栈寄存器MSP(main-SP)/进程
[单片机]
Maxim推出集成MTP存储器的gamma校准基准系统
Maxim推出集成MTP (多次可编程)存储器的10位gamma校准基准系统MAX9672/MAX9673/MAX9674。器件省去了数字可变电阻、VCOM放大器、gamma缓冲器、电阻串和高压线性稳压器等多个分立元件,极大地降低了方案成本。Maxim的MTP技术实现了NV (非易失)存储器与高性能放大器的集成,可将gamma和VCOM寄存器值存储在芯片内。每个系统均支持多达100次的gamma和VCOM值写操作,无需使用外部EEPROM。这些高度集成的系统具有12路(MAX9672)、14路(MAX9673)或16路(MAX9674)可编程gamma校准输出和一路用于VCOM调节的电压基准输出,非常适合TFT-LCD应用。
[手机便携]
Maxim推出集成MTP<font color='red'>存储器</font>的gamma校准基准<font color='red'>系统</font>
e络盟推出两个基于Cortex-M处理器的STM32系列开发套件
首个融合电子商务与在线社区的电子元件分销商e络盟(element14)日前宣布,在欧洲、中东、非洲、中国和美洲推出最新的基于 ARM Cortex-M3 和 Cortex–M4处理器的 STM32F2xx 和 STM32F4xx开发套件,进一步扩展与ARM的合作。 购买此开发套件,客户将会随开发套件获赠 Keil MDK-Lite 开发工具和ULINK-ME 调试适配器,这得益于e络盟于今年年初在美洲宣布的与ARM达成的特许经营协议。此外,开发人员还将获得e络盟经ARM训练有素的工程师及e络盟ARM开发工具团队的大力支持,获取丰富的技术资料、视频支持资料以及e络盟Knode上的设计案例。新的开发套件也将成为e络盟基准路测团队的核
[单片机]
基于Cortex-M3的数字可调共振源的设计
共振现象是自然界普遍存在的物理现象,随着共振原理的揭示,共振在生产实践和科研领域中得到广泛应用。在大学物理实验中,共振实验也是一项重要实验组成部分,如力学机械弹簧共振实验、声学昆特管实验、光学相干波干涉实验、电磁场互感谐振实验等,其中都涉及到共振源本身的设计。在各种共振实验中,都需要一个高精度、输出信号频率连续可调且功率足够大的共振源。然而目前的实验平台多采用模拟元件构成和手动机械式调节,原理多是锁相环频率合成的方法,存在着产生的信号频率精度低、频率可调节范围小、调节反应慢等缺点。本文介绍了一种基于Cortex-M3(STM32F103C8)最新ARM内核的成本低、功耗低、分辨率高、频率变换快的直接数字合成(DDS)的共振源
[单片机]
基于<font color='red'>Cortex-M3</font>的数字可调共振源的设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved