QSDK系统启动流程

Gryphon Lv3

QSDK系统启动流程

QSDK系统启动流程大致如下图,其中bootipq命令可以进行拆分,拆分为多个命令,可以参见uboot启动kernel章节。

image.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
flowchart TB
A[Power On] --> B[BootROM 运行]
B --> C{检测 Bootstrap 引脚}
C -->|成功| D[确定启动介质类型<br>eMMC/SPI/NAND/USB]
C -->|失败| H[Hang: 无法识别启动介质]

D --> E[从启动介质加载 SBL 到 SRAM]
E -->|加载失败| H
E -->|成功| F[SBL 运行]
F --> G{解析 CDT<br>Configuration Data Table}
G -->|成功| I[初始化 DDR 并设定 machid]
G -->|失败| H

I -->|DDR 初始化成功| K[加载 u-boot 到 DDR]
I -->|DDR 初始化失败| H

K -->|加载失败| H
K -->|加载成功| L[u-boot 运行]
L --> M[u-boot 解析 mibib 并调用 bootipq]
M --> N{根据 machid<br>加载 FIT 镜像}
N -->|加载成功| O[启动内核]
N -->|加载失败| H

H[Hang: 系统死机<br>No further execution]

bootrom启动到uboot

板子上电后,cpu内置rom中的程序(bootrom)会根据bootstrap引脚状态判断启动介质,然后从启动介质中一点一点搬sbl的代码,并调准运行sbl。sbl会解析cdt与mibib分区表,其中cdt主要用于确定machid与初始化ddr配置的相关配置,mibib为分区表,sbl通过分区表获取到uboot在flash中的存储位置,若以上流程均无误,则系统可以成功启动到uboot。

uboot启动kernel

  • Title: QSDK系统启动流程
  • Author: Gryphon
  • Created at : 2025-10-13 08:46:43
  • Updated at : 2025-10-13 08:46:43
  • Link: https://phoenixs.gitlab.io/2025/10/13/QCA开发笔记/000.qsdk系统启动流程/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments