🚀 Bootloader 底层驱动开发 全流程实战

📘 30章 · 从入门到移植
01 Bootloader概述
什么是Bootloader 嵌入式角色 U-Boot/AT91/MyBoot
02 启动流程分析
上电到Bootloader 复位向量 NOR/NAND/SD卡
03 硬件初始化(汇编)
关看门狗 时钟系统 SDRAM初始化 设置栈
04 链接脚本与内存布局
.lds语法 代码/数据/BSS段 运行时地址
05 从汇编跳转到C语言
C运行环境 清BSS 堆指针 main调用约定
06 串口驱动(轮询模式)
UART原理 波特率计算 寄存器配置 收发函数
07 串口驱动(中断模式)
中断控制器 UART中断使能 环形缓冲区 ISR
08 GPIO驱动开发
GPIO框图 引脚复用 输出/输入 按键中断/LED
09 时钟驱动开发
PLL锁相环 时钟树 分频系数 动态调频
10 定时器驱动(SysTick)
SysTick寄存器 ms延时 us延时 定时中断
11 看门狗驱动开发
IWDG / WWDG 喂狗策略 防死机
12 Flash驱动(内部)
Flash控制器 扇区擦除 页编程 读写保护
13 Flash驱动(外部SPI Nor)
SPI时序 W25Qxx命令 Quad/Dual SPI
14 NAND Flash驱动
结构与坏块 ECC校验 页读写/块擦除
15 DMA驱动开发
DMA控制器 内存到外设 内存到内存 中断回调
16 存储设备分区管理
GPT/MBR 分区读写接口 坏块管理
17 文件系统移植(LittleFS)
LittleFS特性 Flash移植 目录/文件API
18 固件镜像格式设计
镜像头 Magic/CRC 签名校验 A/B分区
19 固件升级协议(YModem)
帧格式 接收状态机 发送端 超时重传
20 固件升级协议(HTTP/OTA)
lwIP移植 HTTP客户端 OTA流程
21 固件校验与安全启动
CRC32 SHA256 RSA签名 安全启动链
22 Bootloader命令行交互
解析器设计 命令注册 help/flash/boot/erase
23 环境变量管理
存储布局 键值对解析 默认/用户变量 导入导出
24 启动引导策略
启动延迟/按键 启动计数 多镜像选择 回滚
25 设备树支持(FDT)
FDT格式解析 传递给内核 Overlay
26 外设驱动抽象层
HAL/LL分层 设备对象注册 函数指针表
27 低功耗模式与唤醒
睡眠管理 唤醒源 从Bootloader低功耗
28 调试与日志系统
调试串口复用 日志等级 断言/故障处理
29 移植实战(STM32MP1)
芯片选型 时钟树 DDR初始化 SD卡启动
30 移植实战(i.MX6ULL)
启动ROM分析 DCD配置 eMMC启动 引导Linux