01
BSP概述与启动流程全景
什么是BSP、BSP在嵌入式系统中的角色、典型嵌入式系统启动流程(ROM Boot → SPL → U-Boot → Kernel)、启动链联调的概念与重要性。
全景概念
02
硬件初始化与时钟树配置
CPU复位行为、关键寄存器映射、PLL与时钟树配置原理、DDR控制器初始化要点、硬件初始化代码实战。
时钟DDR实战
03
ROM Code与一级Bootloader
ROM Code功能与限制、启动设备选择(NAND/eMMC/SD卡/SPI Nor)、启动头格式解析、一级Bootloader(SPL)加载机制。
ROM启动头
04
SPL(Secondary Program Loader)深度解析
SPL的作用与设计哲学、SPL代码入口与链接脚本、最小化硬件初始化、SPL如何加载U-Boot。
SPL链接脚本
05
U-Boot SPL与ATF交互
ARMv8启动流程、ATF BL1/BL2/BL31/BL32/BL33概念、SPL如何跳转到ATF、ATF如何启动U-Boot。
ATFARMv8
06
U-Boot Proper(主U-Boot)启动流程
U-Boot入口点与重定位、设备树(Device Tree)的加载与解析、U-Boot命令行初始化、自动启动与bootcmd。
重定位设备树
07
设备树(Device Tree)详解
设备树语法与结构、dts/dtsi/dtb/dtc工具链、设备树在启动链中的传递、绑定文档与驱动匹配。
dtsdtb
08
内核启动参数与ATAG/设备树传递
内核启动参数(bootargs)的构成、ATAG与设备树两种传递方式、内核如何解析启动参数、常见启动参数示例。
bootargsATAG
09
Linux内核解压与启动
内核镜像格式(zImage/Image/Image.gz)、解压过程、内核入口点与汇编启动代码、start_kernel函数调用链。
解压start_kernel
10
根文件系统挂载与init进程
rootfs概念、挂载方式(initramfs/NFS/块设备)、init进程启动、第一个用户空间程序。
rootfsinit
11
启动链联调环境搭建
硬件调试器(JTAG/SWD)连接、OpenOCD配置、GDB调试脚本编写、串口与网络控制台设置。
JTAGOpenOCD
12
串口驱动与早期调试输出
UART控制器初始化、波特率配置、putchar/getchar实现、调试串口在SPL/U-Boot/Kernel中的复用。
UART调试
13
时钟与复位调试
时钟门控与复位控制寄存器、PLL锁定状态检查、时钟输出测量、常见时钟问题定位。
时钟复位
14
DDR初始化与内存调试
DDR控制器时序参数、DDR训练与校准、内存测试算法(March C+/走步)、内存映射与MMU配置。
DDRMMU
15
存储设备驱动与启动源切换
eMMC/SD卡初始化、NAND Flash控制器、SPI Nor Flash驱动、启动设备选择与切换逻辑。
eMMCNAND
16
网络启动(PXE/TFTP/NFS)调试
以太网控制器初始化、PHY芯片配置、TFTP/NFS协议栈、网络启动常见故障。
PXETFTP
17
安全启动与签名验证
安全启动链概念、公钥/私钥体系、镜像签名与验签、OTP(One-Time Programmable)与信任根。
安全签名
18
多核启动与SMP(对称多处理)
ARM GIC(通用中断控制器)配置、CPU核释放流程、spin-table与psci方式、多核启动调试。
SMPGIC
19
电源管理与休眠唤醒
PMIC(电源管理芯片)配置、CPU频率与电压调节、休眠/唤醒流程、电源状态转换调试。
PMIC休眠
20
PCIe与高速外设初始化
PCIe控制器配置、RC(根复合体)与EP(端点)模式、链路训练与LTSSM状态机、DMA与中断配置。
PCIeLTSSM
21
USB启动与设备枚举
USB控制器初始化、OTG(On-The-Go)模式、设备枚举过程、USB启动常见问题。
USBOTG
22
显示与GPU初始化
显示控制器(Display Controller)初始化、帧缓冲(Framebuffer)配置、GPU驱动加载、开机Logo显示。
显示GPU
23
启动时间优化
启动时间测量方法、各阶段时间分布分析、并行初始化与延迟加载、快速启动技巧。
优化时间
24
启动日志分析与故障定位
日志级别与格式、关键日志信息解读、常见错误码与含义、日志分析工具。
日志故障
25
硬件断点与Trace调试
硬件断点设置、指令Trace与数据Trace、ETM(嵌入式Trace宏单元)与PTM、Trace数据分析。
TraceETM
26
内存损坏与指针错误调试
内存保护单元(MPU/MMU)配置、栈溢出检测、内存泄漏检测、Watchdog与异常处理。
MPU栈溢出
27
中断与异常处理调试
异常向量表配置、中断控制器(GIC)调试、中断嵌套与优先级、常见异常(Undef/Abort/FIQ)处理。
异常GIC
28
启动链回滚与版本管理
版本号管理策略、启动链回滚机制、A/B分区与双备份、OTA(空中升级)与启动链。
回滚A/B
29
典型启动故障案例集锦
DDR训练失败、时钟失锁、存储设备超时、网络启动超时、安全验签失败。
案例故障
30
启动链联调实战项目
从零搭建一个最小启动链、SPL+U-Boot+Kernel+rootfs联调、常见问题排查演练、项目总结与最佳实践。
实战项目