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

相关推荐
u01090535921 小时前
(永久免费)树莓派 / 香橙派等开发板,安装神卓互联巴比达内网穿透安装教程(Linux ARM 版 V9.4.1)
linux·运维·arm开发
打工仔折腾 AI1 天前
后端部署避坑:吃透IPv4地址、网络接口与CIDR前缀的实际应用
arm开发·人工智能·后端·python·性能优化
工控存储研习2 天前
嵌入式设备启动时间优化:从上电到应用就绪,每一毫秒怎么抠
arm开发
a5986522 天前
云手机怎么选?ARM服务器原生架构和X86模拟器差别很大
服务器·arm开发·智能手机
李某学编程3 天前
基于ARM的微机原理学习笔记(一)
arm开发·笔记·学习
2035去旅行3 天前
U-Boot DM(Driver Model)驱动框架
嵌入式·arm·soc
XMAIPC_Robot3 天前
基于 i.MX95 平台在新一代工业控制器中的应用 — 工业车载平板、半导体设备主控方案解析
arm开发·人工智能·机器学习·fpga开发·rk3588+fpga·i.mx95
女神下凡3 天前
芯参谋(71):全桥电机驱动电路设计指南
arm开发·stm32·单片机·嵌入式硬件·硬件工程·设计规范·1024程序员节
szxinmai主板定制专家3 天前
基于 AM62x + Artix-7 的低功耗 ARM+FPGA 平台在轨道交通车门控制中的应用
arm开发·人工智能·fpga开发·zynq·am62x
幻智星科技3 天前
我砍掉了FPGA里的ARM核项目反而提前交付了
arm开发·网络协议·fpga开发·硬件架构