嵌入式学习的第四十四天-ARM

一、ARM内核基础知识

1.ALU

算术逻辑单元;完成运算的电路

**2.通用寄存器:**R0~R15

  • R13(SP):栈指针寄存器:指向栈的指针(指向正确的位置),为了保护现场
  • R14(LR):连接寄存器:保存PC要回来的位置,在PC调用完了,把地址给PC
  • R15(PC)program counter 程序计数器;保存当前指令要执行的下一条指令的地址

3.cache

高速缓存;RAM和内核速度不匹配;

  • I cache:指令高速缓存 instruction
  • d cache:数据高速缓存 data

4.MMU:memory management unit

内存管理单元;映射虚拟内存和物理内存:提高内存的使用效率

5.CPSR:current program status register

程序状态寄存器。

  • 用户级编程时用于存储条件码
  • 任何处理器模式下被访问
  • 两种运行状态:ARM状态(32位)、Thumb状态(16位),两种状态之间可任意切换
  • 七种运行模式:usr(用户)、fiq(快速中断)、irq(外部中断)、svc(管理)、sys(系统)、abt(数据访问中止)、und(未定义指令中止)

6.SPSR:saved program status register

程序状态保存寄存器

  • 每一种处理器模式下都有一个状态寄存器SPSR,用于保存CPSR的状态,以便异常返回后恢复异常发生时的工作状态。
  • 当特定的异常中断发生时,这个寄存器存放CPSR的内容。
  • 在异常中断退出时,可以用SPSR来恢复CPSR。

7.CISC:complex instruction set computer

复杂指令集计算机

  • 特点:指令集复杂、可变长度,单条指令可完成多步操作(如x86)。
  • 优势:代码密度高,但硬件设计复杂,功耗较高,在80%情况下,只能用20%功能。

8.RISC:reduce instruction set computer

精简指令集计算机

  • 特点:指令集简单、固定长度,执行效率高,通常采用流水线技术,依赖编译器优化。

  • 优势:低功耗、高性能,适合嵌入式系统(如ARM、MIPS)。

9.cortex 系列:(从ARM 11)

  • cortex A:应用,消费类电子,便携类设备;A7系列
  • cortex R:实时性高,高端,军工、卫星;
  • cortex M:单片机系列;

10.总线(bus)

AHB:先进的高速总线,连接高速设备,USB、RAM(早期叫北桥)

APB:先进外设总线,连接低速设备串口、GPIO,定时器(早期叫南桥)

11.哈佛结构和冯诺依曼

(1)哈佛架构

程序存储和数据存储分离:哈佛架构使用独立的存储器和总线来分别存储程序和数据。程序存储器专门用于存储指令,数据存储器用于存储变量和数据。

(2)冯·诺伊曼架构

程序存储和数据存储统一:冯·诺伊曼架构使用同一套存储器和总线来存储程序和数据。程序和数据存储在同一个存储空间中,通过地址来区分指令和数据。

(3) ARM内核

  • 早期经典ARM(如ARM7)采用冯·诺伊曼架构;

  • 现代ARM(如Cortex-M/A系列)采用改进的哈佛架构(缓存层级分离指令/数据)。

12.编译器

  • :交叉编译工具链:arm-gcc,编译出来的代码无法在主机运行,只能在目标机上运行。
  • 对内核进行操作,比如关闭MMU,打开SP,打开I cache,关闭d cache

二、RAM分类

(1)sram(static ram)

用晶体管存储0、1;

速度快,成本高,存储密度低;

应用于单片机。

(2)dram(dynamic ram)动态存储

用电容充放电存储0,1;

功耗大,需要外接(外接刷新电路,电路复杂(定期向存储1的补充电荷)),读写速度低于sram,成本低,存储密度大;

多应用与高端Soc。

(3)sdram(synchronous dram)

增加了同步电路,提高dram的数据读写速度(dram升级版)。

(4)ddr ram(ddr sdramldouble data rate sdram)

为sdram的下一代;双倍速(双数据速率)

(5)iram(internal ram)

注意iram并非是真正意义上的某种ram,通常iram就是 sram,它通常存在于Soc内部,所以被称为iram(Soc内部直接封装好在芯片内部的sram)

三、ROM分类

(1)rom非易失性存储器
最早的rom在出场时写入数据,之后无法更改。

(2)prom(programmable rom)可编程rom
出场后能够让用户写入一次数据,例如cdrom。

(3)eprom(erasable prom)可擦写prom
出场后可以擦除数据再次写入, 但需要特殊的设备,如紫外光等。

(4)eeprom(electically eprom)电可擦写可编程rom
无需专用设备就可以擦写,编程。

(5)flash闪存,新一代非易失性存储器
1)nor flash(或非falsh)
可直接被CPU寻址(每个字节都有独一无二的地址)

2)nand flash(与非falsh)
不可被COU寻址,每个字节不可被寻址(用flash控制器可以访问)

(6)存储系统的速度和价格对比

四、ARM处理器工作模式(kernal)

Cortex A7有9种基本工作模式

五、寄存器概要

:1.PC所有模式公用;不同的工作模式下,各状态都有自己独立的栈区空间,管理不同的栈(SP和LR);

  1. ARM9 :37个寄存器;cortex A-7有40个寄存器

六、异常处理

1.异常模块

  • FIQ中断
  • IRQ中断
  • Data Abort(数据存储异常):对RAM的访问发生错误
  • Prefetch Abort(预取失败异常):指令预取阶段内存访问失败触发
  • Software Interrupt(软中断异常):软件中断(任务切换),多任务的并发靠底层的软中断实现
  • Undefined Instruction(未定义指令异常)
  • Reset(复位异常)

2.异常向量表

  • 定义:一段固定地址的内存区域(通常位于0x00000000或0xFFFF0000),存储异常处理函数的入口地址。

  • 内容:每个异常类型对应一个4字节跳转指令

3. 当异常发生时,ARM内核会做哪些操作?

  1. 保存现场

    将当前PC(下一条指令地址)存入LR(如LR=PC-4或PC+4),CPSR存入SPSR(备份状态)。切换到对应的异常模式(如IRQ模式)。

  2. 跳转至异常处理

    从异常向量表获取处理函数地址,执行异常服务程序(ISR)。

  3. 中断屏蔽

    自动禁用同级或低优先级中断(FIQ可能不被屏蔽)。

  4. 返回恢复(手动操作):

    通过特定指令(如SUBS PC, LR, #4)恢复PC和CPSR,返回到原程序。

相关推荐
西岸行者5 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意5 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码5 天前
嵌入式学习路线
学习
毛小茛5 天前
计算机系统概论——校验码
学习
babe小鑫5 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms5 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下5 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。5 天前
2026.2.25监控学习
学习
im_AMBER5 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J5 天前
从“Hello World“ 开始 C++
c语言·c++·学习