🚗 车载Linux · 从零搭建
📚 30章完整闯关
01
车载Linux概述
什么是车载Linux · 为什么选择Linux · AUTOSAR与Linux · 行业现状与趋势
02
开发环境总体规划
主机系统选择(Ubuntu 22.04) · 虚拟机/双系统 · 磁盘分区 · 网络配置
03
Ubuntu系统安装与初始化
Ubuntu 22.04 LTS安装 · 系统更新&源 · 中文环境 · 基础开发工具
04
交叉编译工具链
交叉编译概念 · ARM vs x86 · 下载配置工具链 · 验证
05
QEMU模拟器搭建
QEMU介绍 · 安装QEMU · 模拟ARM开发板 · 启动第一个Linux内核
06
Bootloader深度解析
U-Boot简介 · 编译与配置 · 启动流程 · 烧录到QEMU
07
Linux内核编译
获取内核源码 · menuconfig · 编译内核 · 内核模块管理
08
设备树 (Device Tree)
为什么需要设备树 · DTS/DTC/DTB · 编写简单设备树 · 编译与加载
09
根文件系统构建 (BusyBox)
BusyBox简介 · 编译BusyBox · 最小根文件系统 · init与inittab
10
Yocto Project入门
Yocto是什么 · Poky与BitBake · 搭建Yocto环境 · 构建第一个镜像
11
Yocto实战
自定义Layer · 添加软件包 · 修改内核配置 · 生成SDK
12
Buildroot构建系统
Buildroot vs Yocto · 配置Buildroot · 构建最小系统 · 添加应用
13
文件系统进阶
SquashFS · JFFS2 · UBIFS · EXT4对比 · 制作与烧录
14
存储与分区管理
eMMC与NAND Flash · GPT分区表 · UBI/UBIFS · 坏块管理
15
驱动开发基础
Linux驱动模型 · 字符设备驱动 · 编写Hello驱动 · 编译与测试
16
GPIO与LED驱动
GPIO子系统 · 设备树GPIO配置 · 编写LED驱动 · 用户空间控制
17
I2C与SPI驱动
I2C子系统 · SPI子系统 · 编写传感器驱动 · 调试技巧
18
显示与图形栈
DRM/KMS框架 · FrameBuffer · Wayland/Weston · Qt Embedded
19
触摸屏与输入设备
Input子系统 · 触摸屏驱动 · 多点触控协议 · 校准与测试
20
音频系统
ALSA架构 · 音频驱动 · PulseAudio/PipeWire · 音量控制与路由
21
网络通信
CAN总线驱动 · SocketCAN · TCP/IP协议栈 · 网络配置与测试
22
车载网络协议
SOME/IP · DDS · MQTT对比 · vsomeip库集成 · 服务发现
23
系统启动优化
启动时间分析 · systemd优化 · 并行启动 · 休眠与唤醒
24
安全启动与OTA
Secure Boot原理 · 签名与验证 · OTA架构设计 · A/B分区方案
25
日志与调试
printk/dmesg · JTAG调试 · KGDB · crash dump分析
26
性能优化
CPU调频 · 内存优化 · I/O调度 · 实时性配置(PREEMPT_RT)
27
容器化技术
Docker/Podman · 容器运行时 · 嵌入式部署 · 资源隔离
28
测试与CI/CD
单元测试框架 · LTP测试 · 自动化构建 · Jenkins集成
29
功能安全与ISO 26262
功能安全基础 · Linux在功能安全中的角色 · ELISA项目 · 安全机制
30
综合实战
从零构建完整车载Linux系统 · 集成所有组件 · 启动验证 · 问题排查