目录
一、ARM处理器概述
1.ARM的含义
ARM(Advanced RISC Machines)有三种含义
一个公司的名称、一类处理器的通称、一种技术
2.ARM公司
> 成立于1990年11月,前身为Acorn计算机公司
> 主要设计ARM系列RISC处理器内核
> 授权ARM内核给生产和销售半导体的合作伙伴,ARM公司并不生产芯片
> 提供基于ARM架构的开发设计技术软件工具、评估板、调试工具、应用软件
总线架构、外围设备单元等
3.主流的两种处理器
RISC处理器(精简指令集)
只保留常用的的简单指令,硬件结构简单,复杂操作一般通过简单指令的组合实现,一般指令长度固定,且多为单周期指令
RISC处理器在功耗、体积、价格等方面有很大优势,所以在嵌入式移动终端领域应用极为广泛
CISC处理器(复杂指令集)
不仅包含了常用指令,还包含了很多不常用的特殊指令,硬件结构复杂,指令条数较多,一般指令长度和周期都不固定
CISC处理器在性能上有很大优势,多用于PC及服务器等领域
4.SOC
SoC的定义多种多样,由于其内涵丰富、应用范围广,很难给出准确定义。一般说来, SoC称为系统级芯片,也有称片上系统,意指它是一个产品,是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容。同时它又是一种技术,用以实现从确定系统功能开始,到软/硬件划分,并完成设计的整个过程。
二、ARM指令集概述
1.指令与指令集
指令
能够指示处理器执行某种运算的命令称为指令(如加、减、乘 ...)
指令在内存中以机器码(二进制)的方式存在
每一条指令都对应一条汇编
程序是指令的有序集合
指令集
处理器能识别的指令的集合称为指令集
不同架构的处理器指令集不同
指令集是处理器对开发者提供的接口
2.ARM指令集
大多数ARM处理器都支持两种指令集:
ARM指令集
所有指令(机器码)都占用32bit存储空间
代码灵活度高、简化了解码复杂度
执行ARM指令集时PC值每次自增4
Thumb指令集
所有指令(机器码)都占用16bit存储空间
代码密度高、节省存储空间
执行Thumb指令集时PC值每次自增2
3.编译原理
三、ARM存储模式
1.ARM数据类型
ARM采用32位架构,基本数据类型有以下三种
Byte 8bits
Halfword 16bits
Word 32bits
C语言程序在ARM处理器上跑,编译器会自动将数据类型等位转换,float类型数据可以先处理整数部分,在处理小数部分
数据存储
Word型数据在内存的起始地址必须是4的整数倍
Halfword型数据在内存的起始地址必须是2的整数倍
注:即数据本身是多少位在内存存储时就应该多少位对齐
2.字节序
第一题验证电脑是大端字节序还是小端字节序
3.ARM指令存储
处理器处于ARM状态时
所有指令在内存的起始地址必须是4的整数倍
PC值由其[31:2]决定,[1:0]位未定义
处理器处于Thumb状态时
所有指令在内存的起始地址必须是2的整数倍
PC值由其[31:1]决定,[0]位未定义
注:即指令本身是多少位在内存存储时就应该多少位对齐PC必须是对应指令的整数位,如果不是将相应位置自动变成0
比如ARM指令PC=7时写入111实际写入011
四、ARM工作模式
1.八种工作模式
User(用户模式) 非特权模式,一般在执行上层的应用程序时ARM处于该模式
FIQ(快速中断模式) 当一个高优先级中断产生后ARM将进入这种模式
IRQ(外部中断模式) 当一个低优先级中断产生后ARM将进入这种模式
SVC(超级用户模式) 当复位或执行软中断指令后ARM将进入这种模式
Abort(终止模式) 当产生存取异常时ARM将进入这种模式
Undef(指令未定义模式) 当执行未定义的指令时ARM将进入这种模式
System(系统模式) 使用和User模式相同寄存器集的特权模式
Monitor(监控模式) 为了安全而扩展出的用于执行安全监控代码的模式
注意:这是cortex—A9的模式,不同ARM版本模式不同
2.模式间的区别
3.工作模式分类
按照权限
User为非特权模式(权限较低),其余模式均为特权模式(权限较高)
按照状态
FIQ、IRQ、SVC、Abort、Undef属于异常模式,即当处理器遇到异常后
会进入对应的模式