嵌入式 - ARM1

一.嵌入式系统基础概述

嵌入式系统是以应用为中心、以计算机技术为基础,软硬件可裁剪的专用计算机系统。

计算机系统的软件基本组成:系统软件(如操作系统)和应用软件

计算机系统的硬件基本组成运算器、控制器、存储器、输入设备、输出设备

CPU (Center Processing Unit):中央处理器是一种通用的强大的处理器

GPU (Graphics Processing Unit):图形处理器

FPU(Float Processing Unit):浮点型运算单元

MPU(Micro Process Unit):微处理器偏向处理复杂任务,高端嵌入式设备的核心计算

MCU(Micro Contral Unit):微控制器偏向控制和高集成度

DSP(Digital signal Process):数字信号处理器专为高度复杂数学运算设计

SOC(System On Chip):片上系统是一个集成化的概念,将 MPU、MCU、GPU、DSP 等多种

功能模块集成在一块芯片上

二.处理器架构与指令集

1.CISC 与 RISC

1. CISC(Complex Instuction Set Computer)

复杂指令集计算机,指令集庞大且复杂,试图用一条指令完成多种操作,不同指令周期差异大,一些复杂指令需要多个时钟周期,可以减少程序指令条数,硬件结构复杂

2. RISC(Reduced Instuction Set Computer)

精简指令集计算机,选取使用频率高的简单指令,绝大多数指令在单时钟周期内完成,指令格式规整,可以提高指令的并行度和执行效率,硬件实现相对简单

2. 冯诺依曼架构

指令和数据共享同一个存储空间和同一套总线,硬件结构简单,成本低,灵活性高,但CPU无法同时取指令和去操作数,效率低下,如通用计算机

3. 哈佛架构

指令和数据拥有独立的存储空间和独立的总线,即拥有两套总线,结构复杂,成本高,不够灵活,可以同时读取指令和数据,如DSP\MCU

4. ARM 内核版本与系列

核心架构版本:ARM1 - ARM11、ARM - A、ARM - R、ARM - M

指令集版本:V1 - V9

ARM内核属于改进的哈佛架构,拥有哈佛架构的高性能CPU缓存和总线,以及冯诺依曼架构的灵活性接口

三、计算机体系结构

1. ARM内核

1. ALU(Arithmetic Logic Unit)

算术逻辑单元,负责执行所有数学运算(加减乘除)和逻辑运算(与或非)

2. 寄存器组

​​r0 - r12​​:通用寄存器,用于暂存数据和地址。

​​r13 (sp - Stack Pointer)​​:​​栈指针​​,指向当前栈顶地址。

​​r14 (lr - Link Register)​​:​​链接寄存器​​,用于存储子程序的返回地址。

​​r15 (pc - Program Counter)​​:​​程序计数器​​,存放下一条要执行的指令的地址。

3. MMU(内存管理单元)

负责虚拟地址到物理地址的转换​、内存访问权限的管理。这是实现现代操作系统(如Linux)内存隔离和保护的基础。

4. Cache(高速缓存)

一种小型但极快的内存,用于缓存CPU最近可能访问的指令和数据,以弥补CPU和慢速主内存之间的速度差距。

5. CPSR / SPSR (程序状态寄存器)

CPSR:存储当前程序的状态信息,如运算结果是否为负(N)、零(Z)、进位(C)、溢出(V)等

即NZCV标志位,以及中断禁用、运行模式等。

SPSR:当发生异常或中断时,用于备份CPSR的状态,以便异常处理结束后能恢复现场。

2. 总线系统

1. 地址总线

CPU通过它指定要访问的内存或外设的地址。宽度(32位)决定了CPU的寻址能力

2. 数据总线

在CPU和内存/外设之间传输实际数据

3. 控制总线

传输各种控制信号(读/写、中断、时钟等)

4. 总线类型

AHB(Advansed High-performance Bus):连接高速设备,如内存控制器、DMA

APB(Advanced Peripheral Bus):一种典型的多总线分层结构,用于优化系统性能。

连接低速外设,如GPIO、UART、Timer。

3. 外设寄存器

  1. GPIO Register

  2. timer

  3. Uart

  4. RAM(Random Access Memory)

4. 内存映射

0x00000000 - 0xFFFFFFFF​​ 是一个32位系统的完整4GB线性地址空间。

地址空间从低到高通常被划分为不同区域:

​代码段 (.text)​​:存放程序指令。

​已初始化数据段 (.data)​​:存放已初始化的全局变量和静态变量。

​未初始化数据段 (.bss)​​:存放未初始化的全局变量和静态变量。

​堆区 (heap)​ ​:动态分配内存的区域(malloc)。

​栈区 (stack)​ ​:用于存储函数调用时的局部变量、返回地址等​。顶部区域常保留给内核使用。

四、ARM工作模式

​用户模式 (User)​​:正常程序执行模式,权限受限。

​FIQ模式 (Fast Interrupt)​​:为处理高速数据传输的中断而设计。

​IRQ模式 (Interrupt)​​:用于处理普通中断。

​管理模式 (Supervisor)​​:CPU复位或执行SWI指令后进入的操作系统保护模式。

​中止模式 (Abort)​​:当存取异常时进入,用于处理内存访问错误。

​未定义模式 (Undefined)​​:当执行未定义指令时进入。

​系统模式 (System)​​:运行特权级操作系统任务的特权模式

五、异常向量表

异常向量表是一块固定的内存地址区域(0x0000 0000,0xFFFF 0000)

存放着各种异常处理程序的入口地址

它是CPU硬件与软件异常处理程序之间的桥梁,是操作系统实现中断管理和错误处理的基础机制。

工作原理

当发生异常(如中断、复位、执行未定义指令等)时,CPU会自动跳转到向量表中对应的固定地址去执行指令。每个异常类型在表中有且仅有一个占位。

异常向量表地址分配

0x00:复位(Reset)

0x04:未定义指令(Undifined Instruction)

0x08:软件中断(SWI)

0x0C:指令预取中止(Prefetch Abort)

0x10:数据访问中止(Data Abort)

0x18:IRQ中断

0x1C:FIQ中断​

相关推荐
Stone.Wu7 天前
快速理解ARM Cortex-M流水线:指令执行过程通俗解释
arm
我在人间贩卖青春7 天前
汇编之分支跳转指令
汇编·arm·分支跳转
我在人间贩卖青春7 天前
汇编之加载存储指令
汇编·arm·寄存器加载存储
我在人间贩卖青春7 天前
汇编之状态寄存器访问指令
汇编·arm·状态寄存器
我在人间贩卖青春7 天前
汇编之软中断指令和协处理指令
汇编·arm·软中断·协处理
我在人间贩卖青春7 天前
汇编之数据处理指令
汇编·arm·数据处理指令
fly的fly10 天前
浅析 QT远程部署及debug方案
qt·物联网·arm
切糕师学AI12 天前
ARM标准汇编(armasm)中的标号(Label)
汇编·arm
CHENG-JustDoIt13 天前
嵌入式开发 | ARM Cortex-M 系列中M3、M4、M23 和 M33四款处理器的深度对比分析
arm开发·单片机·嵌入式硬件·arm
toradexsh21 天前
在NXP iMX8QM上使用 Jailhouse
arm·nxp·toradex·imx8mp·jailhouse