嵌入式学习笔记——ARM

ARM 的工作模式

ARM 处理器具有 7 种工作模式,其中 1 种用户模式和 6 种特权模式。特权模式可以访问系统资源,而用户模式只能运行普通应用程序。


1. 用户模式(USR)

用途:运行普通用户程序,没有权限访问系统资源,也无法直接切换到其他模式。
特点

  • 运行在 用户态,受限于操作系统。
  • 无法直接访问硬件资源。
  • 只能通过 软中断(SWI)或异常 进入特权模式。

2. 系统模式(SYS)

用途:操作系统使用的一种特权模式,和用户模式共享相同的寄存器,但权限更高。
特点

  • 具备 完全的系统权限,可以访问所有硬件资源。
  • 与用户模式共用寄存器,但 比用户模式权限更高
  • 适用于 操作系统内核 运行时。

3. 一般中断模式(IRQ)

用途:用于处理 普通硬件中断,比如键盘、定时器等触发的中断。
特点

  • 发生 外部中断 时,自动进入该模式。
  • 是一种 特权模式,可以访问系统资源。
  • 需要保存寄存器状态,以便中断处理完成后恢复。

4. 快速中断模式(FIQ)

用途:处理 高优先级、低延迟的中断,如高速数据传输。
特点

  • 比 IRQ 模式更快,适用于时间敏感任务。
  • 额外提供 专用寄存器(R8-R14),减少保存和恢复寄存器的开销。
  • 优先级最高,可以屏蔽普通 IRQ 中断。

5. 管理模式(SVC)

用途CPU 上电后的默认模式,用于系统初始化和处理 软件中断(SWI)。
特点

  • 系统复位(开机)或 软中断 时,CPU 进入 SVC 模式。
  • 具有完整的 特权访问权限,可以管理所有资源。
  • 适用于 操作系统调用(系统 API)

6. 终止模式(ABT)

用途:当程序访问非法内存地址时,会进入 终止模式,通常用于支持 虚拟内存存储保护
特点

  • 程序异常(如访问非法地址)时触发
  • 在 Linux 系统中,如果程序崩溃导致 Segment Fault(段错误),通常就是进入了 ABT 模式。

7. 未定义模式(UND)

用途:用于处理 CPU 无法识别的指令,通常用于仿真未实现的协处理器指令。
特点

  • CPU 遇到 未知指令 时,进入该模式。
  • 主要用于 指令模拟或软件仿真

特权模式与异常模式

  • 特权模式:指除 用户模式(USR) 之外的 6 种模式,具备更高的权限。
  • 异常模式:特权模式中 不包括系统模式(SYS) 的 5 种模式(IRQ、FIQ、SVC、ABT、UND)。

特权模式可以执行特殊指令,如:

  • MRS(将状态寄存器内容存入通用寄存器)。
  • MSR(将通用寄存器的内容写入状态寄存器)。

总结

模式名称类型作用
用户模式(USR)用户模式运行用户程序,无特权
系统模式(SYS)特权模式OS 运行模式,可访问系统资源
一般中断模式(IRQ)特权模式处理普通硬件中断
快速中断模式(FIQ)特权模式处理高优先级、低延迟的中断
管理模式(SVC)特权模式CPU 启动后的默认模式,处理软中断
终止模式(ABT)特权模式访问非法地址或存储异常时触发
未定义模式(UND)特权模式执行未识别的指令时触发

ARM 处理器 37 个 32 位寄存器详解

ARM 处理器共有 37 个 32 位寄存器,可分为 通用寄存器(31 个)状态寄存器(6 个)。以下是详细分类及用途说明。


1. 通用寄存器(31 个)

寄存器名称数量用途
R0-R12通用寄存器13用于存储数据、运算、函数参数等
R13SP(Stack Pointer,堆栈指针)1指向当前 堆栈顶,用于函数调用和中断
R14LR(Link Register,链接寄存器)1存储函数返回地址,用于子程序跳转
R15PC(Program Counter,程序计数器)1指向当前执行的指令,每次指令执行后自动更新
R8-R14(FIQ 模式专有)FIQ 模式专用寄存器7FIQ 模式独立寄存器,用于快速中断处理,避免保存恢复通用寄存器的开销
R13(SP) & R14(LR)(其他模式)各模式独立的 SP 和 LR8除用户模式外,其他模式各自拥有独立的 SP 和 LR,防止模式切换时数据丢失

🔹 说明:

  • FIQ 模式(快速中断模式) 具有 R8-R14 专用寄存器,用于提高中断处理速度。
  • 不同模式(如 SVC、IRQ、ABT 等) 具有独立的 SP(R13)和 LR(R14),以便模式切换时保存寄存器状态。

2. 状态寄存器(6 个)

寄存器名称数量用途
CPSR当前程序状态寄存器(Current Program Status Register)1保存 CPU 当前状态(标志位、模式控制、中断使能等)
SPSR(FIQ)快速中断模式的已保存状态寄存器1当 FIQ 模式发生异常时,存储 CPSR 以便恢复
SPSR(IRQ)一般中断模式的已保存状态寄存器1当 IRQ 模式发生异常时,存储 CPSR 以便恢复
SPSR(SVC)管理模式的已保存状态寄存器1进入 SVC 模式(软中断)时保存 CPSR
SPSR(ABT)终止模式的已保存状态寄存器1发生存储器访问异常时保存 CPSR
SPSR(UND)未定义模式的已保存状态寄存器1执行未识别指令时保存 CPSR

🔹 说明:

  • CPSR(当前程序状态寄存器):用于存储 CPU 当前状态,如:
    • N(负数标志)
    • Z(零标志)
    • C(进位标志)
    • V(溢出标志)
    • I(IRQ 禁用标志)
    • F(FIQ 禁用标志)
    • M(模式位)(指示当前 CPU 运行模式)
  • SPSR(已保存状态寄存器) 仅在特权模式(如 FIQ、IRQ、SVC、ABT、UND)下可用,用于 异常恢复

3. 37 个寄存器汇总

寄存器类型数量详细分类
通用寄存器31R0-R12(13 个),SP(R13),LR(R14),PC(R15),各模式专有寄存器(FIQ R8-R14,共 7 个),各模式独立 SP & LR(8 个)
状态寄存器61 个 CPSR,5 个 SPSR(FIQ、IRQ、SVC、ABT、UND 模式各 1 个)

总结

  1. ARM 处理器共有 37 个 32 位寄存器,分为:
    • 通用寄存器 31 个
    • 状态寄存器 6 个
  2. 通用寄存器
    • R0-R12:基本数据处理
    • SP(R13):堆栈指针
    • LR(R14):链接寄存器(存储函数返回地址)
    • PC(R15):程序计数器
    • FIQ 专用 R8-R14(提高中断速度)
    • 不同模式下的 SP 和 LR(防止模式切换时丢失数据)
  3. 状态寄存器
    • CPSR(当前状态寄存器)
    • 5 个 SPSR(各模式保存的状态寄存器)

S3C2440 与 S3C6410 主要区别对比

S3C2440 和 S3C6410 都是三星(Samsung)推出的 ARM 处理器,但它们在 主频、架构、扩展接口、存储控制、图形处理、启动方式 等方面存在显著区别。以下是详细对比表格:


1. 基本参数对比

参数S3C2440S3C6410区别
CPU 内核ARM920TARM1176ZJF6410 采用更新的 ARM11 内核,性能更强
主频400MHz533/667MHz6410 频率更高,处理能力更强
架构单总线双总线(内存总线 + Flash 总线)6410 采用双总线,提高数据吞吐量

2. 存储与内存控制

参数S3C2440S3C6410区别
内存控制器SDRAMDDR6410 采用 DDR,速度更快、功耗更低
NAND Flash 支持SLCSLC + MLC6410 支持 MLC,存储容量更大
启动方式NOR / NAND FlashSD / NAND / NOR / OneFlash6410 启动方式更灵活

3. 多媒体处理

功能S3C2440S3C6410区别
视频解码支持 MPEG4、H.264、WMV9、Xvid 硬解码6410 内置视频解码器,支持更多格式
图形处理2D支持 2D / 3D 加速6410 具备 3D 硬件加速,适合图形应用

4. 外设与接口

接口类型S3C2440S3C6410区别
扩展接口TV-out、串口、SPI、SDTV-out、S-Video、CF卡6410 具备更多 扩展接口
DMA 通道4 路8 路(LCD、UART、Camera 专用)6410 DMA 通道更多,数据传输更高效
SPI / UART / SD 支持普通更丰富6410 提供 更多 SPI、串口、SD 接口

5. 适用场景

应用方向S3C2440S3C6410
嵌入式设备
多媒体播放✅(硬件解码更强)
智能终端✅(3D 图形处理更优)
工业控制
高性能应用

总结

  1. S3C6410 处理器性能更强

    • CPU 频率提升(400MHz → 533/667MHz)
    • ARM920T → ARM1176ZJF,架构升级
    • 双总线架构 提高数据吞吐能力
  2. 存储与启动方式更灵活

    • SDRAM → DDR,存取速度更快
    • 支持 SLC + MLC NAND Flash,存储容量更大
    • 支持 SD / NAND / NOR / OneFlash 启动
  3. 多媒体处理能力提升

    • 支持 H.264、MPEG4、WMV9、Xvid 硬解码
    • 支持 2D / 3D 图形加速
    • 适用于 视频播放、智能终端
  4. 外设接口更丰富

    • 增加 S-Video、CF 卡接口
    • SPI、UART、SD 接口更丰富
    • 8 路 DMA(LCD、UART、Camera 专用)

➡ 结论:
S3C2440 适用于低功耗嵌入式设备,S3C6410 适用于高性能多媒体终端和智能设备。

ARM 指令集分类

ARM 指令集主要分为 两类

  1. ARM 指令集(32 位)
  2. Thumb 指令集(16 位)

这种设计使得 ARM 处理器既可以执行 16 位指令(Thumb),也可以执行 32 位指令(ARM),从而在 代码密度、功耗和性能 之间取得平衡。


1. ARM 指令集

  • 指令长度32 位
  • 特点
    • 指令结构规整,性能更高
    • 提供更丰富的 寄存器访问指令种类
    • 适用于高性能计算场景
  • 优点
    • 执行效率高(完整的 32 位操作)
    • 支持条件执行(避免不必要的分支跳转,提高流水线效率)
  • 缺点
    • 代码体积较大,占用更多存储空间
  • 适用场景
    • 高性能计算、操作系统、复杂计算任务

2. Thumb 指令集

  • 指令长度16 位
  • 特点
    • 指令长度缩短,代码更紧凑
    • 只有 一部分 ARM 指令 能转换为 Thumb 指令
    • 适用于资源受限的嵌入式系统
  • 优点
    • 代码密度更高(减少存储空间占用)
    • 降低功耗
    • 存储和带宽受限 的情况下提高指令吞吐量
  • 缺点
    • 指令功能受限(部分复杂操作需要额外指令完成)
    • 部分运算需要多条指令才能实现,导致性能下降
  • 适用场景
    • 嵌入式系统、低功耗应用

3. ARM 与 Thumb 的对比

对比项ARM 指令集Thumb 指令集
指令长度32 位16 位
代码密度(减少存储占用)
执行效率(单条指令更强大)较低(部分操作需要多条指令完成)
指令集完整(支持所有 ARM 指令)部分 ARM 指令的子集
功耗较高较低
适用场景高性能计算嵌入式、低功耗设备

ARM 协处理器指令的分类及功能

ARM 处理器支持 协处理器(Coprocessor),用于扩展处理能力,如 浮点运算、加密、安全、DSP 处理 等。ARM 处理器与协处理器通过 MCR、MRC、CDP、LDC、STC 等指令进行通信。

ARM 协处理器指令主要分为以下 3 类


1. 数据处理指令(CDP 指令)

功能

  • ARM 处理器协处理器 之间进行 数据计算初始化协处理器
  • 主要用于 浮点计算、DSP 运算 等任务。

指令格式

CDP pN, opcode1, CRd, CRn, CRm, opcode2
  • pN:协处理器编号
  • opcode1 & opcode2:操作码,定义具体操作
  • CRd, CRn, CRm:协处理器寄存器

示例

CDP p2, 0, CR0, CR1, CR2, 0   ; 在 p2 号协处理器中进行数据运算

应用场景

  • 浮点运算(如 ARM 的 VFP 协处理器)
  • 数字信号处理(如 ARM 的 DSP 协处理器)

2. 处理器与协处理器之间的数据传送指令(MCR/MRC 指令)

功能

  • 负责 ARM 处理器寄存器协处理器寄存器 之间的数据交换。
  • ARM 处理器可以读取或写入协处理器的寄存器,实现参数传递或数据交换。

指令格式

MCR pN, opcode1, Rd, CRn, CRm, opcode2  ; ARM → 协处理器
MRC pN, opcode1, Rd, CRn, CRm, opcode2  ; 协处理器 → ARM
  • MCR(Move to Coprocessor Register):将 ARM 处理器的寄存器值 传送到 协处理器寄存器
  • MRC(Move from Coprocessor Register):将 协处理器寄存器值 传送到 ARM 处理器寄存器

示例

MCR p2, 0, r0, CR1, CR2, 0   ; 传送 r0 到协处理器 p2 的 CR1
MRC p2, 0, r1, CR3, CR4, 0   ; 读取协处理器 p2 的 CR3 到 r1

应用场景

  • 写入/读取 浮点寄存器(如 VFP 协处理器)
  • 加密/解密 操作(如 TrustZone 安全协处理器)
  • 系统控制(如 MMU、Cache 控制)

3. 协处理器与存储器之间的数据传送指令(LDC/STC 指令)

功能

  • LDC(Load from Memory to Coprocessor):将数据从内存加载到协处理器寄存器
  • STC(Store from Coprocessor to Memory):将数据从协处理器寄存器存储到内存

指令格式

LDC pN, CRd, [Rn, #offset]  ; 从内存读取数据到协处理器
STC pN, CRd, [Rn, #offset]  ; 从协处理器存储数据到内存
  • pN:协处理器编号
  • CRd:协处理器寄存器
  • [Rn, #offset]:内存地址

示例

LDC p2, CR0, [r3, #4]   ; 从内存地址 r3 + 4 处加载数据到 p2 的 CR0
STC p2, CR1, [r4, #8]   ; 将 p2 的 CR1 存储到内存地址 r4 + 8 处

应用场景

  • 传输 大块数据 到协处理器(如 音视频解码
  • 存储计算结果(如 浮点运算结果存储到 RAM

总结

指令类型指令功能应用场景
数据处理CDP在协处理器内部执行计算浮点运算、DSP 计算
处理器 ↔ 协处理器MCR/MRCARM 处理器协处理器 之间的 数据交换参数传递、寄存器访问
协处理器 ↔ 内存LDC/STC内存协处理器寄存器 之间的数据传输数据存储、浮点计算

锁相环(PLL, Phase-Locked Loop)简介

锁相环(Phase-Locked Loop,简称 PLL)是一种自动控制系统,用于 使输出信号的相位与输入信号的相位保持一致

1. PLL 的基本概念

简单来说,PLL 主要用于生成与输入信号同步的输出信号,但其频率可以是输入信号的整数倍、分数倍,或者相同。

举个例子

  • 参考时钟(晶振)频率为 10MHz
  • 通过 PLL 频率合成器,可以生成 900MHz1GHz 时钟信号。
  • 这两个信号虽然频率不同,但因为使用相同的参考时钟,它们仍然是同源信号,不会产生频率漂移。

2. PLL 的基本组成

锁相环主要由以下 4 个核心部分 组成:

组件功能
相位检测器(Phase Detector, PD)比较输入信号与 VCO 输出信号的相位差,并生成误差信号。
环路滤波器(Loop Filter, LF)滤除高频噪声,使误差信号平滑,提供稳定的控制电压。
压控振荡器(Voltage-Controlled Oscillator, VCO)受控于误差信号,调整输出信号的频率,使其逐渐与输入信号同步。
反馈路径(Feedback Path)通过分频器(或倍频器)调整 VCO 输出信号,使其满足系统要求。

3. PLL 的工作过程

  1. 初始状态

    • 假设输入信号与 VCO 输出信号的相位不一致,相位检测器(PD)会检测到相位差并输出误差信号。
  2. 误差信号处理

    • 误差信号通过环路滤波器(LF),滤除高频噪声,使误差信号更稳定。
  3. 调整输出频率

    • 误差信号控制压控振荡器(VCO),使其输出信号逐渐调整到与输入信号同步。
  4. 锁定状态(Locked State)

    • 当 VCO 输出信号的相位与输入信号完全一致,PLL 达到锁定状态,此时:
      • 误差信号趋于
      • 控制电压保持 稳定
      • VCO 稳定输出同步的信号

4. PLL 的框图

 输入信号    
    │    
    ▼
[相位检测器] ───► [环路滤波器] ───► [压控振荡器] ───► 输出信号    
     ▲                                                                  │
     │                                                                  │
     └────────[反馈]──────────────────┘

5. PLL 的应用

锁相环技术广泛用于以下领域:

  • 时钟合成:提供高精度时钟,如 CPU、GPU、DDR 存储器 的时钟信号。
  • 频率合成:产生多种不同频率的信号,如 无线通信、射频调制 等。
  • 数据恢复:如 硬盘、光盘读取数据 时,PLL 用于数据同步。
  • 无线通信:在 AM/FM 调制解调、锁定信号相位 等方面有关键作用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tt555555555555

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值