01
BSP概念与嵌入式系统概述
什么是BSP · 嵌入式系统角色 · 硬件软件分层 · BSP与OS关系
概念基础
02
嵌入式开发环境搭建
交叉编译链 · JTAG/SWD · 串口终端 · TFTP/NFS搭建
环境工具链
03
启动流程与Bootloader
上电启动流程 · U-Boot作用 · 编译与烧录
启动U-Boot
04
链接脚本与内存布局
.lds语法 · 代码/数据/BSS段 · 栈堆配置 · DDR初始化
内存链接
05
时钟系统与定时器
SoC时钟树 · PLL配置 · SysTick · 通用定时器驱动
时钟定时器
06
GPIO驱动开发
寄存器模型 · 输入/输出/中断 · 寄存器操作示例
GPIO驱动
07
中断系统与异常处理
ARM Cortex-M/N向量表 · 优先级配置 · ISR · 嵌套抢占
中断异常
08
UART串口驱动开发
UART协议 · 波特率计算 · FIFO/中断 · printf重定向
串口UART
09
I2C总线驱动开发
I2C时序 · 主从模式 · 控制器驱动 · EEPROM读写
I2C总线
10
SPI总线驱动开发
SPI模式0/1/2/3 · 全双工 · SPI Flash(W25Qxx)示例
SPIFlash
11
DMA控制器驱动开发
内存到内存/外设到内存 · 描述符链 · DMA中断
DMA传输
12
存储设备驱动
NAND/NOR Flash · ECC校验 · 坏块管理 · 分区表
存储Flash
13
SD/MMC/eMMC驱动开发
SD协议栈 · 初始化流程 · FAT32挂载
SDeMMC
14
以太网MAC/PHY驱动开发
RMII/RGMII · PHY自动协商 · LWIP移植要点
以太网LWIP
15
USB设备驱动开发
USB协议(设备/主机/OTG) · 描述符 · CDC/大容量存储
USB驱动
16
LCD与显示驱动开发
Framebuffer · LCD时序 · RGB/MIPI · GUI框架移植
显示LCD
17
触摸屏驱动开发
电阻/电容屏 · I2C触摸控制器 · 多点触摸协议
触摸输入
18
音频Codec驱动开发
I2S/PCM接口 · Codec初始化 · 音量/采样率配置
音频Codec
19
电源管理与功耗优化
DVFS · 外设时钟门控 · 睡眠/待机 · 功耗测量
电源优化
20
设备树 (Device Tree) 详解
dts/dtsi语法 · 节点属性 · 绑定文档 · overlay
设备树DTS
21
Linux内核BSP移植
内核源码 · Kconfig/Makefile · 板级文件 · 内核编译启动
LinuxBSP
22
Linux设备驱动模型
platform驱动 · 设备匹配 · probe/remove · sysfs
驱动模型platform
23
字符设备驱动开发
file_operations · cdev注册 · mmap · ioctl
字符设备驱动
24
中断下半部机制
tasklet · workqueue · threaded IRQ · 软/硬中断
下半部中断
25
并发与同步机制
自旋锁 · 互斥锁 · 信号量 · RCU · 原子操作 · 死锁
并发同步
26
内存管理与DMA API
页分配 · slab · DMA一致性/流式映射 · DMA池
内存DMA
27
实时操作系统(RTOS) BSP移植
FreeRTOS移植 · 中断优先级 · 临界区 · 任务栈
RTOSFreeRTOS
28
BSP测试与验证方法
Unity/CMock · 压力测试 · 覆盖率 · 自动化脚本
测试验证
29
调试技巧与性能优化
JTAG调试 · printk/dynamic debug · ftrace/perf · 代码优化
调试性能
30
BSP项目实战
从零构建BSP (Cortex-M4) · 启动代码 · 外设集成 · 验证
实战项目