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位)

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

异常处理流程(记忆)

相关推荐
H_老邪2 小时前
Docker 学习之路-从入门到放弃:1
学习·docker·eureka
早睡早起好好code2 小时前
InternNav 论文回看
笔记·python·深度学习·学习·算法
Aliex_git2 小时前
前端监控笔记(一)
前端·笔记·学习
似水明俊德2 小时前
16-C#.Net-自研ORM框架-学习笔记
windows·笔记·学习·c#·.net
m0_738820203 小时前
Tailwind CSS 完整学习笔记
css·笔记·学习
人邮异步社区3 小时前
大一学生如何入门机器学习,深度学习,学习顺序如何?
深度学习·学习·机器学习
_李小白3 小时前
【OSG学习笔记】Day 4: 矩阵变换
笔记·学习·矩阵·图形渲染
2201_754864783 小时前
学习日记(2026年3月24日)
学习