ARM开发---基础认识

本文适合初次接触ARM的的初学者,主要以基础知识点和科普为主.


前言

提起ARM,没有接触过的朋友可能第一反应是英语单词arm(手臂),事实上,ARM确实如同手臂对于人类一般,在我们生活中有着举足轻重的地位,本文会对ARM进行基础知识的讲解及科普,为大家介绍ARM。

学习arm重点学习两方面:程序运行原理、硬件控制原理。


一、ARM是什么?

  1. ARM代表一个公司,即ARM公司( Advanced RISC Machine[高级精简指令集计算机]),而ARM公司不生产芯片,做技术的授权,提供解决方案。 ARM公司授权芯片的公司,芯片产家在内核的基础上,增加了一些外设,发布一款芯片,这些芯片可以统称为SOC(即片上系统
  2. ARM表示一种技术
  3. 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。

百度百科-华为mate50参数
百度百科-天玑9000参数

  1. Cortex-A:
    高通,联发科,海思,三星,飞思卡尔、面向尖端的基于虚拟内存的操作系统和用户应用。
  2. Cortex-R:
    实时处理器为要求可靠性、容错功能和实时响应的嵌入式系统,提供高性能解决方案。汽车电子,照相机摄像机。
  3. 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系统。

总结

本文简单介绍了ARM的基础知识点,希望对初学者有所帮助。

  • 5
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值