🚀 Bootloader 从零到一
⚡ 30章 嵌入式实战 · 友好色系
📖 完整目录 · 点击卡片跳转章节
01
Bootloader概述
概念
什么是Bootloader · 角色 · U-Boot/Barebox/RedBoot对比
↗
02
嵌入式系统启动流程
核心
CPU复位 · ROM代码 · SPL · 二级Bootloader · OS启动
↗
03
开发环境搭建
工具链
交叉编译 · Makefile · 链接脚本(.lds) · J-Link/ST-Link
↗
04
ARM Cortex-M启动详解
底层
中断向量表 · 堆栈初始化 · C运行时 · BSS/数据段 · main
↗
05
链接脚本深入
内存布局
段放置(.text/.data/.bss) · PIC · 符号表与地址绑定
↗
06
汇编基础与启动代码
指令集
ARM/Thumb · 汇编与C混合 · Reset_Handler · 时钟初始化
↗
07
串口驱动开发 (UART)
通信
UART协议 · 轮询/中断 · 环形缓冲区 · 波特率配置
↗
08
Flash驱动开发
存储
NOR/NAND · SPI Flash · 读写擦除 · 磨损均衡
↗
09
内存初始化 (DDR/SDRAM)
DDR
DDR控制器 · 时序参数 · March C+测试 · ECC校验
↗
10
时钟系统配置
PLL
PLL锁相环 · 时钟树 · 分频倍频 · 动态调频
↗
11
GPIO与LED点灯
基础
GPIO寄存器 · 位带操作 · 调试指示灯 · PWM呼吸灯
↗
12
定时器与延时
时间
SysTick · 硬件定时器 · 精准延时 · 看门狗
↗
13
中断系统深入
NVIC
NVIC配置 · 优先级分组 · 嵌套 · 延迟优化 · FIQ/IRQ
↗
14
设备树基础 (FDT)
DTS
DTS语法 · 编译 · 绑定匹配 · 设备树覆盖
↗
15
I2C总线驱动
总线
I2C时序 · 主从模式 · 多主机仲裁 · EEPROM读写
↗
16
SPI总线驱动
总线
SPI模式 · 片选管理 · DMA传输 · Flash读写
↗
17
网络启动基础 (TFTP)
网络
以太网PHY · MAC驱动 · UDP精简 · TFTP客户端
↗
18
文件系统支持
存储
JFFS2/UBIFS · RAMFS · initramfs · 挂载
↗
19
镜像格式与校验
安全
ELF解析 · 二进制镜像 · CRC32 · SHA256签名
↗
20
启动参数传递
对接
ATAG列表 · 设备树 · 内核命令行 · 内存布局信息
↗
21
多核启动 (SMP)
多核
核间中断IPI · 核启动流程 · 缓存一致性 · 内存屏障
↗
22
安全启动 (Secure Boot)
安全
信任根RoT · 签名链 · AES/RSA · 防回滚
↗
23
固件更新机制
OTA
A/B系统 · 增量更新 · 断点续传 · 回滚策略
↗
24
电源管理
低功耗
休眠唤醒 · 时钟门控 · 电压调节 · 低功耗模式
↗
25
调试与日志系统
调试
JTAG/SWD · GDB技巧 · 日志分级 · dump机制
↗
26
性能优化
优化
启动时间 · 代码尺寸 · 内存占用 · Cache策略
↗
27
错误处理与异常
异常
HardFault/MemManage · 异常向量重定向 · 日志恢复
↗
28
Bootloader与OS对接
内核
内核参数 · 页表MMU · 跳转内核 · 设备树传递
↗
29
实战项目一:STM32简易Bootloader
项目
串口下载 · Flash编程 · 跳转执行
↗
30
实战项目二:Zynq U-Boot移植
项目
DDR初始化 · 网络启动 · Linux引导
↗