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程序,下载到开发板里跑。

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

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

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

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

相关推荐
叼烟扛炮18 分钟前
Linux 学习笔记(四十三):网络编程进阶——自定义协议解决 TCP 粘包与守护进程
linux·开发语言·网络·笔记·tcp/ip
Escalating_xu39 分钟前
【Linux 网络编程】DNS 与 ICMP:从域名解析到 ping、traceroute,把“网络通不通”问清楚
linux·网络·php
songyuc1 小时前
【Manskill3】TableSceneBuilder学习笔记
pytorch·笔记·学习
外收内放1 小时前
Python基础语法练习题(75)
开发语言·python·学习
HQB20262 小时前
屹晶微电子 EG1130|2‑24V 输入 / 最高 28V 输出 内置 MOS 异步升压 DC‑DC|SOT23‑6|摄像头 / 车充 / 电池充电电源
嵌入式硬件·硬件工程
一枕槐安4873 小时前
大模型限流、重试、超时处理:API 调用健壮性方案
linux·服务器·php·大模型api·指数退避·限流控制·超时预算
西索斯coding3 小时前
gpt-image-2.5-sunburst 和 gemini-3.1-flash-image 差多少?60 组项目素材的成功成本评测框架
java·linux·gpt·ai
箓维3 小时前
应用层协议基础_序列化与反序列化
linux
゛凌乱的记忆づ3 小时前
好用的md文件编辑器——TyporaS与Typora
笔记·git·typora·markdown
kyrie_sakura3 小时前
大模型学习20 大模型学习 - LangChain3 - Agents
人工智能·学习·langchain