目前主流的32位嵌入式微处理器系列主要有ARM系列、MIPS系列、PowerRPC系列等。
ARM处理器
ARM(Advanced RISC Machine)有三种含义,首先是一个公司的名称,是一类微处理器的统称,还是一种技术的名称,
ARM公司是一家专门 从事芯片IP设计与授权业务的英国公司,其产品有ARM内核以及外围接口。ARM内核是一种32位RISC微处理器,具有功耗低、性价比高和代码密度高等特点。
ARM微处理器体系结构目前被公认为是嵌入式应用领域领先的32位嵌入式 RISC微处理器结构。
最常用的ARM7TDMI,T代表支持Thumb指令集,D代表支持片上调试,M代表内嵌硬件乘法器,I代表支持片上断点和调试点。
ARM9与ARM7相比,最显著的区别是流水线从3级增加到5级,同时具有分开的指令和数据存储器。
ARM处理器具有RISC体系结构的典型特征,同时还有以下特点:
1、在每条数据处理指令中,都控制算术逻辑单元ALU和移位器, 以使ALU和移位器获得最大的利用率。
2、同时执行Load和Store多条指令,以增加数据吞吐量。
3、自动递增和自动寻址模式,以优化程序中的循环。
4、所有指令都可以条件执行,以提高执行吞吐量。
ARM的运行模式
ARM处理器有7种模式,如下表所示。大多数应用程序在User模式下执行,当出现 特定的异常时,进入相应的6种异常模式之一。
除User模式外,其它模式都被称为特权模式,可以存取系统中的任何资源。软件可以控制CPU模式的改变,外部中断也可以引起模式的
改变。
处理器模式 | 说明 |
用户模式(User) | 正常程序执行模式,用于应用程序 |
快速中断模式(FIQ) | 快速中断处理,用于高速数据传输或通道处理 |
外部中断模式(IRQ) | 用于通用的中断处理 |
管理模式(Supervisor) | 特权模式,操作系统使用的保护模式 |
数据访问终止模式(Abort) | 存储器保护异常处理 |
未定义的指令终止模式(Undefined) | 未定义指令异常处理 |
系统模式(System) | 运行特权操作系统任务(ARM v4版本以上) |
ARM寄存器结构
ARM微处理器共有37个32位寄存器,其中31个为通用寄存器,6个为状态寄存器,这些寄存器不能被 同时访问,取决于具体 的 运行模式。但在任何时候,通用寄存器R0~R14、程序计数器PC(R15)、一个或两个状态寄存器都是可访问的。
1、通用寄存器R0~R15.它们也可分为三类:
- 未分组的的寄存器R0~R7。这8个寄存器是真正意义上的通用寄存器,它们的功能是等同的。
- 分组的寄存器R8~R14.程序访问的物理寄存器取决于当前的处理器模式。
- R8~R12:每个寄存器对应两个不同的物理寄存器:一组是FIq模式;另一组是除FIQ模式以处的其它模式。
- R13~R14:每个寄存器对应6个不同的物理寄存器,一组用于用户模式和系统模式,其它5组分别用于5种异常模式。
- R13被用作堆栈指针(SP指针)。
- R14(也称为子程序链接寄存器LR)有两个用途:一是在调用 子程序时用于保存调用返回地址;二是在发生异常时用于保存异常返回地址。
- 程序计数器R15(或者PC)。用作程序计数器PC。
2、当前程序状态寄存器CPSR。CPSR在所有模式下都是可以读/写的。它主要包含条件标志、中断标志、当前处理器的模式、其它的一些状态和控制标志。CPSR的格式 如下:
31 | 30 | 29 | 28 | 27 8 DNM(RAZ) | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
N | Z | C | V | I | F | T | M4 | M3 | M2 | M1 | M0 |
- 条件标志包括N、Z、C、V
- N表示Negative,负标志
- Z表示Zero,零标志
- C表示Carry,进位标志
- V表示Overflow,溢出标志
- 中断标志包括 I、F
- I置1表示禁止IRQ中断的响应,置0表示允许CPU响应IRQ中断
- F置1表示禁止FIQ中断的响应,置0表示允许CPU响应FIQ中断
- ARM/Thumb控制标志T
- T置0表示执行32bits的ARM指令
- T置1表示执行16bits的Thumb指令
- 模式控制位M0~M4,见下表:
模式控制位M0~M4
M【4:0】
模式
可用寄存器
0b10000
User
PC,R14~R0,CPSR
0b10001
FIQ
PC,R14_fiq~R0_fiq,R7~R0,CPSR,SPSR_fiq
0b10010
IRQ
PC,R14_irq,R13_irq,R12~R0,CPSR,SPSR_irq
0b10011
Supervisor
PC,R14_svc,R13_svc,R12~R0,CPSR,SPSR_svc
0b10111
Abort
PC,R14_abt,R13_abt,R12~R0,CPSR,SPSR_abt
0b11011
Undefined
PC,R14_ und ,R13_und,R12~R0,CPSR,SPSR_und
0b11111
System
PC,R14~R0,CPSR
内存和I/O地址
ARM的寻址空间是线性地址空间,最大4GB。ARM支持大端和小端的内存数据方式,可以通过硬件的方式设置端模式。
I/O端口的编址方法有两种:I/O映射编址和存储器映射编址。
- I/O映射编址。I/O映射编址采用I/O端口与内存单元分开编址,互不影响。I/O单元与内存单元都有自己独立的地址空间,通过专门的输入指令(IN)和输出指令(OUT)来完成I/O操作。
- 优点是i/o单元不占用内存空间,易区分 i/o程序
- 缺点是只用i/o指令访问端口,功能有限且要采用专用 i/o周期和专用i/o控制线,使微处理器复杂化。X86体系的微处理器大多采用i/o映射编址方式。
i/o地址空间 系统地址空间
|
I/O设备2 |
|
I/O设备1 |
|
|
|
0xFFFF
0xFFFF
0x0000
0x0000
- 存储器映射编址。存储器映射编址采用i/o端口的地址与内存地址统一编址方式,i/o单元与内存单元共享同一地址空间;不区分存储器地址空间和i/o端口地址,把所有的i/o端口都当做是存储器的一个单元 对待。不设专门 的输入/输出指令,所有传送和访问传感器的指令都可用来对i/o端口操作。
- 优点:可采用丰富的内存操作指令访问i/o单元 ,无需单独的i/o地址译码电路,无需专用的i/o指令。
- 缺点:外设占用内存空间,不易区分i/o程序 ,ARM微处理器大多采用存储器映射的编址方式。