【三】ARM裸机开发知识点
ARM裸机开发知识点
ARM处理器、I/O接口、中断、寄存器与存储器四个部分
ARM处理器
ARM处理器分类
1.嵌入式微处理器
由通用计算机的CPU演变而来,位数在32位以上,具有较高的性能。
2.嵌入式微控制器
又称单片机,一般以某一种微处理器内核为核心,芯片内部集成ROM、RAM、总线、定时/计数器、I/O、A/D等各种必要功能和外设。
3.嵌入式DSP
硬件结构和指令进行过特殊设计,非常擅长高速实现各种数字信号处理运算(如数字滤波、频谱分析等)。
CPU的内部结构大致可以分为:
(1)控制单元(指令寄存器、指令译码器、操作控制器)。
(2)运算单元(算术逻辑单元)。
(3)存储单元(专用寄存器和通用寄存器)
(4)时钟。
工作状态和工作模式
三种工作状态和七种工作模式。
三种工作状态:
1.ARM状态:处理器执行32位的字对齐的ARM指令;
2.Thumb状态:处理器执行16位的、半字对齐的Thumb指令。(Thumb-2状态:最近推出的版本可执行32位指令)
3.调试状态:处理器停机调试。
在程序运行的过程中,可以在三种状态之间进行相应的转换。处理器工作状态的转变并不影响处理器的工作模式和相应寄存器中的内容。
CPU上电处于ARM状态。
7种工作模式:
1、用户模式(Usr):用于正常执行程序;
2、快速中断模式(FIQ):用于高速数据传输;
3、外部中断模式(IRQ):用于通常的中断处理;
4、管理模式(svc):操作系统使用的保护模式;
5、数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储以及存储保护;
6、系统模式(sys):运行具有特权的操作系统任务;
7、未定义指令中止模式(und):当未定义的指令执行时进入该模式,可用于支持硬件。
ARM的工作模式切换有两种方法:
被动切换:在arm运行的时候产生一些异常或者中断来自动进行模式切换
主动切换:通过软件改变,即软件设置寄存器来经行arm的模式切换,应为arm的工作模式都是可以通过相应寄存器的赋值来切换的。
tips:当处理器运行在用户模式下,某些被保护的系统资源是不能被访问的。
除用户模式外,其余6种工作模式都属于特权模式;
特权模式中除了系统模式以外的其余5种模式称为异常模式;
大多数程序运行于用户模式;
进入特权模式是为了处理中断、异常、或者访问被保护的系统资源。
指令集
主要分为:
1.数据处理指令 (完成CPU内部的计算)
2. Load/Store指令 (完成CPU与内存 IO外设之间的数据传输)
3. 跳转指令 (完成程序的跳转)
4. 程序状态寄存器处理指令 (完成 CPSR的管理 )
5. 协处理器指令 (完成CPU扩展功能的实现)
6. 异常产生指令 (用户程序异常触发)
RISC和CISC的区别
总线
ARM内部传输数据采用AMBA总线,共有四个版本:
(1)AMBA1:ASB、APB;
(2)AMBA2:AHB、APB;
(3)AMBA3:AHB、AXI、ATB、APB;
(4)AMBA4:AXI、ATB、ACE、APB。
I/O及串行通讯接口
GPIO
GPIO口一般有控制寄存器、数据寄存器、上拉寄存器
GPIO的8种模式:
(1)输入模式:浮空输入、带上拉输入、带下拉输入、模拟输入。
(2)输出模式:开漏输出、推挽输出、开漏复用输出、推挽复用输出。
总线接口UART、USB、SPI、IIC
异步串行和同步串行
RS-232与RS-485
(1)区别:
①抗干扰性:RS-485接口的抗干扰性比RS-232接口强,因为RS-485采用差分传输。
②传输距离:RS-485接口(1200m)的传输距离比RS-232接口(50m)远。
③通信能力:RS485接口在总线上允许连接多达128个收发器,而RS-232接口只允许一对一通信。
④传输速率:RS-485接口的最高传输速率为10Mbps,而RS-232接口为20Kbps。
⑤信号线:RS-485接口组成半双工网络需要两根信号线,组成全双工网络需要四根信号线;RS-232接口一般使用RXD、TXD、GND三根线组成全双工网络。
⑥电气电平值:RS-485接口规定A线电平比B线电平高200mV以上时为逻辑“1”,A线电平比B线电平低200mV以上时为逻辑“0”。RS-232接口规定-5V ~ -15V等于逻辑“1”,+5V ~ + 15V为逻辑“0”,噪声容限为2V。
(2)联系:
①都可通过DB-9连接器连接。
②均可采用屏蔽双绞线传输。
③都是串行通信。
④通信方式都是全双工(一般RS-485是半双工)。
中断
处理器在中断处理的过程中,一般分为以下几个步骤:中断请求 -> 中断响应 -> 保护现场 -> 中断服务 -> 恢复现场 -> 中断返回。
__interrupt关键字
保护现场和恢复现场
(1)保护现场
①首先将R0R7(快速中断)或R0R12(其他中断)PUSH进堆栈中保存,并将堆栈指针保存在对应中断模式的R13(SP)中。
②把即将执行的下一条指令(PC-4)的地址保存到对应中断模式的R14(LR)中;把CPSR的值保存到对应中断模式的SPSR中,以实现对处理器当前状态、中断屏蔽及各标志位的保护。
③设置CPSR的相应位:设置CPSR[4:0]的5位以进入相应的工作模式;CPSR[5] = 0切换到ARM状态;设置CPSR[7] = 1禁止IRQ中断;如果进入复位模式或FIQ模式,还要设置CPSR[6] = 1以禁止FIQ中断。
④给程序计数器PC强制赋值,转入中断向量地址,执行相应的中断服务程序。
(2)恢复现场
①将原来保存在堆栈中的R0R12或R0R7 POP出栈,赋值给相应的寄存器。
②将LR的值赋值给PC,将SPSR的值赋值给CPSR中,恢复被中断的程序状态。
中断向量和中断嵌套
(1)中断向量:中断服务子程序的入口地址。
(2)中断嵌套:中断系统正在执行一个中断服务程序时,有另一个优先级更高的中断源提出请求,这时会暂停当前正在执行的级别较低的中断源的服务程序,处理级别更高的中断源。处理完毕后再返回到被中断了的中断服务程序。
优缺点
(1)优点:实现CPU和I/O设备的并行,提高CPU的利用率和系统的性能。
(2)缺点:中断处理过程需要保护现场、恢复现场,整个过程需要一定的时间和空间开销。如果中断的频率太高,会降低系统的性能。
寄存器与存储器
寄存器
ARM的31个通用寄存器
存储器
NOR Flash与NAND Flash
SRAM、DRAM、SDRAM
磁盘跟硬盘
RAM和ROM
SRAM跟DRAM