Bootloader 调试与异常定位
📘 30 章 · 实战技巧
v2.0
01
Bootloader基础概念
什么是Bootloader
嵌入式角色
U-Boot/Barebox/TF-A
02
启动流程剖析
上电到Bootloader
复位/异常向量表
链接脚本&内存布局
03
调试环境搭建
JTAG/SWD选型
OpenOCD配置
GDB连接目标板
04
串口调试技巧
UART初始化
波特率自适应
串口重定向GDB
05
LED与GPIO调试法
LED指示阶段
GPIO电平翻转
逻辑分析仪时序
06
内存访问异常
Data Abort定位
Prefetch Abort
MMU配置错误
07
栈回溯与调用链
栈帧结构
GDB backtrace
手动栈回溯
08
HardFault处理
Cortex-M HardFault
错误状态寄存器
故障现场恢复
09
看门狗与复位问题
看门狗超时重启
复位原因寄存器
软/硬复位区分
10
时钟配置异常
PLL锁定失败
时钟树验证
HSE/LSE起振
11
Flash编程与校验
擦写时序调试
校验和计算
ECC错误处理
12
DDR初始化问题
DDR控制器配置
时序参数调优
内存测试算法
13
设备树解析
FDT/DTB结构
设备树覆盖
调试技巧
14
外设初始化失败
GPIO复用冲突
时钟门控
外设复位状态
15
中断系统调试
向量表重定位
中断优先级
嵌套中断处理
16
DMA传输异常
描述符链调试
传输完成中断
地址对齐问题
17
USB启动模式
USB DFU协议
枚举失败分析
端点配置检查
18
网络启动(TFTP/NFS)
网络协议栈
PHY芯片调试
TFTP超时处理
19
SD卡/eMMC启动
MMC协议初始化
分区表解析
文件系统挂载
20
SPI Flash启动
SPI时序调试
四线模式配置
Flash ID读取
21
NAND Flash启动
坏块管理
ECC校验
页读取时序
22
安全启动与签名验证
签名算法调试
公钥存储
信任链建立
23
固件升级失败
完整性校验
版本兼容性
回滚机制
24
双备份启动
A/B分区切换
启动计数器
恢复出厂设置
25
日志系统设计
环形缓冲区
日志级别控制
远程日志输出
26
性能分析与优化
启动时间测量
代码执行热点
Cache命中率
27
电源管理调试
低功耗模式切换
唤醒源分析
电压调节器
28
多核启动同步
主/从核启动
核间通信
共享资源保护
29
硬件抽象层(HAL)调试
HAL与硬件交互
寄存器封装测试
抽象层性能开销
30
综合调试案例
启动失败→成功
常见问题速查
调试工具链总结