成长路径
面向 嵌入式 Linux + 高性能网络(DPDK)+ 系统级 C++ 方向。
✅ = 本站已有对应笔记(可复习);⬜ = 建议后续学习并补文/实践。
说明:私人刷题记录不在站内展示;算法与面试题可在本地维护,不纳入下表。
如何使用
- 按 模块 自上而下扫一遍,用 Obsidian / 编辑器勾选已完成项。
- 每完成一项实践,建议在对应模块写一篇「复盘」或补链到已有目录(见文末「与站内目录对应」)。
- 优先级:高 → 中 → 低(同模块内已标注)。
一、方向定位(目标能力)
- 能描述嵌入式 Linux 从 上电到 shell 的软件阶段(见 嵌入式Linux基础知识)
- 能独立完成 交叉编译 并在目标板运行用户态程序
- 能独立 bring-up 一块新板:Bootloader + 内核 + DT + rootfs(高)→ 新板 Bring-up 检查清单
- 能说明 内核网络栈 与 DPDK 旁路 的适用边界(高)→ Linux 内核网络栈与 DPDK 适用边界
- 具备 生产级排障 流程:日志 → perf/ftrace → 反汇编(高)→ 排障 SOP:日志、perf 与反汇编
二、工程基础
2.1 已有(✅)
2.2 待补(⬜)
优先级:中
- CMake / Meson:库工程、交叉编译 toolchain 文件 → CMake 与交叉编译入门
- 静态分析:
clang-tidy、cppcheck;内核侧了解sparse/coccinelle→ 静态分析入门 - CI 基础:GitHub Actions 构建 + 制品(固件/镜像可选)→ GitHub Actions 与嵌入式 CI 入门
- 代码评审清单:嵌入式常见坑(对齐、volatile 误用、中断上下文)→ 嵌入式代码评审清单
三、嵌入式 Linux · 体系与平台
3.1 已有(✅)
- 嵌入式 Linux 知识地图
- 体系结构入门(学习路径 阶段 2)
- 应用交叉编译实战
- Buildroot 与厂商 BSP
- 设备树实战
- 字符设备驱动入门
- SPI 驱动选学
- Yocto 与内核子系统
- 交叉编译概念长文
3.2 待补(⬜)
优先级:高
- U-Boot 实操:环境变量、
bootcmd、加载 kernel/dtb/initramfs → U-Boot 实操指南 - 启动排障手册:串口无输出 / kernel panic / rootfs 挂载失败 → 启动排障手册
- 最小可启动工程:一份可复现的 Buildroot 或 Yocto 镜像 + 文档 → 最小可启动工程指南
- 设备树 + platform 驱动:完整 repo(reg/interrupt/clock + probe)→ platform 驱动完整案例
- 中断与下半部:硬中断 / tasklet / workqueue 选用表 + 示例 → 中断与下半部机制
- DMA 驱动基础:
dma_map_*、Cache 一致性、与 DT 配合 → DMA 与 Cache 一致性入门
优先级:中
- MMU / IOMMU:与 如何通过虚拟地址查找物理地址 串联成案例 → MMU 与 IOMMU 案例串联
- TrustZone / 安全启动:概念 + 与 BSP 责任边界(按项目)→ TrustZone 与安全启动概念
- 电源管理:
runtime_pm、休眠唤醒(按硬件)→ Runtime PM 与休眠唤醒入门
四、嵌入式 Linux · 文件系统与存储
4.1 已有(✅)
- 存储与 IO 子系统(含栈边与 MTD/块设备概念)
4.2 待补(⬜)
优先级:高
- eMMC + ext4:分区、
mkfs、只读根文件系统、fsck策略 → eMMC 与 ext4 根文件系统 - Raw NAND + UBI + UBIFS:
ubiformat/ubinize、掉电与升级注意点 → Raw NAND 与 UBI UBIFS 入门 - NAND 与 eMMC 选型对照:一张表 + 板级实测结论 → NAND 与 eMMC 选型对照
优先级:中
- 日志与持久化:
journal、barrier、sync对嵌入式影响 → 日志持久化与 barrier - 挂载参数与启动:
rootwait、PARTUUID、initramfs 场景 → 挂载参数与启动场景
五、嵌入式 Linux · 内核机制
5.1 已有(✅)
5.2 待补(⬜)
优先级:高
- 进程调度:CFS、nice、
SCHED_FIFO;与 DPDK 绑核 /isolcpus对照 → 进程调度与绑核 - 内核同步总表:spinlock / mutex / rwlock / RCU;
lockdep入门 → 内核同步机制总览 - Linux 内核网络栈:socket → 协议栈 → 驱动(与 DPDK 对比一篇)→ Linux 内核网络栈与 DPDK 适用边界
优先级:中
- PREEMPT_RT:
cyclictest、最坏延迟测量(选做)→ PREEMPT_RT 与 cyclictest 入门 - 内存压测与 OOM:小内存板上的行为记录 → 小内存板 OOM 行为
- eBPF 入门:
bpftrace跟踪延迟、丢包、栈 → eBPF 与 bpftrace 入门
六、嵌入式 Linux · 驱动与模块
6.1 已有(✅)
6.2 待补(⬜)
优先级:高
- sysfs / proc 接口:模块参数、调试节点 → sysfs 与 proc 调试接口
- platform 总线完整案例:
compatible匹配 →probe→ 资源释放 → platform 驱动完整案例 - 块设备或网络驱动:按目标硬件选一条线深入 → 块设备与网络驱动选型指南
优先级:低
- Input / RTC / Watchdog 等常见子系统驱动(按产品)→ Input RTC Watchdog 子系统速览
七、网络与 DPDK(数据面)
7.1 已有(✅)
7.2 待补(⬜)
优先级:高
- 最小数据面项目:转发或 echo + 统计 + 配置(可写项目总结)→ 最小数据面项目设计
- 多 worker 与 mempool 并发假设:与 无锁编程 对照 → 多 worker 与 mempool 并发假设
- 性能剖析闭环:
perf+ 绑核 + 缓存行 / false sharing checklist → DPDK 性能剖析与绑核 checklist
优先级:中
- AF_XDP:何时用、与完整 DPDK 分工 → AF_XDP 适用场景
- 与内核共存:路由、netfilter、管理口与数据口分离 → 与内核网络栈共存
- SR-IOV / VF(云或虚拟化场景)→ SR-IOV 与 VF 入门
- 了解 VPP / OVS 定位(不必深钻除非工作涉及)→ VPP 与 OVS 定位速览
优先级:低
- RDMA(特定行业)→ RDMA 适用场景速览
- DPDK LTS 新特性跟进笔记 → DPDK LTS 版本跟进笔记
八、编程语言 · C++
8.1 已有(✅)
8.2 待补(⬜)
优先级:中
- 嵌入式 C++ 约束:异常、
RTTI、-fno-exceptions、静态链接体积 → 嵌入式 C++ 编译约束 - C++ 封装 DPDK:对象池、
rte_ring、零拷贝接口设计 → C++ 封装 DPDK 数据面 - perf + 火焰图 读 C++ 热点(可放在 系统调试)→ perf 与火焰图读 C++ 热点
优先级:低
- Rust 是否纳入主线(仅当岗位或项目需要)→ 是否纳入嵌入式主线
九、编程语言 · Go
9.1 已有(✅)
9.2 待补(⬜)
优先级:低
- goroutine / channel 并发模型 → goroutine 与 channel 并发模型
- cgo 与交叉编译(若做云管或工具链)→ cgo 与交叉编译
十、系统调试与排障
10.1 已有(✅)
10.2 待补(⬜)
优先级:高
- 工具链一张图:gdb、strace、
perf、ftrace、bpftrace、addr2line→ 排障工具链一张图 - 排障 SOP:先日志 → 再 perf → 再反汇编(一篇流程文)→ 排障 SOP:日志、perf 与反汇编
- 内核卡死类:soft lockup、RCU stall、hung task → 内核卡死与 hung task 入门
优先级:中
- 用户态内存:ASan / Valgrind(桌面验证算法)→ ASan 与 Valgrind 桌面验证
- coredump 分析基础 → coredump 分析基础
十一、数据库
11.1 已有(✅)
11.2 待补(⬜)
优先级:低
- SQLite:嵌入式配置库场景 → SQLite 嵌入式配置库
- 时序库 / 边缘存储(按产品选型)→ 时序库与边缘存储选型
十二、OTA 与运维(嵌入式产品)
12.1 已有(✅)
- 嵌入式Linux基础知识 中 OTA / 可观测性概念
12.2 待补(⬜)
优先级:高
- A/B 分区 与回滚策略 → A-B 分区与回滚策略
- swupdate 或 Mender 之一实操 → swupdate 入门
- Mender 实操(可选,与 swupdate 二选一深化)→ Mender 入门
- 远程日志与指标:最小可观测方案(按产品)→ 远程日志与最小可观测
优先级:中
- 许可证与 SBOM:GPL 模块、第三方库合规扫描 → 许可证与 SBOM 入门
十三、AI 工具(效率向,非主线路)
13.1 已有(✅)
13.2 待补(⬜)
优先级:低
- 用 AI 读 TRM / 内核 Documentation 的工作流 → 用 AI 读 TRM 与内核文档
- 用 AI 生成测试用例 / 脚本草稿的规范(避免幻觉进生产)→ 用 AI 生成测试与脚本草稿
十四、推荐执行顺序(12 个月参考)
按季度勾选「阶段目标」即可,细节仍回到上文各模块清单。
第 1 季度 · 嵌入式闭环
- U-Boot + 启动排障 → U-Boot 实操指南、启动排障手册
- DT + platform 驱动完整工程 → platform 驱动完整案例
- Buildroot 或 Yocto 可重复出镜像 → 最小可启动工程指南
- eMMC 或 UBI 文件系统实操 → index
第 2 季度 · 可观测与内核网络
- perf / ftrace 入门 + 一次真实卡顿案例(模板)→ perf 与 ftrace 实战案例模板
- 内核网络栈 vs DPDK 对比文 → Linux 内核网络栈与 DPDK 适用边界
- 排障 SOP 定稿 → 排障 SOP:日志、perf 与反汇编
第 3 季度 · 数据面项目化
- DPDK 小项目(多 worker + 统计)→ 最小数据面项目设计
- 性能剖析与绑核 checklist 实践 → DPDK 性能剖析与绑核 checklist
第 4 季度 · 产品化(二选一深入)
- OTA 方案落地 或 AF_XDP 专题 → index、AF_XDP 适用场景
- 安全启动 / 合规(按工作需求)→ 安全启动与合规实践
十五、与站内目录对应(补文时放哪)
| 成长路径模块 | 建议写入目录 |
|---|---|
| 启动 / U-Boot / OTA | linux/学习路径/ 或 linux/平台与构建/ |
| 文件系统 / 存储 | linux/文件系统/ |
| 驱动案例 | linux/驱动与模块/ |
| 内核调度 / 网络栈 / eBPF | linux/内核机制/ |
| DPDK 项目 / AF_XDP | 网络与DPDK/教程/ 或 index |
| perf / 排障 SOP | 系统调试/ |
| C++ 与 DPDK 结合 | 编程语言/C++/ |
| 清单本身 | 成长路径/(本页) |
十六、快速入口(复习用)
清单随博文更新而修订;完成实践后可将 ⬜ 改为 ✅ 并补上站内链接。