ARM学习笔记(1)

今天把ARM入门的知识点梳理了一遍,核心内容记下来。

一、CPU架构分类

主要分CISC和RISC两类:

CISC(复杂指令集):代表x86。指令功能多,芯片设计复杂,成本高、体积大、功耗也大。

RISC(精简指令集):代表ARM、MIPS、8051。指令精简,芯片结构简单,成本低、体积小、功耗低。

ARM本身只做RISC架构设计,不生产芯片,通过授权给半导体公司落地。比如STM32F103就是意法半导体基于ARM架构做的MCU。

二、ARM内核产品线

ARM内核分三大方向,覆盖不同场景:

Cortex-A:应用级,跑操作系统的场景,比如手机、平板。代表有Cortex-A5、A7、A8、A9,像IMX6ULL、STM32MP157用的就是Cortex-A7。

Cortex-R:实时领域,主打高实时性,典型如汽车电子。

Cortex-M:单片机MCU领域,做控制类开发。Cortex-M3对应STM32F103,Cortex-M4对应STM32F407。

对应的指令集版本,常见的有armv7和armv8两代。

三、核心寄存器

ARM内核有16个通用寄存器,几个关键寄存器必须理清:

PC(R15):程序计数器,本质是指针,指向当前正在执行指令的下一条指令。

LR(R14):链接寄存器,保存函数的返回地址。

SP(R13):栈指针,管理栈区空间。栈是先进后出结构,出栈时从SP指向的位置取出数据,然后SP自增。

CPSR:程序状态寄存器,保存当前程序状态。异常发生时,会把CPSR备份到SPSR里,异常返回时再恢复。

还有MMU内存管理单元,作用是把程序的虚拟地址转换成物理地址。裸机开发一般关掉MMU,Linux驱动里会打开。每个进程能拥有4GB虚拟地址空间,就是靠MMU实现的。

四、内存与总线

大小端模式

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

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

总线架构

单总线:内核和外设之间通过一组总线通信

双总线/多总线:高速外设走AHB(先进高速总线),比如USB这类高速设备

存储介质

Nor Flash:支持字节级寻址,有独立的地址总线和数据总线,可以直接在上面运行程序

Nand Flash:块设备,按块读写,通常一块大小为512字节,容量大成本低

五、三种右移指令

汇编里常用的三种右移,区别很关键:

逻辑右移LSR:给无符号数用,最高位补0

算术右移ASR:给有符号数用,最高位补符号位

循环右移ROR:每次移出的最低位,直接补到最高位

对应汇编示例:

asm

MOV R0, #0xB2 ; 二进制 1011 0010

LSR R1, R0, #1 ; 逻辑右移1位 → 0101 1001

ASR R2, R0, #1 ; 算术右移1位 → 1101 1001

ROR R3, R0, #1 ; 循环右移1位 → 0101 1001

六、其他基础概念

交叉编译:在一个平台上编写编译程序,放到另一个平台上运行。比如在PC上编译ARM程序,下载到开发板里跑。

中断向量表:本质是数组,里面存放每个中断服务函数的入口地址。

异常向量表:同理,数组里存放跳转到异常处理函数的指令。

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

都是入门必须吃透的基础概念,先整理到这。

相关推荐
益达丫2 小时前
Socket编程揭秘:端口、IP与进程通信的底层逻辑
linux·笔记
无敌贵点大王3 小时前
RTThread学习记录11——RT-Thread 设备模型吃透:UART/ADC/PWM/PIN 到底有什么区别?
c语言·stm32·学习·链表
chicheese4 小时前
Linux 面试速查表:从初级到高级,附高频场景答题模板
linux·运维
是翎5 小时前
深度长文|2026产品经理AI实践手册
人工智能·深度学习·学习·自然语言处理·数据挖掘
Linux-lucky5 小时前
32-38-Linux学习之旅之MySQL综合
linux·运维·学习·mysql·ubuntu
vortex56 小时前
常用终端模拟器全面对比:Kitty、WezTerm、Ghostty 与 Konsole
linux
知识分享小能手6 小时前
C++ 学习教程,从入门到精通,C++ 入门知识 — 完整知识点(1)
开发语言·c++·学习
恶魔泡泡糖6 小时前
stm32F103C8T6标准库串口接收之中断方式2
stm32·单片机·嵌入式硬件
充哥单片机设计7 小时前
【STM32开源项目】智能小区充电桩
stm32·单片机·嵌入式硬件·毕业设计·小区充电桩·智能小区充电桩