本文适合初次接触ARM的的初学者,主要以基础知识点和科普为主.
前言
提起ARM,没有接触过的朋友可能第一反应是英语单词arm(手臂),事实上,ARM确实如同手臂对于人类一般,在我们生活中有着举足轻重的地位,本文会对ARM进行基础知识的讲解及科普,为大家介绍ARM。
学习arm重点学习两方面:程序运行原理、硬件控制原理。
一、ARM是什么?
- ARM代表一个公司,即ARM公司( Advanced RISC Machine[高级精简指令集计算机]),而ARM公司不生产芯片,做技术的授权,提供解决方案。 ARM公司授权芯片的公司,芯片产家在内核的基础上,增加了一些外设,发布一款芯片,这些芯片可以统称为SOC(即片上系统)
- ARM表示一种技术
- ARM可以表示一些处理器的统称,ARM处理器是英国Acorn有限公司(ARM前身)设计的低功耗成本的第一款RISC微处理器。全称为Advanced RISC Machine。ARM处理器本身是32位设计,但也配备16位指令集,一般来讲比等价32位代码节省达35%,却能保留32位系统的所有优势。
二、ARM的特点
最主要的特点是:耗电少功能强、16位/32位双指令集以及有众多的合作伙伴。
1.体积小、低功耗、低成本、高性能;
2.支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件;
3.大量使用寄存器,指令执行速度更快;
4.大多数数据操作都在寄存器中完成;
5.寻址方式灵活简单,执行效率高;
6.指令长度固定。
三、ARM的使用场景
实际上,ARM已经在日常生活中极度常见。现代生活中人们的通信移不开手机,而关注手机性能的朋友们经常会注意手机的处理器,这些处理器即采用的是ARM。
- Cortex-A:
高通,联发科,海思,三星,飞思卡尔、面向尖端的基于虚拟内存的操作系统和用户应用。 - Cortex-R:
实时处理器为要求可靠性、容错功能和实时响应的嵌入式系统,提供高性能解决方案。汽车电子,照相机摄像机。 - Cortex-M:单片机
针对成本和功耗敏感的MCU和终端应用,一般不跑操作系统,可以运行实时操作系统:FreeRTOS,uCosII,LiteOS(华为),意法半导体(ST)STM32系列
看到这里又有很多朋友问了,这上面这不都是cortex吗?看着与ARM毫不相干啊?各位看官不要急,且看下面的讲解。
1.计算机组成
讲解之前我们先看一看我们日常使用的计算机,了解下究竟什么是计算机。
输入设备、输出设备、存储器、运算器、控制器共同组成了cpu
1.输入设备:将其他信号转换为计算机可以识别的信号(电信号) 。
2.输出设备:将电信号(0、1)转为人或其他设备能理解的信号。
3.存储器:存放程序和数据的部件,也是计算机能够实现“存储程序控制”的基础。
程序:指令的有序集合 //汇编指令
ROM: flash (EMMC)、磁盘空间 、掉电不丢失数据
RAM: 内存、掉电丢失数据
4.运算器:CPU对信息处理和运算的部件,常进行算术运算和逻辑运算,其核心是算术逻辑单元ALUCPU中用各种各样的数字电路搭配成各种各样的运算电路,如:加法、减法等。
5.控制器:整个计算机的指挥中心
2.架构
架构指支持的汇编指令集,由ARM公司设计的ARM内核的结构,内核中的部件如何协调工作,执行程序。
在较早的时期,ARM推出的架构几乎都是以ARM开头,诸如:
ARM-V1:ARM1
ARM-V2:ARM2、ARM3
ARM-V3:ARM6、ARM600、ARM610、ARM7、ARM700、ARM710
ARM-V4:StrongARM、ARM8、ARM810、ARM9
ARM-V5:ARM9E、ARM10E
ARM-V6:ARM11
从ARM-V7架构(即ARM11)开始,ARM的架构便以Cortex命名,该架构又分为三个系列,分别是:
Cortex-A :高端系列,应用于尖端的精准设备,例如手机等
Cortex-R : 实时系列,实时响应,高性能高可靠容错强,衍生产品中体积最小的ARM处理器
Cortex-M: 控制系列,单片机常用该系列,针对成本和功耗敏感的MCU和终端应用,可操作系统(只可跑小型系统)
Cortex-SC : 安全系列
ARMV7:Cortex-A5、Cortex-A7、Cortex-A8、Cortex-A9
ARMV8:Cortex-A53、Cortex-A73、Cortex-A78----ARMV8.2
3.指令集
有80%指令为通用指令,其余20%指令一般可以被通用指令替代
●精简指令集(RISC)–>微处理器
在复杂指令集里边选取了一些比较简单,使用频率较高的指令
指令的宽度固定,多为单周期指令。(ARM固定8位4字节)
举例:如有加法运算器 ,没有乘法运算器 3*3 —》3+3+3
●复杂指令集(CISC)–>电脑CPU
注重的指令的功能性,指令的周期,指令的宽度不固定
注:
伪指令与错误指令:
若指令无对应运算器,则会转变为已有的其他运算器执行功能(例如3*3可变为3+3+3的两条加法运算),
运算器越少,处理速度越慢,重量越少(故而游戏本性能高但更重),反之亦然。
上述没有对应的指令,用其他指令实现了相应功能,该类替代指令被称作伪指令,若无法实现(无替代指令)
则原指令为错误指令
4.指令解析
1)取指:控制器将PC寄存器中的值发送给内存,内存将对应地址中的指令(机器码)传送回CPU的指令寄存器IR中
2)译码:指令译码器对IR中的指令进行识别,即将指令(机器码)翻译成具体的运算操作(+/-/*…)
3)执行:运算器执行对应的指令并将结果写入寄存器
执行完一条指令后CPU内对应的硬件会将PC的值自动增加使PC指向内存中的下一条指令
5.工作模式
七种工作模式(重点):
除用户模式外其余都为特权模式
1.用户模式(user):
用户程序的工作模式,运行在操作系统的用户态,不能操作其他硬件资源,
只能执行处理自己的数据,也不能切换到其他模式,要切换到其他模式,只能产生中断或其他异常
2.系统模式(system):
系统模式是特权模式,使用和User模式相同寄存器集的特权模式,保证不同任务每次调用同一个函数都是从头开始。
使用同一套寄存器。
操作系统通过该模式使用户访问受限的资源
3.一般中断模式(IRQ):
用于处理一般的中断请求(低优先级中断)。
一般在硬件产生中断信号后会自动进入该模式,是一种特权模式,可以自由访问系统硬件资源
4.快速中断模式(FIQ):
用于处理时间要求比较紧急的中断请求(高优先级中断)。一般在高速数据传输及通道中。
5.管理模式(SVC–super visor):
一般CPU上电之后会自动进入该模式,该模式主要完成系统的初始化,软中断也会进入该模式。
如果在用户模式下可以通过软中断进入该模式,请求访问硬件资源
6.未定义模式(undefined):
未定义指令中止。CPU在指令的译码阶段不能识别该指令操作时(错误指令),则会进入该模式
7.终止模式非法访问(abort):
当用户非法访问内存,没有权限读写内存地址时,会进入该模式
8.cortex后增加安全模式(monitor):
为了安全而扩展出来的用于执行安全监控代码的模式,也是一种特权模式
四、寄存器
寄存器:是一种特殊的存储器,在CPU内部,可以用来存储数据,但是存储的内容有一定作用,ARM之前的架构有37个32-Bits长的寄存器
对于Cortex A 有40个寄存器,每个寄存器有32bit。对于寄存器是没有地址的,用编号表示。
●A32:每个寄存器可以存储一个32位数据
●A64:每个寄存器可以存储一个64位数据
R13:栈指针寄存器SP(the stack pointer)
存放栈顶的地址
R14:链接寄存器LR(the link register)
函数调用时,保存返回地址
(保存调用函对应指令的下一条指令地址,返回的时候把lr值给pc,可以继续执行接下来的代码)
R15:程序计数寄存器PC(the program counter)
存放当前取指指令的地址
PSR程序状态寄存器:共有6个,当前程序状态寄存器CPSR是所有运行模式所共享的,而另外5个PSR为模式私有,用来对CPSR进行备份的寄存器叫做SPSR。
CPSR:当前程序状态寄存器(current program status register)
存储当前程序运行状态
31-28 NZCV四个条件代码标记位(运算结果为负,运算结果为0,进位,溢出)
27-8 无用保留位
7-5 IFT I和F为中断标记位,0为中断打开,都为1表示静止状态;
T为0表示ARM状态,T为1表示Thumb状态.
4-0 M4-M0 处理器模式位(8种模式)
SPSR:保存程序状态的寄存器(saved program status register)
用于保存cpsr
注:
CPU识别的是机器码,但由于不同的CPU运算器不同,处理指令不同,则导致对应指令集的不同(即机器码不同)。
汇编最接近机器码,则指令集不同,故而汇编代码不能移植到不同的机器中.
为何不同系统都可以实现C程序?
因为C针对不同的系统有不同的编译器,交叉编译工具编译C,实现C的程序移植ARM系统。文章来源:https://www.toymoban.com/news/detail-440783.html
总结
本文简单介绍了ARM的基础知识点,希望对初学者有所帮助。文章来源地址https://www.toymoban.com/news/detail-440783.html
到了这里,关于ARM开发---基础认识的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!