ARM基本概念
-
一、RISC结构特性
-
二、ARM工作模式(USA、UFI、SM八大模式)
-
1、用户模式(USR:User)
-
2、系统模式(SYS:System)
-
3、中止模式(ABT:Abort)
-
4、未定义模式(UDF:Undefined)
-
5、快速中断模式(FIQ:Fast Interrupt Request)
-
6、一般中断模式(IRQ:Interrupt Request)
-
7、管理模式(SVC:Supervisor)
-
8、安全监管模式(MON:Monitor)
-
ARM系列有7个基本工作模式,Cortex-A系列有8种基本工作模式;
除用户模式以外,其余的所有6种模式称之为非用户模式,或特权模式(Privileged Modes);
其中除去用户模式和系统模式以外的5种又称为异常模式(Exception Modes),常用于处理中断或异常,以及需要访问受保护的系统资源等情况。
-
-
-
三、寄存器
-
R0-R10:存放用户数据
-
R11:fp:frame-pointer 用来记录一个栈空间的开始地址
-
R12:ip:The Intra-Procedure-Call scratch register 用来临时存储sp
-
R13 :sp:stack pointer 栈指针寄存器,每一种模式有自己的 R13,所以允许每一种异常都有自己的堆栈指针
-
R14:lr: link register 在发生跳转的时候,用来保存R15(PC)寄存器的值,每一种模式有自己的 R14
-
R15:pc:program counter
用来存放CPU将要执行的指令所在的内存地址
通常用作程序计数器
在程序开始执行前,将程序指令序列的起始地址,即程序的第一条指令所在的内存单元地址送入PC,CPU 按照 PC的指示从内存读取第一条指令。
当执行指令时,CPU自动地修改PC 的内容,即每执行一条指令PC增加一个量,使 PC总是指向正在读取的指令地址
-
CPSR:Current Program Status Register 当前程序状态寄存器,用来记录当前CPU状态
if(a > b), CPU怎么判断,看NZCV; a-b N置1 a < b a-b Z置1 a = b 2个32位数相加,结果为33位,产生进位 C置1 减的时候减不掉 借位来减 借位C置0 超过了一个类型范围,char -128~127 超过了 V置1
-
SPSR:Saved Program Status Register 备份程序状态寄存器,异常产生的时候,用来保存CPSR的值
特权模式下,私有的 SPSR (Saved Program StatusRegister) ,当一个异常发生时保存当前的CPSR 值。结合连接寄存器可使处理器返回先前的状态(异常产生会去到其他模式去执行,执行完成后再返回以前的状态,系统模式和用户模式没有,因为其他模式都是异常模式)
共享的寄存器要注意保存
-
-
-
四、Keil4软件
-
更换编译器
-
按钮
-
在Keil编程环境下,有三个按钮Translate,Build,Rebuild编译选项。
Translate是编译当前改动的源文件,在这个过程中检查语法错误。但并不生成可执行文件
Build是只编译工程中上次修改的文件及其它依赖于这些修改过的文件的模块,同时重新链接生成可执行文件。如果工程之前没编译链接过,它会直接调用Rebuild All。另外在技术文档中,Build实际上是指Increase Build,即增量编译。
Rebuild是不管工程的文件有没有编译过,会对工程中所有文件重新进行编译生成可执行文件,时间较长。
因此当平时对工程源文件里面main.c之类的文件进行修改时,选择用Build编译链接生成一次可执行文件就行了,不要再进行其他操作,不然仿真会失败。
-
-
代码
-