🚀 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 支持串口下载与跳转 · 完整实现