📘 SoC启动 · 固件开发
全解析 · 30章
🧩
30个模块
⚡
从复位到实战
🎯
ARM & RISC-V
📁
点击目录跳转章节
01
SoC概述与架构基础
SoC定义、ARM Cortex-M/A · RISC-V、AHB/APB/AXI总线、常见外设IP
02
启动流程概览
复位到Main函数、Boot ROM/Bootloader分工、启动模式(NOR/NAND/SD/UART)
03
复位向量与异常处理
Cortex-M向量表、复位向量、异常优先级、中断服务函数规范
04
启动模式与硬件配置
Boot Pin配置、启动设备枚举、时钟/PLL/DDR控制器初始化
05
Boot ROM深度解析
Boot ROM功能、硬件初始化序列、启动设备检测、安全启动校验
06
一级Bootloader(SPL)开发
SPL作用、最小硬件初始化、DDR初始化、加载二级Bootloader
07
二级Bootloader(UBoot/ATF)详解
UBoot启动流程、ATF架构、FIP打包格式
08
设备树(Device Tree)基础
设备树语法、dts/dtsi/dtb、绑定文档、中断与时钟属性
09
固件链接脚本(Linker Script)精讲
内存布局、段定义(.text/.data/.bss)、符号表、链接脚本实战
10
启动汇编代码实战
Reset_Handler、栈指针初始化、BSS清零、数据段拷贝、跳转Main
11
时钟系统初始化
系统时钟树、PLL配置、分频器、时钟门控、低功耗切换
12
DDR控制器初始化
DDR协议、时序参数(tRCD/tCL/tRP)、初始化序列、DDR Training
13
Flash控制器与存储映射
SPI/NAND/NOR Flash驱动、XIP原理、Flash分区表
14
安全启动与信任根
硬件信任根(OTP/eFuse)、镜像签名验签、安全启动链、防回滚
15
固件更新机制(OTA)
固件打包、差分升级、A/B双备份、恢复模式
16
中断控制器(GIC/NVIC)配置
GICv2/v3架构、中断号映射、优先级分组、中断嵌套
17
DMA与数据搬运
DMA控制器、描述符链、内存到内存/外设传输、Cache一致性
18
Cache与MMU管理
Cache策略(Write-through/Write-back)、MMU页表、TLB、MPU保护
19
电源管理与休眠唤醒
电源域划分、DVFS、WFI/WFE、休眠唤醒流程、快速启动
20
调试与日志系统
Semihosting、SWO/JTAG、UART日志、环形缓冲区、断言与错误处理
21
性能优化与启动时间优化
启动时间测量、代码重定位、XIP优化、并行初始化、Fast Boot
22
RISC-V启动流程
RISC-V特权架构、M/S/U模式、Reset向量、CLINT/PLIC、Bootloader
23
多核启动与同步
AMP/SMP架构、核间中断(IPI)、自旋锁、内存屏障、多核启动流程
24
固件测试与验证
单元测试(CMocka/Unity)、HIL、压力测试、覆盖率分析
25
固件安全加固
堆栈保护(Canary)、ASLR、控制流完整性(CFI)、MISRA-C
26
RTOS集成与任务管理
FreeRTOS/uCOS启动、任务创建、调度器启动、中断同步
27
固件构建系统(Yocto/Buildroot)
交叉编译工具链、Makefile/CMake、镜像打包、文件系统集成
28
SoC仿真与FPGA原型验证
QEMU仿真、Verilator、FPGA原型搭建、固件在环调试
29
量产与工厂烧录
烧录工具开发、序列号管理、校准数据写入、产测固件设计
30
实战项目:从零构建SoC启动固件
需求分析、架构设计、代码实现、调试验证、性能优化