🚀 Bootloader · 启动硬核实战
🎯 30 章 从零到精通
📘 目录导航 · 点击卡片跳转对应章节
🧩 ARM / RISC-V / x86
⚡ U-Boot · 裸机 · 安全启动
01
Bootloader 概述
什么是Bootloader · 作用 · U-Boot/Barebox对比
02
嵌入式系统启动流程
CPU复位 · 启动模式 · NOR/NAND/SD/eMMC
03
ARM Cortex-M 启动流程
向量表 · 复位向量 · 堆栈初始化 → main
04
ARM Cortex-A 启动流程
异常向量表 · SVC · MMU/Cache · 跳转Linux
05
RISC-V 启动流程
复位向量 · M/S模式切换 · 设备树传递
06
x86 启动流程
BIOS/UEFI · MBR/GPT · 引导扇区 · GRUB2
07
链接脚本 (Linker Script) 详解
内存布局 · .text/.data/.bss · 符号表
08
汇编启动代码 (Startup.S)
复位处理 · 时钟初始化 · 关键外设使能
09
C语言运行环境搭建
BSS清零 · 数据段重定位 · 堆栈指针设置
10
时钟系统初始化
PLL配置 · 分频系数 · 时钟树(STM32)
11
DDR/SDRAM 初始化
时序参数 · 控制器配置 · 内存测试
12
Flash 控制器初始化
NOR读写 · NAND ECC · SPI Flash驱动
13
串口(UART)初始化与调试输出
波特率 · 中断 · printf重定向
14
GPIO 与 LED 点灯
GPIO模式 · 输出控制 · Bootloader状态指示
15
定时器 (Timer) 初始化
系统滴答 · 延时函数 · 超时机制
16
中断控制器 (GIC/NVIC) 初始化
向量表重定位 · 优先级分组 · 中断使能
17
看门狗 (Watchdog) 处理
喂狗时机 · 防止复位 · 调试禁用
18
设备树 (Device Tree) 解析
FDT格式 · Flattened · API调用
19
镜像加载与校验
ELF/BIN/HEX · CRC32 · 签名验证
20
内存映射与 MMU 配置
页表创建 · TLB刷新 · Cache策略
21
多核启动 (SMP)
主核与从核 · spin table · PSCI
22
USB 设备初始化
控制器枚举 · Mass Storage · OTG
23
网络启动 (TFTP/NFS)
网卡驱动 · IP协议栈 · 文件传输
24
存储设备驱动 (SD/eMMC)
SD协议 · CMD/Data线 · DMA传输
25
显示初始化 (LCD/HDMI)
帧缓冲 · 时序参数 · Logo显示
26
安全启动 (Secure Boot)
信任链 · 签名验证 · OTP/efuse
27
Bootloader 与操作系统交接
ATAG/DTB · 内核启动地址 · CPU模式切换
28
调试技巧
JTAG/SWD · 串口日志 · 内存dump分析
29
常见问题与避坑
启动失败 · 时序问题 · 内存初始化失败
30
实战项目:从零编写简易Bootloader
支持串口下载与跳转 · 完整实现