01
Yocto项目概述
Yocto是什么、为什么选择Yocto、与传统构建系统对比、核心组件 (BitBake, OpenEmbedded, Poky)
概述核心概念
02
搭建Yocto开发环境
宿主机要求、安装必要软件包、下载Poky源码、配置Git、首次构建最小系统
环境构建
03
理解BitBake基础
BitBake是什么、语法基础、任务概念、依赖解析、常用命令行操作
BitBake任务
04
Recipe文件结构
命名规则、基本结构、inherit机制、SRC_URI详解、LICENSE与LIC_FILES_CHKSUM
Recipe语法
05
变量与函数
全局变量 (PN, PV, PR, WORKDIR, D)、自定义变量、Python/Shell函数、匿名Python函数
变量函数
06
任务机制详解
do_fetch, do_unpack, do_patch, do_configure, do_compile, do_install, do_populate_sysroot
任务构建
07
内核源码获取与配置
内核Recipe结构、从Git获取源码、配置片段 (fragment)、defconfig与menuconfig
内核配置
08
内核配置片段 (Kernel Config Fragment)
什么是配置片段、创建片段文件、在Recipe中引用、合并配置优先级
片段内核
09
内核设备树 (Device Tree)
基础概念、.dts/.dtsi源文件、在Yocto中添加设备树、编译与部署
设备树DTS
10
内核模块Recipe编写
模块Recipe结构、使用module.bbclass、源码组织、模块自动加载配置
模块Recipe
11
内核补丁管理
补丁命名规范、在Recipe中应用补丁、版本控制、使用quilt管理
补丁quilt
12
内核配置与模块分离
为什么分离、依赖关系、kernel-module-split、动态模块加载
分离模块
13
设备驱动Recipe实战 (GPIO驱动)
GPIO驱动源码结构、编写Recipe、配置内核GPIO、测试驱动加载
GPIO实战
14
设备驱动Recipe实战 (I2C驱动)
I2C子系统简介、编写I2C驱动Recipe、配置内核I2C、用户空间测试
I2C实战
15
设备驱动Recipe实战 (SPI驱动)
SPI总线基础、编写SPI驱动Recipe、配置内核SPI、设备树节点
SPI实战
16
设备驱动Recipe实战 (UART驱动)
UART驱动框架、编写Recipe、配置内核串口、波特率与流控
UART串口
17
设备驱动Recipe实战 (PWM驱动)
PWM子系统概述、编写Recipe、配置内核PWM、设备树配置
PWM实战
18
设备驱动Recipe实战 (ADC驱动)
ADC子系统介绍、编写Recipe、配置内核ADC、读取ADC值
ADC实战
19
设备驱动Recipe实战 (RTC驱动)
RTC驱动框架、编写Recipe、配置内核RTC、系统时间同步
RTC时间
20
设备驱动Recipe实战 (DMA驱动)
DMA引擎基础、编写Recipe、配置内核DMA、DMA传输示例
DMA实战
21
设备驱动Recipe实战 (USB驱动)
USB子系统架构、编写Recipe、配置内核USB、USB设备枚举
USB实战
22
设备驱动Recipe实战 (网络驱动)
网络设备驱动模型、编写Recipe、配置内核网络、性能调优
网络驱动
23
设备驱动Recipe实战 (音频驱动)
ALSA音频框架、编写Recipe、配置内核音频、音频测试工具
音频ALSA
24
设备驱动Recipe实战 (视频驱动)
V4L2视频框架、编写Recipe、配置内核视频、摄像头测试
视频V4L2
25
设备驱动Recipe实战 (触摸屏驱动)
输入子系统概述、编写Recipe、配置内核输入、触摸校准
触摸输入
26
设备驱动Recipe实战 (传感器驱动)
传感器框架 (IIO)、编写Recipe、配置内核IIO、读取传感器数据
传感器IIO
27
设备驱动Recipe实战 (电源管理驱动)
电源管理框架、编写PM驱动Recipe、配置内核PM、休眠与唤醒
电源PM
28
设备驱动Recipe实战 (看门狗驱动)
看门狗子系统、编写Recipe、配置内核看门狗、用户空间喂狗
看门狗WDT
29
设备驱动Recipe实战 (LED驱动)
LED子系统、编写Recipe、配置内核LED、LED触发模式
LED触发
30
综合实战:构建完整BSP
整合所有驱动、配置内核与设备树、生成可启动镜像、烧录验证、调试技巧
BSP综合