第2章 嵌入式处理器

本文详细介绍了ARM处理器的工作状态和模式,包括ARM、Thumb和Thumb-2状态。重点讲解了Cortex-M系列处理器的异常中断处理,包括中断向量、堆栈管理和中断响应过程。同时,概述了存储格式、数据类型以及AMBA总线在嵌入式系统中的作用。以STM32F10x芯片为例,展示了其内部组成。

1. ARM工作状态和工作模式

工作状态

  1. ARM状态:ARM处理器工作于32位指令的状态,即32位状态。所有指令均为32位。
  2. Thumb状态:ARM处理器执行16位指令的状态,即16位状态。在Thumb模式下,较短的操作码有更少的功能性,而较短的操作码提供整体更佳的编码密度。
  3. Thumb-2状态:兼有16位及32位指令,实现了更高的性能、更有效的功耗及更少地占用内存。
  4. 调试状态:处理器停机调试时进入调试状态。Cortex-M3只有Thumb-2状态和调试状态。
  5. ARM与Thumb间的切换:通过BX指令,将操作数寄存器的最低位设置为1[0]即可实现 ARM状态和Thumb状态的切换。

工作模式

  1. 经典ARM处理器的工作模式:经典ARM处理器支持7种工作模式,取决于当前程序状态寄存器 CPSR 的低5位[M4:M0]的值。ARM处理器工作模式可以相互转换,但是是有条件的。当处理器工作于用户模式时,除非发生异常,否则将不能改变工作模式。当发生异常时,处理器自动改变CPSR[M4:M0]的值,进入相应的工作模式,例如当发生IRQ外部中断时CPSR[M4:M0]的值置为10010,而自动进入外部中断模式;当处理器处于特权模式时,用指令向CPSR[M4:M0]写入特定的值,以进入相应的工作模式。
    在这里插入图片描述

  2. ARM Cortex-M系列嵌入式处理器的编程模式及特权级:线程模式(Thread mode)是执行普通代码的工作模式,而处理模式(Handler mode)是处理异常中断的工作模式。复位时系统自动进入线程模式,异常处理结束返回后也进入线程模式,特权和用户代码能在线程模式下运行。当出现异常中断时,处理器自动进入处理模式,在处理模式下,所有代码都是特权访问的。
    在这里插入图片描述

2、ARM Cortex-M寄存器结构

ARM状态下的寄存器组织

在这里插入图片描述
所有通用寄存器均为32位结构。

Thumb/Thumb-2状态下的寄存器组织

Thumb状态下的寄存器组是ARM状态下寄存器组的子集。高位寄存器R8~R12在Thumb状态下不可见,即不能直接作为通用寄存器使用,而在Thumb-2下可以使用,即R8~R12只有在32位指令状态下才可当通用寄存器使用
R13为堆栈指针,有两个堆栈指针,一个是主堆栈指针MSP,另一个是进程堆栈指针PSP,R14为链接寄存器LR,R15为程序计数器PC。
在这里插入图片描述

3、ARM Cortex异常中断及中断向量、堆栈

ppt22

经典ARM处理器的异常中断

  1. 经典ARM的异常类型
  2. 在经典ARM体系结构中,异常中断用来处理软中断、未定义指令陷井、系统复位及外部中断。共有7种不同类型的异常中断及其对应的向量地址。优先级由高到低依次是:
    (1)复位异常RESET(最高优先级)
    (2)数据访问中止异常DABT
    (3)快速中断异常FIQ
    (4)外部中断异常IRQ
    (5)指令预取中止异常FABT
    (6)软件中断异常SWI和未定义的指令异常(最低优先级)

在这里插入图片描述

  1. 经典ARM异常的中断响应过程:
    (1)保护状态寄存器。CPSR=>SPSR,对处理器当前状态、中断屏蔽及各标志位的保护。
    (2)设置状态寄存器。设置CPSR中的M4~M0的5个位使进入相应工作模式,设置I=1禁止IRQ中断。
    (3)保存断点地址。将断点地址保存到新的异常工作模式的R14中。
    (4)转中断入口地址。给程序计数器PC强制赋值,使转入由中断向量地址,以便执行相应的处理程序。
  2. 经典ARM多异常程序中返回:
    (1)恢复原来被保护的用户寄存器。
    (2)恢复程序状态寄存器。SPSR=〉CPSR,以恢复被中断的程序工作状态。
    (3)恢复断点地址。将PC值恢复成断点地址,以执行用户原来运行着的程序。
    (4)开中断。清除CPSR中的中断禁止标志I和F,开放外部中断IRQ和快速中断FIQ。
    这些操作都是中断返回时自动完成的,无需用户使用堆栈操作指令。

ARM Cortex-M微控制器的异常中断

ARM Cortex-M微控制器异常状态:未激活Inactive状态、挂起Pending状态、激活Active状态、激活且挂起Active and pending状态。
ARM Cortex-M微控制器异常类型:系统复位Reset、不可屏蔽中断NMI、硬件故障Hard Fault、存储器管理故障MemManage、总线故障(预取中止或数据中止)、使用故障usage、SVC指令产生的异常SVCall、可挂起的系统服务异常PendSV、系统滴答定时器中断SysTick以及外部中断Interrupt(IRQ0-IRQ239)。
在这里插入图片描述
中断号,中断类型号
ARM Cortex-M系列处理器最多可处理256个异常中断,系统内部异常编号0~15外部中断编号16~255,即中断类型号ID从0开始到255。每个异常中断向量占4个字节(直接为物理地址),异常中断向量表占据内容最低端1KB的地址范围0x00000000~0x000003FF。
Cortx-M0/M1外部中断仅提供了32(IRQ0~IRQ31)个,
Cortx-M3/M4外部中断提供了240(IRQ0~IRQ239)个。
以外部中断IRQ0为0开始编号,称为中断号,则内部异常就为负数编号,中断类型ID与中断号IRQ的关系为:IRQ=ID-16或ID=IRQ+16,
无论已经ID还是已经IRQ均可以中断服务程序入口地址所存地址。异常中断类型号ID与中断向量存放首地址Iadd0关系为:Iadd0=ID×4
外部中断IRQi中断向量地址的求法为:Iadd0=(16+i) ×4
复位异常优先级最高。任何情况下,只要进入复位状态,系统无条件地将PC指向0x00000004处,去执行系统第一条指令,通常此处放一条无条件的转移指令,转移到系统初始化程序处。
在这里插入图片描述

ARM Cortex-M系列微控制器的堆栈

ARM Cortex-M处理器的堆栈:采用递减地址方式,先进后出(FILO)。压入堆栈时地址减小(地址减4),弹出堆栈时地址增加(地址加4),最先压入的要最后弹出。支持两个堆栈区域,一是主堆栈,二是进程堆栈,采用两种不同的堆栈指针MSP和PSP来指示。
在这里插入图片描述ARM Cortex-M异常的中断响应过程:
(1)入栈保护。中断发生时,系统自动依次将xPSR、PC、LR、R12、R3、R2、R1和R0压入堆栈
(2)取中断入口地址。根据类型号获取中断服务程序入口地址。
(3)更新寄存器。
SP更新到入栈保护后的值(-0x14)
中断服务寄存器IPSR的值为新的中断类型编号
PC指向中断服务程序入口地址
LR更新为特殊的返回值EXC_RETURN
从异常处理程序中返回:
(1)恢复保。返回时,系统自动依次将R0、R1、R2、R3、R12、LR、PC和xPSR从堆栈弹出
(2)EXC_RETURN返回值给LR。在中断服务程序结束时返回给LR。EXC_RETURN的值可以为:

如果EXC_RETURN=0xFFFFFFF1将返回处理模式,并使用主堆栈MSP;
如果EXC_RETURN=0xFFFFFFF9将返回线程模式,并使用主堆栈MSP;
如果EXC_RETURN=0xFFFFFFFD将返回处理模式,并使用线程堆栈PSP

4、ARM存储格式及数据类型

ARM存储格式

ARM体系结构将存储器看作是从0X00000000地址开始的以字节为单位线性组合。每个字数据32位占4个字节,即4个单元的地址空间,依次排列。作为32位的处理器,ARM体系结构所支持的最大寻址空间为4GB 2 32 {2^{32}} 232字节),可以用大端模式和小端模式两种方法存储字数据。

在这里插入图片描述
在这里插入图片描述

ARM存储器数据类型

ARM处理器支持字节(8位)、半字(16位)、字(32位)三种数据类型。其中,字需要4字节对齐(地址的低两位为0)、半字需要2字节对齐(地址的最低位为0)。每一种又支持有符号数和无符号数,因此共有6种数据类型。
ARM微处理器的指令长度可以是32位(在ARM状态下),也可以为16位(在Thumb状态下)。如果是ARM指令则必须固定长度,使用32位指令,且必须以字为边界对齐;如果是使用Thumb指令,指令长度为16位,则必须以2字节为对齐。
在这里插入图片描述
必须指出的是,除了数据传送指令支持较短的字节和半字数据类型外,在ARM内部所有操作都是面向32位操作数的。从存储器调用一个字节或半字时,根据指令对数据的操作类型,将其无符号或有符号的符号位自动扩展成32位,以作为32位数据在内部进行处理。
另外,ARM还支持其它类型的数据,如浮点数的数据类型等。

5、AMBA总线及基于该总线的嵌入式处理器组成及特点

AMBA总线

AMBA(Advanced Microcontroller Bus Architecture,先进的微控制器总线体系结构)是ARM公司公布的总线协议,是用于连接和管理片上系统 (SoC) 中功能模块的开放标准和片上互连规范。AMBA标准规定了ARM处理器内核与处理器内部高带宽RAM、DMA以及高带宽外部存储器等快速组件的接口标准(通常称为系统总线),也规定了内核与ARM处理器内部外围端口及慢速设备接口组件的接口标准(通常称为外围总线)。

在这里插入图片描述
发展及版本:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

基于AMBA总线的ARM处理器芯片

在这里插入图片描述
在这里插入图片描述

6、典型芯片STM32F10x的内部组成

在这里插入图片描述
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值