Cortex-M3/M4架构——存储器系统

目录

概要

存储器映射

栈存储

存储器保护单元MPU

概要

Cortex-M3/M4有以下的存储器特性:

        1.4GB的线性地址空间,32位寻址;

        2.架构定义的存储器映射,预定义的存储器和外设对应多个存储器区域,优化了处理器的性能;例如处理器有多个总线接口,允许软件对CODE或SRAM或外设区域进行操作;

        3.支持大小端的存储器系统,一般其中选一种;

        4.可位段访问;

        5.写缓冲,若对于可缓冲存储器的写传输要花费较长时间,Cortex-M可能会将本次传输缓存起来,处理器继续执行下一条指令,可以提高执行速度;

        6.存储器保护单元。MPU定义了各存储器的访问权限,且是可编程的。

        7.非对齐传输支持。

存储器映射

Cortex-M处理器的4GB地址被划分为多个存储器区域,主要包括: 

  • 程序代码访问(如CODE区域)
  • 数据访问(SRAM)
  • 外设(外设区域)
  • 处理器的内部控制和调试部件(如私有外设总线)

不同的微控制器具有不同的存储器大小和外设地址,一般可以在供应商的数据手册中有所描述;

所有Cortex-M的处理器存储器映射都是一样的,这样可以提高不同的Cortex-M设备间的软件可移植性和代码可重用性。

栈存储

Cortex-M处理器在运行时需要栈存储和栈指针(R13),系统主存储器用于栈空间操作,用PUSH和POP指令存取数据,当前的栈指针会自动调整;

栈可以用于:

  • 正在执行的函数需要使用寄存器进行数据处理时,临时存储数据的初始值;
  • 往函数或子程序中的信息传递;
  • 存储局部变量;
  • 在中断等异常产生时保存处理器状态和寄存器数值。

Cortex-M处理器使用的栈模型被称作“满递减”,在处理器启动时,SP指针指向栈存储空间的最后位置,对于PUSH操作,首先会减小SP的值,然后将数据存储在SP指向的位置。

值得注意的是:每次PUSH操作都会对应一个POP操作,且它们操作的地址应该一致

PUSH和POP都可以传输多个数据,每个由栈PUSH和POP生成的存储器传输都会至少访问一个字(4字节)的数据(因为寄存器组的寄存器都是32位的),且地址总会对齐到4字节点边界上。

例:在函数返回的情况下,首先LR(R14)的数值压到栈存储中,在函数结束时将其恢复到PC(R15)中。

栈指针包括:1.主栈指针MSP,默认指针;2.进程栈指针,只能用于线程模式;

通过CONTROL设置指针类型,对于不具有OS的简单应用都可以只用MSP。

在处理器进入中断服务程序之前会首先将多个寄存器压入栈中,在ISR结束时会恢复到寄存器组中;

若使用了嵌入式OS,通常应用任务和内核栈会分离开,这时PSP就会用到,在异常的入口和出口会发生SP切换。

存储器保护单元MPU

MPU是一种可编程的定义不同存储器区域访问权限和存储器属性的部件。支持多达8个可编程存储区域,另外还支持一种背景区域特性。

具体的功能会在后续介绍。

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Cortex-M3Cortex-M4是ARM架构的微控制器。它们广泛应用于嵌入式系统和物联网设备中,具有高性能、低功耗和强大的性能优化能力。 Cortex-M3Cortex-M4使用的指令集是ARMv7-M架构,其中包含了大量的指令,用于实现各种功能和操作。下面是这两种微控制器常用的指令集: 1. 数据处理指令:这些指令用于对数据进行处理和操作,比如加法、减法、移位等。Cortex-M3Cortex-M4支持32位整数和浮点数的处理指令,可以高效地执行各种数学运算。 2. 控制指令:这些指令用于控制程序的流程,比如条件判断、跳转和函数调用等。Cortex-M3Cortex-M4支持分支指令、循环指令和中断指令,可以实现灵活的控制流程和异常处理能力。 3. 存储器访问指令:这些指令用于对存储器进行读写操作,包括读取数据、存储数据和移动数据等。Cortex-M3Cortex-M4支持多种不同的存储器访问指令,包括字节访问、半字访问和字访问等,可以高效地操作各种类型的存储器。 4. 特殊功能寄存器指令:这些指令用于对特殊功能寄存器进行读写操作,包括配置系统控制寄存器、中断寄存器和电源管理寄存器等。Cortex-M3Cortex-M4提供了一套完整的特殊功能寄存器指令集,方便对系统进行配置和管理。 总结来说,Cortex-M3Cortex-M4常用的指令集主要包括数据处理指令、控制指令、存储器访问指令和特殊功能寄存器指令。这些指令可以满足微控制器在嵌入式系统和物联网设备中的各种需求,实现高效、低功耗的数据处理和控制功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值