ARM裸机开发 Day01 学习笔记

一、CPU分类:CISC 与 RISC

CISC 复杂指令集计算机(代表:x86)

特点:指令功能丰富,芯片复杂;成本高、体积大、功耗大。

RISC 精简指令集计算机(代表:ARM、51、MIPS)

特点:指令功能少,芯片结构简单;成本低、体积小、功耗低。

ARM公司只设计RISC架构CPU内核,不生产芯片;把内核授权给半导体厂商。

例:STM32F103,ST意法半导体拿到ARM内核授权,生产芯片。

二、ARM内核版本分类

ARM7、ARM9、ARM11 → 旧一代内核。

1.Cortex系列

分为三大方向

1)Cortex‑A:Application 应用处理器

面向操作系统、安卓、Linux。

Cortex‑A5:智能手表

Cortex‑A7:IMX6ULL、STM32MP157(课程使用)

Cortex‑A8:三星旧款手机

Cortex‑A9:三星Exynos4412

Cortex‑A75:高端移动端

2.)Cortex‑R:Real‑Time 实时处理器

面向汽车电子,强实时性场景。

3) Cortex‑M:MCU 单片机

单片机领域,常用型号:

Cortex‑M3:STM32F103

Cortex‑M4:STM32F407、STM32MP157(多核)

三、IMX6ULL芯片内部框图(SOC)

SOC片上系统:内核和外设集成在一块芯片内部,内部通过总线通信。

AHB总线(高速总线):连接高速外设,如USB、网卡、DDR内存控制器

APB总线(低速总线):连接低速外设,GPIO、UART、TIMER定时器

引脚:VCC供电、GND地、OSC晶振、RESET复位。

四、Cortex‑A7 32位内核寄存器

ALU

算术逻辑单元,完成算术、逻辑运算

R0~R12

通用寄存器,存放临时数据

SP(R13)

Stack Pointer 栈指针寄存器,管理栈空间

入栈:SP先自减,数据存入SP指向新位置

出栈:从SP指向位置取出数据,SP自增

栈特性:先进后出,后进先出

LR(R14)

Link Register 链接寄存器,保存函数/异常的返回地址

PC(R15)

Program Counter 程序计数器,保存下一条将要执行指令的地址

三级流水线流程:PC取指令 → 译码器翻译指令 → CPU执行指令

PSR

状态寄存器

CPSR 当前程序状态寄存器

保存程序运行时状态:溢出、进位、中断使能、模式位,记录当前处理器状态。

SPSR 备份程序状态寄存器

特权模式才有;发生异常时,把CPSR的值保存到SPSR,异常退出时恢复。

MMU

内存管理单元

作用:把虚拟地址转换为物理地址。

裸机开发:关闭MMU

Linux驱动开发:打开MMU,开启虚拟内存

CACHE

高速缓存

提升CPU访问内存效率,分为两类:

I-CACHE: Instruction Cache 指令缓存

**D-CACHE:**Data Cache 数据缓存

五、冯诺依曼架构和哈佛架构

  1. 冯·诺依曼架构:数据和指令共用同一块存储空间

  2. 哈佛架构:数据和指令拥有独立的存储空间

六、异常向量表

本质是一个数组,数组里面存放的是异常服务函数的入口地址。

中断向量表:存放中断服务函数入口地址;

异常向量表:存放跳转到异常服务函数的指令。

七、大小端存储

ARM处理器默认小端存储

大端: 高地址存放低数据位,低地址存放高数据位

**小端:**高地址存放高数据位,低地址存放低数据位

八、NOR Flash 与 NAND Flash

NOR Flash :可以按字节寻址,带有地址总线和数据总线

**NAND Flash:**块设备,以512字节为一块进行存储

九、ARM 7种基础工作模式

1) User:用户模式,非特权模式,大部分任务运行在此模式

2) FIQ:快速中断模式,高优先级快速中断触发进入

3) IRQ:普通中断模式,低优先级常规中断触发进入

4) Supervisor(SVC):管理模式,上电/软中断进入

5)Abort:中止模式,取指/数据访问异常进入

6)Undef:未定义指令模式,执行未知指令时进入

7)System:系统模式,和User使用相同寄存器组的特权模式

Cortex-A额外还有Monitor监控模式,用于安全扩展,属于特权模式。

寄存器数量:Cortex-A体系下一共40个32bit寄存器,不同模式下会切换分组寄存器。

十、ARM异常处理流程

异常发生时,CPU硬件自动完成:

  1. 拷贝CPSR到SPSR_<mode>

  2. 设置CPSR的模式位,切换到对应异常模式

  3. 屏蔽中断(按需设置中断禁止位)

  4. 保存返回地址到LR_<mode>

  5. 设置PC跳转到对应的异常向量表地址

异常返回时需要做:

  1. 从SPSR_<mode>恢复CPSR

  2. 从LR_<mode>恢复PC

注意:以上动作全部由ARM硬件自动执行。

相关推荐
2301_815091012 小时前
ARM体系结构学习笔记(一):从硬件基础、寄存器到三级流水线
arm·嵌入式开发
an12321214 小时前
ARM汇编学习笔记 Day02
arm开发·arm
xx~t5 小时前
嵌入式——ARM——汇编1
linux·汇编·arm开发·嵌入式硬件·arm
ouynagda5 小时前
嵌入式与ARM内核基础体系梳理
arm开发
学linux的QQ蛋5 小时前
零基础吃透ARM体系架构与底层原理
arm
PiaoKe___5 小时前
从端云解耦到可编程 Android 实例:云手机架构解析与 Python 批量管控实战
arm开发·python·架构·自动化
H_oRIZoN_5 小时前
Linux入门DAY44 ARM 入门 Day02|ARM 汇编指令、模式切换、栈操作、汇编 C 混合编程
linux·单片机·嵌入式硬件·arm·linux应用编程
Horn Still Sounds15 小时前
ARM嵌入式基础|内核、寄存器、架构、存储、汇编移位全面梳理
arm开发·单片机·嵌入式硬件·硬件架构
susplus16 小时前
【初识ARM】ARM相关基础概念
学习·arm