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硬件自动执行。

相关推荐
女神下凡7 小时前
芯参谋(43):DDR4_电路设计指南
arm开发·单片机·嵌入式硬件·设计规范
晚枫歌F17 小时前
DPDK原理以及解析tcp/udp协议包
arm开发
szxinmai主板定制专家18 小时前
基于 ARM+FPGA 雕刻机控制系统的设计
arm开发·人工智能·fpga开发·rk3576·半导体设备
女神下凡1 天前
芯参谋(41):DDR2_电路设计指南
arm开发·单片机·嵌入式硬件·设计规范
女神下凡2 天前
芯参谋(40):UFS 电路设计指南
arm开发·单片机·嵌入式硬件·设计规范
一条破秋裤2 天前
Jetson 内核模块编译与板端验证记录
arm开发
aixingkong9212 天前
Agentic AI时代的处理器算力需求和Nvidia、ARM、AMD等大厂的回答
arm开发·人工智能
女神下凡2 天前
芯参谋(38):NAND_MCP_电路设计指南
arm开发·单片机·嵌入式硬件·设计规范
剑指offer.2 天前
ARM裸机开发-SPI
arm开发·嵌入式硬件·嵌入式·arm
sunoo-2293 天前
【ARM嵌入式学习笔记第十天】i.MX6ULL eLCDIF控制器驱动RGB LCD全解析(硬件原理+寄存器配置+裸机代码)
arm开发·笔记·学习