ARM学习

基础知识

架构设计

最大区别在于内核设计的区别:X86,8051,ARM,MIPS

CPU内核(指令集架构)

分类:CISC,RISC

  1. CISC:Complex Instruction Set Computer 复杂指令集计算机 例:x86
    特点:面积大,加工成本高,复杂,体积大,功耗大
    80%情况下只用到20%的功能(二八效应)
  2. RISC:Reduced Instruction Set Computer 精简指令集计算机
    特点:面积小,加工成本低,功耗低,体积小 例:ARM,便携式设备(手机)

ARM应用

三种型号:Cortex-A,Cortex-R,Cortex-M

  1. A:Application 应用,手机、应用电子领域
  2. R:realtime 实时性,汽车电子,航空航天
  3. M:Micro 微控制器

Coretx - A7:32位处理器

寄存器:32位,4字节 数据范围:0000 0000 ~FFFF FFFF

ALU + R0~R15 +

一、寄存器

1.通用寄存器

16个通用寄存器(R0~R15)

R0~R12:通用寄存器(内核),

存放数据,无地址,搭配ALU(算术逻辑单元)使用

特殊的通用寄存器

  1. pc寄存器
    名称:程序计数器(R13)
    指向当前指令的指针
    指向哪一行代码,就执行哪一行,
    未被指向过,则会跳过不执行
    上电后,默认指向首条指令
    1. 三级流水线结构
      1. pc取指令
      2. 译码器解释指令
      3. 内核(kernel)执行指令
    2. 三指并非串行,而是并行
  2. 局限:发生跳转,无法返回
  3. lr寄存器:link register(R14)
  4. 链接寄存器:保存函数的返回地址
  5. 局限:二次调用,可能覆盖
  6. sp寄存器:stack pointer,(R15)
  7. 栈指针寄存器:用于管理栈空间,永远指向栈顶
  8. 发生跳转:先入栈,再跳转
  9. 跳转后执行完毕:开始出栈,返回

2.特殊寄存器

状态寄存器(PSR)

cpsr寄存器:current program status register

当前程序状态寄存器:保存程序运行到某一步的状态

spsr:save program status register

保存/备份程序状态寄存器:异常发生时,保存cpsr寄存器中的程序状态

MMU:Memory Manager Unit

内存管理单元

功能:用于虚拟内存到物理内存的映射,从而提高物理内存的利用率

注:裸机开发必须关闭MMU

Cache:高速数据缓存

功能:直接从Cache访问数据,提高CPU访问数据的效率

分类:icache,指令缓存;dcache,数据缓存

架构采用哈佛架构

裸机开发时:打开icache,关闭dcache,提高指令运行速度

内核和外设之间的通信方式

种类:单总线通信,双总线通信

单总线通信,通过一根线/一组线和外设通信

和某一外设进行通信时,其他外设无法接入

双总线通信:

AHB总线:先进高速总线(USB,网卡,RAM)

APB总线:先进外设总线(GPIO,UART)

SATA:存储接口 BIOS:基本输入输出系统

booteloader

SOC

system on chip,片上系统

SOC处理器内核

8051,8051,DSP,MIPS,PPC,ARM

2440 RAM 4KB

补充知识

冯·诺依曼架构:数据和指令存放到同一片内存空间

哈佛架构:数据和指令要分开对立存储

预处理:头文件展开,宏定义替换,条件编译

编译:将C语言文件编译成汇编文件

汇编:将汇编代码编译成二进制机器语言

链接:链接成一个可执行的文件

gcc编译,生成的可执行程序只能在arm架构使用

交叉编译:在一个平台编写编译程序,能够在另外一个平台运行程序

ARM指令

汇编语法

电路基础

三极管

与或非门

锁存器,记忆功能

RAM与ROM

RAM:易失性

RAM类型(了解即可)

  1. sram(static ram)用晶体管存储0、1。速度快,成本高,存储密度低。
  2. dram(dynamicram)动态存储,用电容充放电存储0,1。功耗大,需要外接刷新电路,读写速度低于sram。成本低,存储密度大。
  3. sdram(synchronous dram)增加了同步电路,提高dram的数据读写速度。
  4. ddr ram(全称ddr sdram即double data rate sdram),为sdram的下一代,目前已发展到ddr5。
  5. iram(internal ram)注意iram并非是真正意义上的某种ram,通常iram就是sram,它通常存在于Soc内部,所以被称为iram。
  1. rom:非易失性存储器,最早的rom在出场时写入数据,之后无法更改。
  2. prom(programmnable rom):可编程rom。出场后能够让用户写入一次数据,例如cdrom
  3. eprom(erasable prom):可擦写prom,出场后可以擦除数据再次写入,但需要特殊的设备。如紫外光等
  4. eeprom(electically eprom):电可擦写可编程rom,无需专用设备就可以擦写,编程。
  5. flash闪存,新一代非易失性存储器。
    1. nor flash(与非) :每一个字节可以被寻址,地址总线和数据总线
    2. nand flash(或非):无法被寻址,以固定块大小写入或读取数据512byte

7种必须记忆(重点)

ARM的7个基本工作模式(七种两类)

  1. User:非特权模式,大部分任务执行在这种模式
  2. FIQ:当一个高优先级(fast)中断 产生时将会进入这种模式
  3. IRQ:当一个低优先级(normal)中断产生时将会进入这种模式
  4. Supervisor:当复位 或软中断指令执行时将会进入这种模式
  5. Abort:当存取异常时将会进入这种模式
  6. Undef:当执行未定义指令时会进入这种模式
  7. System:使用和User模式相同寄存器集 的特权模式
  8. Cortex-A特有模式:
  9. Monitor:是为了安全而扩展出的用于执行安全监控代码的模式;也是一种特权模式

颜色不同,同名寄存器不同

发生模式跳转时,调用spsr存储cpsr内容(不同的寄存器集),完成当前模式后,基于spsr存储相关的cpsr内容,恢复原先模式

程序状态寄存器

|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|---|---|---|---|---|---|---|---|---|---|
| 条件位 |||| | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| N | Z | C | V | | | | | | | | | | | | | | | | | | | | | | | | | | | | |

异常处理

异常产生时,内核工作

  1. 拷贝CPSR到SPSR<mode>
  2. 设置适当的CPSR位:
    1. 改变处理器状态进入ARM态
    2. 改变处理器模式进入相应的异常模式
    3. 设置中断禁止位禁止相应中断(如果需要)
  3. 保存返回地址到LR_<mode>
  4. 设置PC为相应的异常向量

异常向量表:数组,数组中存放的是跳转到对应异常服务函数的指令

返回时,异常处理需要:

  1. 从SPSR<mode>恢复CPSR
  2. 从LR <mode>恢复PC
  3. Note:这些操作只能在ARM态执行

汇编语言

MOV

算术右移:针对有符号数,最高位补符号位,需要考虑数值的符号位

1111 1111 1111 1111 → 1111 1111 1111 1111

0111 1111 1111 1111 → 0011 1111 1111 1111

逻辑右移:针对无符号数,最高位补0,不需要考虑数值的符号位

1111 1111 1111 1111 → 0111 1111 1111 1111

循环右移:循环将移出的最低位补到最高位

0111 1111 1111 1111 → 1011 1111 1111 1111

ADD

概念回顾:指令集(复杂/精简),ARM内核版本(ARM11的变化)应用领域(A/R/M)

Cortex-A7 内核中的寄存器

pc,lr,sp,cpsr,spsr,MMU, Cache,icache,dcache,功能记忆

哈佛与冯诺依曼了解即可

单总线/双总线

ram/rom,flash/nor flash/nand flash

七种arm工作模式(记忆)

寄存器概要,不同模式下的数量(37,40位)

程序寄存器各位作用(了解即可)

异常处理流程(记忆)

相关推荐
qq_571099351 天前
学习周报四十
学习
瑶光守护者1 天前
【一文读懂】OpenClaw系统架构分析:自主人工智能智能体的范式迁移与技术底座分析
人工智能·笔记·学习·系统架构·边缘计算·openclaw
炽烈小老头1 天前
【每天学习一点算法 2026/04/13】两数相除
学习·算法
_李小白1 天前
【OSG学习笔记】Day 45: osg::Camera::DrawCallback (抓取图片)
笔记·学习
青苔猿猿1 天前
OpenWebUI(20)源码学习-版本升级
人工智能·学习·ai·openwebui
不灭锦鲤1 天前
网络安全学习第166天
学习
Century_Dragon1 天前
世纪龙-驶入未来课堂:新能源汽车故障诊断虚拟实训软件助力职教
学习
Westward-sun.1 天前
OpenCV + dlib 人脸关键点检测学习笔记(68点)
人工智能·笔记·opencv·学习·计算机视觉
red_redemption1 天前
自由学习记录(165)
学习
我命由我123451 天前
U 盘里出现的文件 BOOTEX.LOG
运维·服务器·经验分享·笔记·学习·硬件工程·学习方法