[Linux外设驱动详解]RK3588 Linux 启动流程与 MMU/Cache/TLB 初始化详解

RK3588 Linux 启动流程与 MMU/Cache/TLB 初始化详解

文档概述

本文档详细分析瑞芯微 RK3588 平台上 Linux 系统从上电到内核完全运行的完整启动流程,重点关注 MMU(内存管理单元)、Cache(缓存)和 TLB(转换后备缓冲器)的初始化时机和机制。

目标读者:嵌入式 Linux 初学者、系统开发者

硬件平台:瑞芯微 RK3588 (ARMv8-A 架构,4x Cortex-A76 + 4x Cortex-A55)


目录

  1. 基础知识
  2. 系统启动总览
  3. U-Boot 启动流程
  4. Linux 内核启动流程
  5. MMU/Cache/TLB 初始化详解
  6. 关键时序图
  7. 源码索引

1. 基础知识

1.1 核心概念解释

术语 英文 简单解释
MMU Memory Management Unit 内存管理单元,负责虚拟地址到物理地址的转换
Cache Cache 高速缓存,用于加速 CPU 访问内存的速度
TLB Translation Lookaside Buffer 转换后备缓冲器,用于缓存页表转换结果,加速地址转换
EL Exception Level ARMv8 的异常级别(EL0-EL3),类似特权级
SCTLR System Control Register 系统控制寄存器,控制 MMU、Cache 等功能

1.2 ARMv8 异常级别

┌─────────────────────────────────────────────────────┐
│  EL3 (Secure Monitor) - 最高特权级,通常运行 ATF    │
├─────────────────────────────────────────────────────┤
│  EL2 (Hypervisor) - 虚拟化支持                      │
├─────────────────────────────────────────────────────┤
│  EL1 (OS Kernel) - Linux 内核运行级别               │
├─────────────────────────────────────────────────────┤
│  EL0 (Applications) - 用户应用程序                  │
└─────────────────────────────────────────────────────┘

2. 系统启动总览

2.1 完整启动流程图

┌──────────┐    ┌──────────┐    ┌──────────┐    ┌──────────┐
│  上电    │ -> │ ROM Code │ -> │  BL31    │ -> │  U-Boot  │
│  Reset   │    │ (MaskROM)│    │  (ATF)   │    │  (SPL)   │
└──────────┘    └──────────┘    └──────────┘    └──────────┘
                                                      │
                                                      v
                                              ┌──────────────┐
                                              │  U-Boot     │
                                              │  (TPL)       │
                                              │  DDR Init    │
                                              └──────────────┘
                                                      │
                                                      v
                                              ┌──────────────┐
                                              │  Linux       │
                                              │  Kernel      │
                                              └──────────────┘

2.2 启动阶段时序

000 000 000 000 000 000 000 000 000 000 000 000 000 000 ROM Code初始化 BL31/BL32初始化 SPL (TSP)初始化 DDR初始化 U-Boot主程序 内核解压 MMU/Cache启用 内核初始化 ROM阶段 ATF阶段 U-Boot阶段 Kernel阶段 RK3588 系统启动时序

3. U-Boot 启动流程

3.1 U-Boot 启动阶段划分

U-Boot 启动分为三个主要阶段:

阶段 名称 文件 作用
SPL Secondary Program Loader spl/ 最小化启动,初始化 DDR
TPL Tertiary Program Loader tpl/ (可选)额外的加载阶段
主程序 Main U-Boot</
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

JustaUncle

一杯咖啡,换我肝到天亮!

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

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

打赏作者

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

抵扣说明:

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

余额充值