ARM简介
ARM公司前身是Acorn的一个部门,专门研发Acorn公司的处理器。
RISC:精简指令集处理器
经典产品:ARM7(开始火起来)、ARM9、ARM11
从2004年起ARM命名不用数字,开始用Cortex-R\A\M系列命名,针对市场上不同需求的CPU
A系列:application,用于大型系统
R系列:real time(实时),针对军工类要求实时性较高的需求
M系列:MCU,低功耗低价格高效率,用来取代单片机
RISC和CISC
RISC精简指令集处理器
:
随着运算需求日益增加,CPU内部的相应设计的运算电路也越来越多。精简指令集处理器就是保留那些最常用的运算电路而做成的CPU。
缺点
:复杂的运算指令通过简单运算指令的组合来实现,因此要耗费更多的时间。
优点
:RISC处理器在功耗、体积、价格方面有很大的优势
其它特点
:指令长度(一个指令所占空间大小)固定;多为单周期指令(一个周期就能执行完)
应用场景
:广泛运用于嵌入式移动端领域。
CISC复杂指令集处理器
:
不仅包含常用指令电路,还包括特殊指令电路。
优点
:性能好
缺点
:价格贵,体积大,功耗大
其它特点
:指令长度和周期都不固定
应用场景
:PC、服务器等领域
SOC片上系统
ARM指令集
什么是指令集
指令
:CPU认识并能执行的指令,就是CPU有什么运算的电路才能做什么样的运算。
ARM指令集
32位->4字节,16位->2字节
开发主要用ARM指令集
编译原理
机器码
:CPU能识别的1、0二进制码,转化为高低电平。但是难理解、由于不同处理器设计的运算电路不同,因此机器码不可移植。
汇编语言
:是机器码的符号化。与机器码一一对应,因此也不可移植。
C语言
:高级语言。既解决了机器码难理解的缺点,也解决了其不可移植的缺点。可以用不同的编译器将C语言转化成汇编语言,再转化成机器语言给不同的处理器运算。
C语言的编译原理
:
编译
:将C源码转化成汇编语言
汇编
:将汇编语言转化成机器码
链接
:和系统组件(比如标准库、动态链接库等)结合起来变成可执行文件
ARM存储模型(ARM是如何存储指令的)
ARM数据类型
什么是32位架构
:就是一次性能算的最大的数据是32位。
字节序
字节序
:如果一个数据占多个字节,其在内存的分布情况。因此不用考虑像char这种只占1个字节的数据。
如下图
大端对齐
:
0x12345678,1位最高位,8位最低位。
低地址N存放0x12高位,高地址存放低位,为大端对齐
小端对齐
:
低地址存放低位,高地址存放高位,为小端对齐
ARM指令存储
处理器处于ARM状态时
:
PC寄存器中的值(用来向内存发送地址的)最后两位一定为0,因为指令在内存的起始地址必须是4的整数倍,而4的整数倍的二进制数最后两位一定是0。
因此,PC值由2~31位决定,0 ~1位会被强制置为0。
处理器处于Thumb状态时
:
因为指令在内存的起始地址必须是2的整数倍,而2的整数倍的二进制数最后一位一定是0.
因此,PC值由1~31位决定,0位会被强制置为0.
ARM工作模式
ARM Cortex A9
User
:用户模式。就像Linux操作系统分为用户态和内核态,这里的用户模式是处理器在执行上层应用程序时处于的一种状态。
FIQ
:快速中断模式。中断就是在执行一个程序时被打断,去执行另一个程序,执行完然后再回来继续执行刚刚的程序。有件高优先级事件产生的中断时处于该模式。
IRQ
:普通(Web)中断模式。有一个低优先级事件产生的中断时处于该模式。
SVC
:超级用户模式。复位:机器上电到能运行APP这段时间所处的状态。软中断:通过代码让CPU产生的中断。硬中断:硬件发指令让CPU产生的中断。
Abort
:终止模式。
Undef
:指令未定义模式。
System
:系统模式。
Monitor
:监控模式。
不同模式拥有不同权限
:
就像手机有飞行模式和普通模式一样,ARM在不同模式下对CPU操作的权限也不同,其中user模式的权限最低,对CPU的操作最有限。
不同模式执行不同代码
:
比如FIQ、IRQ模式下,ARM要执行硬件发来的指令。其它模式也有自己要执行的代码。
不同模式完成不同的功能