ARM体系结构入门笔记(Day1)
今天把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程序,下载到开发板里跑。
中断向量表:本质是数组,里面存放每个中断服务函数的入口地址。
异常向量表:同理,数组里存放跳转到异常处理函数的指令。
冯·诺依曼架构:数据和指令共享同一块存储空间。
都是入门必须吃透的基础概念,先整理到这。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)