再探ARMimxu6ll

一、ARM体系结构

ARM 体系结构 的核心概念、硬件组成、指令集架构(ISA)、内存管理以及运行机制。下面我将结合图示内容,系统性地为你讲解 ARM 体系结构的各个方面。


🌐 一、ARM 概述

✅ ARM 是什么?

  • ARM (Advanced RISC Machines)是一种基于 RISC(精简指令集计算机) 架构的处理器设计。
  • 它不是一家公司生产的芯片,而是一套技术授权,由 ARM 公司设计并授权给其他厂商(如高通、苹果、华为等)使用。
  • 广泛应用于手机、嵌入式设备、物联网、服务器等领域。

图中提到:ARM: ARMI~ARM11, Cortex-A, Cortex-R, Cortex-M

这说明了 ARM 不同系列的演进:

  • ARM1~ARM11:早期经典架构
  • Cortex-A:应用处理器(如智能手机)
  • Cortex-R:实时控制(汽车、工业)
  • Cortex-M:微控制器(MCU)

🔧 二、计算机系统基本构成

图中展示了通用计算机系统的层次结构:

复制代码
应用层 APP
操作系统 SYS
硬件系统

硬件系统包括:

  • 运算器(ALU)
  • 控制器
  • 存储器(内存/外存)
  • 输入设备
  • 输出设备

这是典型的冯·诺依曼结构。


⚙️ 三、CPU 与 SoC 架构

1. CPU 核心组件

  • CPU(Central Processing Unit):中央处理单元,负责执行指令。
  • GPU(Graphics Processing Unit):图形处理单元,用于图像渲染。
  • FPU(Float Processing Unit):浮点运算单元,处理小数计算。
  • MPU/MCU
    • MPU(Micro Processing Unit):微型处理器,用于复杂任务。
    • MCU(Micro Control Unit):微控制器,集成度高,常用于嵌入式系统。
  • DSP(Digital Signal Processor):数字信号处理器,专为高速数学运算优化。
  • SOC(System On Chip):系统级芯片,把 CPU、GPU、内存、外设等都集成在一个芯片上。

图中强调:SoC 就像一个"城市",各种功能模块(政府、警察局、研究所)都在同一块"土地"上协同工作。


💾 四、存储器类型

类型 特点
RAM(Random Access Memory) 随机访问存储器,可读写,速度快,断电丢失数据
ROM(Read-only Memory) 只读存储器,不可修改或只能部分修改,用于存放固件

图中指出:

  • RAM:易失性、价格贵、速度快、可直接寻址
  • ROM:非易失性、价格便宜、速度慢、一般不能直接寻址

🧠 五、ARM 内核与指令集

1. 指令集架构(ISA)

  • CISC:复杂指令集(如 x86),一条指令完成多个操作。
  • RISC:精简指令集(如 ARM),每条指令简单高效。

图中明确标注:ARM 属于 RISC 架构

2. ARM 指令集发展

  • ARMv4 ~ ARMv9:不同版本的指令集架构。
  • 当前主流:ARMv8-A(AArch64)和 ARMv9
  • 支持 32位(AArch32)和 64位(AArch64)模式

图中标注:kernal: x86 ARM MIPS RISC V 表明现代系统支持多种架构。


🧩 六、寄存器与内存模型

1. 寄存器(Registers)

ARM 处理器有多个通用寄存器:

寄存器 功能
R0-R15 通用寄存器
R13 (sp) 堆栈指针(Stack Pointer)
R14 (lr) 链接寄存器(Link Register),保存返回地址
R15 (pc) 程序计数器(Program Counter),指向下一条指令

图中显示:

  • R0=100, R1=200, R2=300
  • R13(sp)=0x1204, R15(pc)=0x1204

2. 状态寄存器

  • CPSR (Current Program Status Register):当前程序状态寄存器
    • 存储标志位(如 Z, N, C, V)和处理器模式(用户/内核)
  • SPSR(Saved Program Status Register):备份状态寄存器,在异常时保存 CPSR

3. MMU(Memory Management Unit)

  • 负责虚拟内存到物理内存的映射。
  • 实现内存保护、分页机制。
  • 图中显示:MMU 关闭 → 虚拟内存 = 物理内存
    • 如:虚拟地址 0x1000 映射到物理地址 0x1200

虚拟内存:逻辑地址空间

物理内存:实际硬件内存


🔄 七、流水线与执行流程

1. 三级流水线(Three-stage Pipeline)

ARM 使用经典的三级流水线:

复制代码
预取(Fetch) → 译码(Decode) → 执行(Execute)

图中用方框表示:

复制代码
[预取][译码][执行]
       ↓     ↓     ↓
[预取][译码][执行]
             ↓     ↓     ↓
            [预取][译码][执行]

这种结构可以提高吞吐率,实现指令并行执行


2. 多总线结构

  • APB(Advanced Peripheral Bus):连接低速外设(如 GPIO、UART)
  • AHB(Advanced High-performance Bus):连接高速外设(如内存、DMA)

图中展示:kernal ←→ GPIO ←→ UART ←→ ... 通过 APB 总线通信


🖥️ 八、内存布局与启动过程

1. 内存布局(Memory Layout)

地址范围 区域 用途
0x0000 0000 代码段 存放程序代码
0xFFFF FFFF 启动区(Boot) Uboot 或 bootloader 开始执行位置
0x1200 物理内存 实际可用内存
Nor Flash 固件存储 存放操作系统镜像

图中显示:Uboot0xFFFF FFFF 开始加载,然后跳转到 0x1200 执行。


2. 函数调用与栈结构

示例代码:
复制代码
int fun1(a, b) {
    if (a > b)
        return a;
}
栈结构(Stack Frame):
  • 栈顶:最新压入的数据
  • 栈底 :固定基地址(通常由 sp 指向)
  • 函数调用时
    • 保存 lr(返回地址)
    • 分配局部变量空间
    • 执行函数体
    • 返回前恢复 sp

图中展示了 main() 调用 fun1() 时的栈变化。


🧱 九、SoC 组件示意图

图中右侧展示了一个典型的 ARM SoC 结构

复制代码
+-------------------+
|   kernal          |
+-------------------+
|   GPIO            |
|   PWM             |
|   UART            |
|   磁盘控制器      |
+-------------------+
         ↓
       SOC
         ↓
+-------------------+
|   RAM             |
|   ROM             |
+-------------------+
  • 所有外设通过 APB/AHB 总线 连接到 CPU 和内存。
  • 外设通过 GPIO、UART、PWM 等接口与外部世界交互。

🎯 十、总结:ARM 体系结构要点

模块 关键点
架构类型 RISC,精简指令集
核心组件 CPU、GPU、FPU、MMU、SOC
存储器 RAM(快但易失)、ROM(慢但持久)
寄存器 R0-R15、sp、lr、pc、CPSR、SPSR
内存管理 MMU 支持虚拟内存
流水线 三级流水线提升效率
总线 AHB(高速)、APB(低速)
启动流程 Uboot → 加载内核 → 启动应用
应用场景 移动端、嵌入式、IoT、服务器

✅ 附加知识拓展

1. ARM Cortex 系列对比

类型 用途 示例
Cortex-A 应用处理器 手机、平板
Cortex-R 实时控制 汽车安全系统
Cortex-M 微控制器 传感器、家电

图中提到:AMR 内核: Cortex-A7 V7,说明这是基于 ARMv7 的 Cortex-A7 架构。

2. 开发板信息

  • 开发板 : mx6ull-mini
  • SoC : iMX6ULL
  • 内核 : Cortex-A7

这是一款典型的嵌入式开发平台,适合学习 Linux 驱动开发、裸机编程等。


📚 结语

这张图全面覆盖了 ARM 体系结构的核心知识点,从底层硬件到高级软件运行机制都有体现。理解这些内容,有助于你深入掌握:

  • 嵌入式系统开发
  • 操作系统原理
  • 驱动程序编写
  • 嵌入式 Linux 系统调试

二、汇编

相关推荐
2401_859049088 小时前
lvgl移植到Linux踩坑
linux·运维·arm开发·elasticsearch·嵌入式·ubantu
s090713611 小时前
基于ZYNQ-7000 ARM端的水声声呐图像压缩方案
arm开发·zynq·图像压缩·水声工程
飞易通21 小时前
WIFI6 SOC模块介绍解析
arm开发·wifi模块·soc模块
松涛和鸣1 天前
DAY66 SPI Driver for ADXL345 Accelerometer
linux·网络·arm开发·数据库·驱动开发
代码游侠1 天前
学习笔记——LCD技术详解
arm开发·笔记·嵌入式硬件·学习·架构
切糕师学AI1 天前
ARM汇编器与GNU汇编器:详细介绍与核心区别
arm开发·gnu·汇编器
CQ_YM1 天前
ARM之lcd与pwm
arm开发·单片机·嵌入式硬件·arm
梁洪飞2 天前
解决摄像头驱动起不来的情况
linux·arm开发·图像处理·嵌入式硬件·arm
lysine_2 天前
实现ubuntu两个网口桥接
linux·服务器·网络·arm开发·ubuntu