📘 Bootloader · 可移植性设计
📚 30 章节
⚡ 风格 · 专业内核
v2.0
🎯 从入门到实战
01
Bootloader概述
什么是Bootloader · 嵌入式角色 · U-Boot/Barebox简介
02
可移植性设计原则
硬件抽象层(HAL) · 分层设计 · 接口与实现分离
03
启动流程分析
ROM Code → SPL → U-Boot → Kernel · 各阶段职责
04
CPU架构抽象
ARM/RISC-V/MIPS差异 · 宏定义与条件编译
05
内存布局设计
链接脚本(.lds) · 可移植内存映射 · DDR初始化抽象
06
时钟与定时器抽象
系统时钟源 · 定时器驱动 · 延时函数可移植
07
串口驱动抽象
UART初始化 · HAL收发封装 · 波特率跨平台
08
存储设备抽象
NOR/NAND Flash · eMMC · SD卡驱动抽象层
09
设备树(Device Tree)基础
设备树作用 · 语法简介 · Bootloader中解析
10
设备树在可移植性中的应用
描述硬件差异 · 减少硬编码 · 驱动自动匹配
11
GPIO驱动抽象
GPIO控制接口 · 输入输出 · 中断支持抽象
12
I2C/SPI总线抽象
总线控制器驱动 · 设备访问 · 多实例支持
13
网络驱动抽象
以太网MAC/PHY · lwIP移植接口
14
USB驱动抽象
USB主机/设备 · Mass Storage · HID类
15
文件系统支持
FAT32/EXT4 · 文件路径抽象 · 从存储加载
16
映像加载与验证
多介质加载 · CRC/哈希校验 · 安全启动基础
17
命令行接口(CLI)设计
可移植Shell · 命令注册 · 参数解析
18
环境变量管理
Flash/EEPROM存储 · 读写抽象 · 默认值管理
19
错误处理与日志
统一错误码 · 调试日志 · 断言机制
20
中断管理抽象
中断控制器驱动 · 向量表设置 · 处理函数注册
21
Cache与MMU操作
Cache刷新/失效 · MMU页表 · 内存属性跨架构
22
多核启动支持
SMP启动 · 核间通信 · 同步原语
23
电源管理抽象
休眠/唤醒 · 频率调节 · 电源域控制
24
看门狗(Watchdog)驱动
初始化 · 喂狗 · 超时设置
25
RTC与时间管理
实时时钟驱动 · 时间获取/设置 · 时间戳转换
26
DMA驱动抽象
DMA控制器 · 内存到内存/外设 · 描述符链
27
硬件加速器抽象
加密引擎 · 校验和加速 · 图像处理单元
28
测试与验证方法
单元测试(Cmocka) · 硬件在环 · 持续集成
29
文档与代码规范
注释规范 · Doxygen · 版本控制策略
30
实战案例
为新板移植U-Boot · 调试技巧 · 性能优化