历史上的今天
返回首页

历史上的今天

今天是:2025年03月08日(星期六)

2019年03月08日 | Cortex-M3存储器系统

2019-03-08 来源:eefocus

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


  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也永远使用小端模式。


推荐阅读

史海拾趣

Compex Corporation公司的发展小趣事

随着电子行业的快速发展,Compex Corporation意识到只有不断创新才能在市场中保持竞争力。因此,公司加大了在研发方面的投入,积极引进先进的技术和设备。XXXX年,公司成功研发出了一款具有革命性的新型电容器,其性能远超市场上的同类产品。这一技术突破不仅提升了公司的技术水平,也进一步巩固了其在市场中的地位。

E-tec Interconnect Ltd公司的发展小趣事

随着全球对环境保护意识的提高,E-tec也积极响应这一趋势。他们投入资金进行环保设施的建设,采用环保材料和工艺进行生产。同时,E-tec还注重资源的循环利用和节能减排,通过一系列措施降低了生产过程中的能耗和排放。这些努力不仅为公司带来了良好的社会声誉,也促进了公司的可持续发展。

安美通(APPCON)公司的发展小趣事

为了进一步扩大市场份额,安美通积极开展市场推广和品牌建设。公司参加了多个国内外知名展会和技术交流会议,与众多客户建立了良好的合作关系。同时,安美通还加大了对营销网络的投入,建立了完善的销售体系和客户服务体系,提高了客户满意度和忠诚度。

Elpida Memory公司的发展小趣事

在成立初期,Elpida Memory凭借先进的技术和强大的研发实力,迅速在全球DRAM市场占据了一席之地。然而,随着市场竞争的加剧和技术的快速发展,Elpida Memory也面临着巨大的挑战。尤其是在2008年全球金融危机爆发后,DRAM市场需求大幅下降,产品价格暴跌,Elpida Memory的经营状况也陷入了困境。

CUI Devices公司的发展小趣事

作为CUI Devices的重要组成部分,其电机品牌在近年来取得了显著的进步。公司的产品线涵盖了电位器、旋转编码器、步进电机、步进伺服电机和伺服电机等多个领域。通过不断的技术创新和市场拓展,CUI Devices的电机产品已经在全球范围内赢得了广泛的声誉和市场份额。

Electronic Transistors Corp公司的发展小趣事

在电子行业的早期,ETC公司以其独特的技术创新能力在晶体管市场上崭露头角。公司创始人带领研发团队,通过不断的实验和改进,成功研发出一种新型的MOSFET晶体管,具有更高的性能和更低的功耗。这一创新成果迅速在市场上引起轰动,ETC公司的知名度也随之提升。随着产品销量的不断增长,ETC逐渐在电子行业中确立了其领导地位。

问答坊 | AI 解惑

晒晒哥们自制的下载线

哥们自制的下载线,样子有些粗糙,但是经过验证了,很好用! [ 本帖最后由 西门 于 2009-5-11 22:14 编辑 ]…

查看全部问答>

智能循环水控制器设计!

基于 TMS320C2812DSP的智能循环水控制器的设计 江存胜 ,段建民 ,綦  慧 ,李大庆 ,倪少强  ( )北京工业大学 电控学院自动化系,北京 100022   摘要:  针对传统控制中自动化程度较低的问题 ,研制了智能工业循环水加药控制系统。该控制 ...…

查看全部问答>

让我们一起DIY个 FPGA开发板,上电路图,欢迎查错

自从让我们一起DIY个 FPGA开发板, 报名喽~~~ 之后 很久没给大家消息了,附件是电路图,protel99格式的, 之前只画过简单的,所以希望大家给予指教…… 一点相关资料:Altera Configuration Handbook & cyclone_device_handbook    & ...…

查看全部问答>

串口通信编程大全.pdf

详细介绍串口通信相关知识,想要的就下吧…

查看全部问答>

请问有没有这样的模拟软件?

        请问有没有这样的模拟软件?                 我刚学AVR单片机   用的是个学习板      感觉学习板功能很有限   我发现电路 ...…

查看全部问答>

想开发一款嵌入式导航软件,关于画图方面的疑问

现在我负责的模块是地图的绘制,就是说我封装一些函数,当别人需要绘制地图上的公路,铁路时,就调用我的函数就行。但是我现在一点头绪都没有,大牛们能不能给一些指导,谢谢。…

查看全部问答>

GPIO初始化配置成GPIO_Mode_Out_PP后怎么是低电平呢?

我用PB14以吸收电流的方式驱动一个LED灯,下面是初始化代码:GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;        //1GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  ...…

查看全部问答>

STM32F100C8/B价格是多少?

                                 STM32F100C8/B价格是多少? 量产了吗?…

查看全部问答>

关于时序分析中时钟的设置.

请教各位:当系统中有一个20MHz的输入时钟时,经过PLL倍频后,产生一100MHz和一20MHz的内部时钟时,Clock Setting那里如何设置,是不是应填最大的100MHz? PLL出来的100MHz和20MHz是不是相对于20MHz的输入时钟为衍生时钟?Individual Clocks是不 ...…

查看全部问答>

寻北京地区合作伙伴

本人要开发一些产品,想找有802.15.4和zigbee协议栈开发方面的软件高手合作,有意者请加QQ:2969574200详聊。…

查看全部问答>