ARM Cortex-M7处理器体系结构简介

发布时间:2022-12-16  

本文以ST公司的STM32F7为实例来介绍M7体系结构,主要涉及M7存储器模型以及缓冲机制、编程模型、异常模型、处理器两大工作模式以及特权级,对于核心寄存器、内核外设SysTick、MPU、FPU以及系统控制块SCB仅做简单介绍。适用于对MCU+RTOS感兴趣的读者;

参考手册:
  • STM32F7 Series Cortex®-M7 processor programming manual

  • ARM Cortex-M7 Processor Technical Reference Manual

  • ARM Cortex-M7 Devices Generic User Guide

一、指令集类型简单介绍:

在计算机处理器发展史上形成了CISC(复杂指令集计算机)和RISC(精简指令集计算机)两大指令集阵营;CISC以x86体系结构为主,它拥有复杂且庞大的运算和控制指令,可以为桌面计算机和服务器提供强悍的计算能力;RISC主要以ARM体系结构为主,它克服了x86指令集中的二八原则,复杂指令分解为基本指令来处理;由于ARM指令集宽度一致,它可以采用超长流水线技术提升执行速度;由于ARM指令集规模较小,电路规模自然没有x86庞大,因此具备低功耗特点;ARM体系结构还有很多不同于x86的特点,例如存储加载型访问,采用大量寄存器;本文所述M7也是采用了RISC技术;

二、存储器模型以及缓存机制:

存储器地址映射示意图

在M7上,将代码区,数据区,外设区,FSMC区和内核区统一组织在4GB的线性地址空间中。CPU只能通过LDR,STR等存储加载指令访问存储器,可以采用字节访问,半字访问和字访问三种访问类型;采用小端模式,即低字节存储在低地址;

指令缓存,数据缓存

CPU和存储器之间有4KB指令缓存和4KB数据缓存,缓存可以加速CPU对存储区的访问;在某些场合开发者需要注意缓存和存储区一致性问题,例如如果开发者使能了缓存,然后将某一个代码区扇区擦除(未存储代码),则此时已经擦除扇区数据和已经缓存数据便不一致,导致出错;

三、编程模型:

在CPU执行程序过程中,可以分为Thread模式和Handler模式;在Thread模式下执行应用代码,属于处理器正常工作过程;在Handler模式下执行异常代码,例如不可屏蔽异常服务程序,硬件错误异常服务程序等;

特权级:程序有特权级和非特权级之分;特权级程序运行在特权级别上,可以访问系统所有资源,非特权级程序运行在非特权级别上,它的访问有限制,例如不能访问系统内核寄存器;Handler模式运行在特权级别上,Thread模式可以运行在特权或者非特权级上;

堆栈指针:它有主堆栈指针MSP和线程堆栈指针PSP之分,Handler模式下只能使用MSP,Thread模式可以使用MSP或者PSP;

模式,特权级别和堆栈指针

核心寄存器:

M7包含R0~R12,SP(MSP,PSP),LR,PC,APSR,IPSR,EPSR,PRIMASK,FAULTMASK,BASEPRI和CONTROL;

R0~R12作为通用寄存器用于数据处理;

SP(R13)用于存放栈地址,它有MSP和PSP之分,具体使用取决于CONTROL.bit1;在Handler模式下强制CONTROL.bit1为0,即使用MSP;

LR(R14)用于存放子程序返回,异常返回数据,例如模式,堆栈,FPU使用等;

PC(R15)用于存放当前指令地址;

PSR程序状态寄存器包含APSR应用程序状态寄存器,IPSR中断程序状态寄存器,EPSR异常程序状态寄存器;APSR记录程序计算状态条件,IPSR用来记录当前中断服务程序的异常类型编号,EPSR用于THUMB状态位,IT位,ICT位等;

PRIMASK:用于屏蔽可配置的优先级;

FAULTMASK:用于屏蔽除了NMI以外的所有可配置的优先级

BASEPRI:屏蔽所有数值上不小于它的优先级;

CONTROL:用于设置特权级,选择堆栈指针以及FPU上下文切换;

四、异常模型:

M7异常向量表,包含异常编号,中断请求编号,存储器分布

M7处理器一共有255个异常,异常编号为1~255;其中1~15属于内核异常,大于15属于外设中断;在程序开发中,使用-14~-1表示内核中断(异常)请求编号,大于-1表示外设中断请求编号;

异常分为非活跃且非挂起状态,挂起状态,活跃状态,活跃且挂起状态;

M7每个异常有一个8位寄存器表示其优先级,即支持0~255优先级,但是在STM32F7内部只是实现其高4位,即支持0~15优先级;通过配置优先级分组后,高优先级可以抢占低优先级异常;

异常处理是保存现场和恢复现

保存现场:考虑一种简单的情况,异常帧中没有FPU保存时,这时硬件会将xPSR, PC, LR, R12, R3, R2, R1, R0全部保存在SP指向的栈区,在RTOS中R4~R11由程序员入栈;

执行中断服务程序:用于处理外部事件;

恢复现场:采用以下其中一条指令进行返回:

  1. An LDM or POP instruction that loads the PC.

  2. An LDR instruction with PC as the destination.

  3. A BX instruction using any register.

异常返回LR定义

例如采用BX LR返回,执行指令后处理器根据LR最低5bit获取返回模式,堆栈指针使用以及FPU使用等;然后硬件将R0, R1, R2, R3, R12, LR, PC, xPSR出栈,在RTOS中R4~R11由程序员出栈,并且开始执行被中断程序的下一条指令;为了降低中断延时,M7还采用了咬尾中断,晚到中断等机制;

五、SCB:系统控制块

系统控制块

系统控制块主要实现系统状态和系统控制功能,例如1~15号异常控制,优先级分组配置,重定位中断表位置等;

六、NVIC:嵌套向量中断控制器

主要用来管理IRQ0~IRQ239外设中断请求,并且CMSIS提供了一套函数用来访问NVIC寄存器;

七、SysTick:系统滴答定时器

SysTick操作函数接口

SysTick旨意提供MCU软件重用,用户在更换以M7为内核的其他MCU尤其在支持RTOS时,在移植内核时,可以不加修改地直接使用。

八、MPU:存储器保护单元

存储器保护单元寄存器

MPU将存储器空间划分为若干分区,定义每个分区的位置、大小、访问权限和属性等。



九、FPU:浮点数处理单元

浮点处理单元寄存器

FPU支持单精度和双精度加、减、乘、除、乘加以及平方根运算;支持定点数和浮点数之间的格式转换以及浮点常量指令;支持IEEE754标准;

十、总线访问控制

指令数据紧密耦合存储器控制

AHB主总线控制

AHB从总线控制

缓存控制

总线错误状态

十一、总结

内核寄存器映射和访问函数由CMSIS统一提供,提高了软件在以M7为内核的微控制器上的复用。使开发者在不同芯片厂商之间快速开发切换提供了可能。以上是对M7体系结构的简介,详介请参考手册;


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    通过JTAG来仿真调试ARM体系结构芯片,可以避免使用昂贵的在线仿真器。另外,在处理器核中还可以嵌入跟踪宏单元ETM,用于监控内部总线,实时跟踪指令和数据的执行; ● 具有片上总线AMBA......
    集抽出来的36条指令格式,可以重新编成16位的操作码。这能带来很高的代码密度。 支持Thumb的ARM体系结构的处理器状态可以方便的切换、运行到Thumb状态,在该状态下指令集是16位的Thumb指令......
    -A7 MPCore™ 处理器ARM 迄今为止开发的最有效的应用处理器,它显著扩展了 ARM 在未来入门级智能手机、平板电脑以及其他高级移动设备方面的低功耗领先地位。Cortex-A7 处理器的体系结构......
    ,使用ARM920T CPU核的强大指令集。   ◆ 带MMU的先进的体系结构支持WinCE、EPOC32、Linux。   ◆ 指令缓存(Cache)、数据缓存、写缓存和物理地址TAG RAM,减小......
    ARM Cortex-M7处理器体系结构简介;本文以ST公司的STM32F7为实例来介绍M7体系结构,主要涉及M7存储器模型以及缓冲机制、编程模型、异常模型、处理器两大工作模式以及特权级,对于......
    集。目前的ARMv7架构的主要特性都将在ARMv8架构中得以保留或进一步拓展,如:TrustZone技术、虚拟化技术及NEON advanced SIMD技术等。 ARM处理器核心以及体系结构......
    帮助设计人员避免了关键通路和布线延时,其设计能够迅速达到时序收敛。内核逻辑性能提高2倍后,不需要很宽的数据通路,也不需要由于时钟偏移导致的特殊设计结构,极大的提高了器件利用率,降低了功耗。HyperFlex体系结构支持......
    内容   移植uCGUI到ARM处理器S3C44BOX上,并编写Hello World程序,在Micetek 44B0实验平台的LCD上显示“Hello World!”字符串,在LCD显示......
    ARM处理器S3C44BOX上,并编写Hello World程序,在Micetek 44B0实验平台的LCD上显示“Hello World!”字符串,在LCD显示平面坐标(20,20)处,显示......
    缩指令集和EmbededICE软件调试方式,适用于更大规模的SoC设计中。ARM7TDMI基于ARM体系结构V4版本,是目前低端的ARM核。 ARM9微处理器系列 ARM9采用哈佛体系结构,指令......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>