ARM基础
一、ARM
ARM公司(正式名称为ARM Holdings Ltd.)是一家总部位于英国剑桥的半导体和软件设计公司,专注于开发和授权基于ARM架构的处理器技术。
ARM也是一种广泛使用的计算机架构,特别适合于低功耗和高性能的应用。ARM最初由英国的Acorn计算机公司在1980年代开发,后来发展成为一个全球领先的处理器架构。
二、ARM处理器的发展
ARM处理器有多种型号,主要分为几个系列,其中每个系列针对不同的应用场景和性能需求。以下是一些主要的ARM处理器型号和系列:
1. ARM Cortex-A系列
- Cortex-A系列适用于高性能应用,如智能手机、平板电脑和其他消费电子产品。
2. ARM Cortex-M系列
- Cortex-M系列特别设计用于低功耗和嵌入式应用,广泛应用于物联网设备和微控制器。
3. ARM Cortex-R系列
- Cortex-R系列适用于实时应用,特别是在汽车和航空航天领域。
三、片上系统(SOC,system on chip)
System on Chip,简称Soc,也即片上系统。从狭义角度讲,它是信息系统核心的芯片集成,是将系统关键部件集成在一块芯片上;从广义角度讲, SoC是一个微小型系统,如果说中央处理器(CPU)是大脑,那么SoC就是包括大脑、心脏、眼睛和手的系统。
一个典型的最小系统可能包括以下基础组件:
- 微控制器或微处理器:作为系统的核心,用于执行程序。
- 随机存取存储器(RAM):用于临时存储数据和程序运行的上下文。
- 只读存储器(ROM)或闪存:用于存储固件或操作系统。
- 时钟电路:提供稳定的时钟信号以保证系统的稳定运行。
- 电源管理电路:为系统提供必要的电压和电流。
- 输入输出接口:如LED、按钮、串口等,用于与外部环境交互。
四、CPU(Central Processing Unit,CPU)
中央处理器(Central Processing Unit,CPU)是一台计算机的运算核心和控制核心。
CPU、内部存储器和输入/输出设备是电子计算机三大核心部件。其功能主要是解释计算机指令以及处理计算机软件中的数据。
CPU通常由以下几个主要部分组成:
-
算术逻辑单元(Arithmetic Logical Unit,ALU):
负责执行所有的算术和逻辑运算。 -
控制单元(Control Unit, CU):
负责从内存中获取指令,解释其含义并控制其它部件的工作。 -
寄存器(Register,REG):
CPU内部的小型高速存储器,用于暂时存储数据和指令,寄存器访问速度极快。 -
缓存(Cache):
CPU中的高速缓存,用于提高访问频繁数据的速度,通常分为L1、L2和L3缓存。 -
总线接口(Bus):
CPU与内存及其他外部设备之间的通信机制,负责数据和命令的传输。 - 状态指示寄存器(PSR):
计算机中的一个重要寄存器,用于存储处理器当前执行状态的信息。
五、计算机的指令集
CPU的指令集是指令的集合,这些指令用于控制计算机的操作和执行各类计算。按照指令的复杂程度,指令集通常被划分为两大类:
复杂指令集计算(CISC):CISC架构包含较多的指令,可以执行复杂的操作。每条指令能够完成多条RISC指令的工作。
精简指令集计算(RISC):RISC架构简化了指令集,提供少量且一致性强的指令,并通常在一个时钟周期内完成。
程序计数器、链接寄存器和堆栈指针是计算机架构中关键的寄存器,它们负责程序的控制流程和数据管理。
六、编译
编译是从源代码(通常为高级语言)到能直接被计算机或虚拟机执行的目标代码(通常为低级
语言或机器语言)的翻译过程。用于编译的软件为编译器
七、计算机的硬件组成
硬件是计算机系统的物质基础,软件是计算机系统的灵魂。硬件和软件是相辅相成的,不可
分割的整体。
1.输入设备
输入设备的任务是把人们编好的程序和原始数据送到计算机中去,并且将它们转换成计算机内部所能识别和接受的信息方式。常用的有键盘、鼠标、扫描仪等。
2.输出设备
输出设备的任务是将计算机的处理结果以人或其他设备所能接受的形式送出计算机。常用的有显示器、打印机、绘图仪等。
3.存储器
存储器是用来存放程序和数据的部件,它是一个记忆装置,也是计算机能够实现“存储程序
控制”的基础。
主存储器
可由CPU直接访问,用来存放当前正在执行的程序和数据。
辅助存储器
设置在主机外部,CPU不能直接访问,用来存放暂时不参与运行的程序和数据,需要时
再传送到主存。
高速缓冲存储器(Cache)
CPU可以直接访问,用来存放当前正在执行的程序中的活跃部分,以便快速地向CPU提供指令和数据
存储器的分类
1.易失性存储器:易失性存储器是指掉电后数据就丢失了的存储器,最常见的就是RAM;
2.非易失性存储器:非易失性存储器是指掉电后数组不会丢失的存储器,最常见的就是ROM
norflash(或非闪存):NOR Flash可以像RAM一样直接寻址
nandflash(与非闪存):不能进行寻址操作,需要先选择块(block),再进行页操作。
4.运算器
运算器是对信息进行处理和运算的部件,经常进行的运算是算术运算和逻辑运算,因此运算器
的核心是算术逻辑运算部件ALU。运算器中有若干个寄存器(如累加寄存器、暂存器等)。
5.控制器
控制器是整个计算机的指挥中心。控制器中主要包括时序控制信号形成部件和一些专用的寄存器。
6 计算机的总线结构
将各大基本部件,按某种方式连接起来就构成了计算机的硬件系统。目前许多计算机(主要指小、微型计算机)的各大基本部件之间是用总线(Bus)连接起来的。总线是一组能为多个部件服务的公共信息传送线路,它能分时地发送与接收各部件的信息
八、处理器的工作模式
-
通用寄存器:
- ARM处理器通常有16个通用寄存器(R0到R15)。其中,R0到R12可以用于一般的数据操作,R13(SP)是堆栈指针,R14(LR)是链接寄存器,R15(PC)是程序计数器。
-
特殊寄存器:
- 程序计数器(PC):存储当前执行指令的地址。
- 链接寄存器(LR):用于存储返回地址,通常在调用子程序时使用。
- 堆栈指针(SP):指向当前栈顶位置,在函数调用和局部变量管理中非常重要。
-
状态寄存器:
- 程序状态寄存器(CPSR):包含了处理器的运行状态信息,包括标志位(如零标志、进位标志、溢出标志等)以及处理器的模式(用户模式、特权模式等)。
- 保存程序状态寄存器(SPSR):用于保存程序状态信息。当处理器在执行过程中发生中断或异常时,当前的程序状态寄存器(CPSR,Current Program Status Register)的内容会被保存到
spsr
中。这使得处理器能够在服务中断或异常后恢复到中断前的状态。
九、异常处理
向量表
- 向量表包含了不同异常类型的处理入口地址,如:
- FIQ(快速中断请求)
- IRQ(中断请求)
- 数据中止
- 预取中止
- 软件中断
- 未定义指令
- 重置
向量表的地址可以在特定的内存位置