一、ARM处理器概述
(一)ARM的概念
1、公司:设计ARM处理器的公司,Accorn RISC Machines
2、处理器的通称:ARM处理器分不同版本
3、技术:从ARM7开始广泛应用,ARM9,ARM11。
片上系统SOC:在一个芯片中集成了一个系统的所有硬件。
(二)ARM的分类
Cortex下面A,R,M三个系列
A系列大型操作系统,手机,平板,安卓系统,Linux系统,A8,A9,A53
R系列实时性比较高的,军工
M系列取代传统单片机,低功耗,低价格,高执行效率
(三)RISC和CISC
处理器分为精简指令集处理器和复杂指令集处理器,ARM是应用最广泛的精简指令集处理器。
常见的复杂指令集处理器有inter,x86,AMD等。
二者的本质区别:
随着CPU性能的不断提升,处理器中的运算越来越多,CPU性能越来越强,但是体积越来越大,价格越来越贵。
精简指令通过编译器的优化,复杂指令可以实现简单指令的组合实现,3×3->3+3+3,但是精简指令集的处理时间变长,复杂指令集的性能更高。复杂指令集包括很多不常用的特殊指令,结构复杂,硬件多。
充电电脑用的是复杂指令集,手机用的是精简指令集。
精简指令集的指令长度相同,周期固定。复杂指令集指令长度不同。周期不固定。
二、ARM指令集概述
(一)指令集的概念
1、指令
学习处理器最重要的学习指令集。
指令以二进制代码的形式存在,加法指令通过译码编程01机器码,CPU直接认识的是机器码。
一句C代码可能对应多条指令,但是一条指令只对应一条汇编语言。
程序是指令的有序集合。
2、指令集
处理器能识别的指令的集合称为指令集。指令集是处理器对开发者提供的接口。
3、ARM支持的指令集
ARM指令集占用空间多,代码灵活度高。所有指令都占32bit,PC自增4。
Thumb指令集代码密度高,节省空间,所有指令都占16bit,PC自增2。Thumb指令集并不是独立的指令集,往往不能完成一个项目。使用少。
(二)编译原理
1、机器码01的弊端:不好读写,不可移植。
2、汇编:用一个字符代替一个机器码。ADD-0101,因为和机器码一一对应,一个处理器能够处理乘除,但另外一个不一定,区分架构(处理器)所以不能移植。
3、C语言:可移植,依赖于编译器,所以不区分处理器架构。
x86编译:gcc -S
ARM编译:arm-gcc -S
同样的代码在不同CPU中运行,不需要改变代码,只需要下载不同的编译器。
4、编译的四个步骤
预处理:对注释进行删除,对宏进行展开,对头文件展开
编译:C语言-汇编语言
汇编:汇编语言-机器码
链接:机器码和库里的机器码合成可执行程序,放到CPU中执行。
三、ARM存储模式
(一)ARM的数据类型
1、知识点
CPU除了要处理数据,还要进行运算,例如处理变量
C语言代码通过编译才能被执行,C语言中的数据类型,放到ARM中就不能被执行了。
32位架构:ARM单次数据处理的能力。32位架构一次能够处理32位的数据。
两个32位数加,一次算完。两个64位数,需要两次先高位再低位。
2、ARM的数据类型
Byte:8bits -------char
Halfword:16bits --------short
Word:32bits --------int
ARM不能直接运算浮点型数据,但可以通过协处理器。在ARM的外围加一个处理器,处理浮点型数据。
ARM规定Word型数据在内存的起始地址必须是4的整数倍。Halfword型的起始位置必须是2的倍数。
3、字节序![](https://i-blog.csdnimg.cn/blog_migrate/c752b7ea6d90df87f76dc29202b13fed.png)
如果一个数据只有一个字节,不需要考虑字节序。如果涉及多个字节,这一个数据内才有大端对其或者小端对其的说法。
大端对齐,低位存高位,小端相反,ARM使用小端对齐。
0x12345678,其中0x12是高位,0x78是低位。
测试代码:
#include<stdio.h>
int main(){
unsigned int a =0x12345678;
char *pa = &a;
printf("pa = %x\n",*pa);
return 0;
}
由结果可知,乌班图是小端对齐,嵌入式开发一般是小端对齐,路由器是大端对齐。
(二)ARM指令存储
PC = 3没有意义,必须是4的整数倍,因此[1:0]一定是0
四、ARM工作模式
(一) Cortex-A9具有8个模式
满足不同场合的需求
1、User
和Linux用户态内核态不同,ARM的用户态是在运行应用程序时,处于User
2、FIQ
高优先级中断
3、IRQ
低优先级中断
4、SVC
复位:开机到系统执行程序前
软中断:通过代码实现中断
5、Abort
存取异常,CPU向内存中读取数据
6、Undef
机器码指令未定义
7、System
和User类似,比User权限高
8、Monitor
执行安全检测代码
模式2-6属于异常模式
(二)工作模式的分类
User模式权限最低,保护操作系统,出错后损失小
不同模式拥有不同权限
不同模式执行不同代码
不同模式完成不同功能
五、注意事项
1、只有CPU能够执行的运算才是指令,RISC处理器中,3×3不是指令,译码后的3+3+3才是指令。
2、同样的代码在不同CPU中运行,不需要改变代码,只需要下载不同的编译器。
3、PC = 3没有意义,必须是4的整数倍,因此[1:0]一定是0。