主流开发板内核移植完整流程实战
📚 共计 30 章节
01
嵌入式Linux内核移植概述
什么是内核移植、为什么需要移植、主流开发板介绍(STM32MP157、i.MX6ULL、RK3568)、内核源码获取与版本选择。
概念
选型
02
开发环境搭建
Ubuntu虚拟机安装、交叉编译工具链配置、TFTP/NFS服务搭建、串口终端工具使用。
环境
工具链
03
Bootloader基础与U-Boot移植
U-Boot简介、U-Boot源码结构、U-Boot配置与编译、U-Boot设备树基础。
启动
U-Boot
04
Linux内核源码结构分析
内核源码目录结构、Kconfig与Makefile机制、内核配置系统(menuconfig)、内核编译流程。
源码
编译
05
设备树(Device Tree)详解
设备树起源与作用、DTS/DTC/DTB文件格式、设备树语法基础、绑定文档解读。
DTS
硬件描述
06
时钟系统与定时器
时钟框架(CCF)介绍、系统节拍与HZ值、定时器驱动(clocksource/clockevent)、高精度定时器(hrtimer)。
时钟
定时器
07
中断子系统
GIC中断控制器、中断号映射与irq_domain、中断处理流程(上半部/下半部)、中断共享与嵌套。
中断
GIC
08
GPIO子系统
GPIO控制器驱动、GPIO库函数与操作、GPIO中断、pinctrl子系统与引脚复用。
GPIO
pinctrl
09
平台设备驱动模型
platform总线、platform_device与platform_driver、设备树匹配方式、probe流程。
驱动模型
platform
10
I2C子系统
I2C总线协议回顾、I2C核心层与适配器驱动、I2C设备驱动编写、设备树中I2C设备描述。
I2C
总线
11
SPI子系统
SPI总线协议回顾、SPI核心层与控制器驱动、SPI设备驱动编写、SPI设备树配置。
SPI
高速
12
串口(UART)驱动
串口驱动框架(serial_core)、8250串口驱动分析、设备树中串口配置、控制台与earlycon。
UART
控制台
13
MMC/SD卡驱动
MMC子系统架构、SD/MMC卡协议基础、主机控制器驱动、设备树配置与调试。
存储
SD
14
NAND Flash与存储驱动
MTD子系统简介、NAND Flash控制器驱动、UBIFS文件系统、坏块管理。
NAND
MTD
15
网络驱动(以太网)
网络子系统架构(NAPI)、MAC/PHY驱动模型、DMA引擎与描述符环、设备树中以太网配置。
网络
NAPI
16
USB子系统
USB主机/设备驱动框架、EHCI/OHCI控制器驱动、USB gadget驱动、设备树USB配置。
USB
gadget
17
显示与LCD驱动
DRM/KMS框架介绍、Framebuffer驱动、LCD控制器驱动、设备树显示配置。
显示
DRM
18
音频子系统(ALSA)
ALSA架构概述、Codec驱动、I2S接口驱动、设备树音频配置。
音频
ALSA
19
电源管理
CPU频率调节(cpufreq)、CPU空闲(cpuidle)、系统休眠与唤醒、设备树电源管理属性。
省电
cpufreq
20
DMA引擎驱动
DMA控制器驱动框架、dmaengine API使用、设备树DMA描述、常见DMA控制器。
DMA
高性能
21
看门狗(Watchdog)驱动
Watchdog子系统、硬件看门狗驱动、设备树配置、用户空间接口。
看门狗
可靠性
22
RTC驱动
RTC子系统架构、RTC设备驱动、设备树RTC配置、系统时间同步。
RTC
时间
23
PWM与背光驱动
PWM子系统、PWM控制器驱动、背光驱动框架、设备树PWM配置。
PWM
背光
24
ADC与传感器驱动
IIO子系统简介、ADC驱动编写、设备树ADC配置、用户空间IIO接口。
ADC
IIO
25
内核启动流程分析
汇编启动阶段(stext)、start_kernel函数解析、init进程与用户空间启动、启动日志解读。
启动
内核
26
根文件系统构建
Busybox构建最小根文件系统、init进程与inittab、设备节点与devtmpfs、NFS挂载根文件系统。
根文件系统
Busybox
27
内核调试技巧
printk调试与日志级别、Oops与panic分析、KGDB调试、ftrace与tracepoint。
调试
ftrace
28
性能优化
内核配置裁剪、启动时间优化、内存优化、CPU负载均衡。
优化
裁剪
29
设备树覆盖(Overlay)与动态配置
设备树覆盖原理、overlay语法、运行时加载overlay、应用场景。
Overlay
动态
30
完整移植实战案例
以i.MX6ULL为例,从零开始移植Linux 5.10内核、调试常见问题、性能调优与验证。
实战
i.MX6ULL