更多课程 选择中心

嵌入式培训
达内IT学院

400-111-8989

嵌入式ARM处理器体系结构详解

  • 发布:王不二
  • 来源:光电碰碰砰
  • 时间:2019-01-16 14:41

一、工作状态

1、ARM状态

此时ARM处理器工作于32位指令状态,所有指令均为32位宽度。

2、Thumb状态

此时ARM处理器工作于16位指令状态,所有指令均为16位宽度。代码密度大,占用的内存空间小。

对于特殊情况下必须执行ARM状态,如异常处理时,需将Thumb状态切换至ARM状态。

对于具有Thumb-2指令集的处理器,Thumb-2就是其Thumb状态。

3、调试状态

补充:

1)Cortex-M仅支持Thumb-2指令集,不支持32位ARM指令集。

2)除Cortex-M处理器之外,其他ARM处理器复位后开始执行代码时总是处于ARM状态

3)对于具有ARM状态与Thumb状态的处理器,状态的切换依赖于指令BX(BLX) Rn,寄存器Rn的最低位控制CPSR(当前状态控制寄存器)的T位,当Rn[0]=0,执行指令BXRn后,CPSR中的T位自动被清零,修改当前状态置于ARM状态。当Rn[0]=1,修改当前状态置于Thumb状态

4)ARM、Thumb、Thumb-2状态简单比较

二、寄存器组织

不同的cortex处理器型号有着不同的寄存器组织,若依据工作状态划分可划分为ARM状态下的寄存器组织、Thumb状态下的寄存器组织、Thumb-2状态下的寄存器组织。

下图为ARM状态下的寄存器组织,以cortex-M4为例

下图为Thumb-2状态下的寄存器组织,以cortex-M4为例

三、异常类型

Cortex-M4定义了以下异常类型:复位、NMI(不可屏蔽中断请求)、HardFault(异常响应错误)、MemManage(存储器管理)、BusFault、UsageFault、SVC、PendSV、SysTick(滴答计时)、IRQ(外部中断请求),如图为其详细信息

其中断向量表如图

四、存储器格式

在ARM中,定义32位为字数据,16位为半字数据,8位为字节数据,带FPU的处理器还支持浮点数据。作为32位处理器,cotex-M所支持的最大寻址空间为4GB(2的32次方B)

从图中可以看到,与Intel x86 I/O端口的独立编址不同,ARM采用存储器映像编址方式,对I/O端口等外设采用统一编址。

独立编址的优缺点:采用独立的I/O指令,系统运行速度快,且不占用存储器内存空间。但,由于采用独立的I/O指令,程序设计的灵活性差。

存储器映象编址的优缺点:I/O端口与存储器统一编址,存储器指令同样适用于I/O端口,可对I/O端口作众多复杂性操作,程序的灵活性好。但,由于I/O端口占用了内存空间,使得内存空间减少。

ARM有两种存储数据字的格式:大端模式(Big-Endian)、小端模式(Little-Endian)。

1)大端模式

在这种模式下,32位数据字以字节为最小单位划分,高字节存放在低地址中,低字节存放在高地址中。

2)小端模式

在这种模式下,32位数据字以字节为最小单位划分,低字节存放在低地址中,高字节存放在高地址中。

可通过AIRCR寄存器(ApplicationInterrupt and Reset Control Register)的第15位来设定。ENDIANNESS=0时,小端模式;ENDIANNESS=1时,大端模式。

最后,简单谈一下微处理器经常使用的两种技术:MMU(存储器管理单元)和MPU(存储器保护单元)。MMU部件能把系统中不同类型的存储器(SRAM、Flash、SDRAM、ROM等)进行统一管理,通过地址映射,使需要运行在连续地址空间的软件可运行在不连续的物理存储器中,需要较大存储空间的软件可运行在较小容量的物理存储器中,此即虚拟存储器技术。MMU完成了虚拟地址到物理地址的映射。

MPU是对存储器进行保护的可选部件,它提供了简单代替MMU的方法来管理存储器。在ARM中,MPU允许4GB地址空间定义为8个段,分别控制八个指令和八个数据内存块,段与段之间可以重叠,每个段的地址与长度均可编程,且段起始地址必须是其大小的整数倍、段的长度可以是4KB-4GB之间任意一个2的指数。(这与Intel x86系列的分段管理存储器的方法较为类似,只是相较于程序,仍需深刻理解)

本文内容转载自网络,本着传播与分享的原则,来源/作者信息已在文章顶部表明,版权归原作者所有,如有侵权请联系我们进行删除!

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:不可复制、完整的嵌入式安全解决方案如何从根本上保护设计
下一篇:如何解决嵌入式视觉系统所面临的挑战?

裸编程怎么做?裸编程具体做法

嵌入式编程中你必须知道的小知识

嵌入式C语言编程小知识总结

有哪些工具可以让嵌入式开发事半功倍?

  • 扫码领取资料

    回复关键字:视频资料

    免费领取 达内课程视频学习资料

  • 搜索抖音号

    搜索抖音号:1821685962

    免费领取达内课程视频学习资料

Copyright © 2021 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省