最近买了一套linux内核课,准备好好学学,安排一下我的学习进度
学习参数说明
总课数: 280 节。
学习节奏: 每周完成约 28 节课(平均每天 4 节,约 40-60 分钟视频时间)。
实战配比: 1 小时看课 + 2 小时动手实验/查阅源码 + 1 小时博客/复盘。
第一阶段:内核基础与驱动模型(第 1-3 周)
目标: 彻底理解内核模块如何运行,掌握设备模型及并发竞争处理。
第 1 周:环境与模块化编程(1-26 节)
重点: Kbuild 编译系统、insmod 加载原理。
复盘建议: 在 RK3568 上跑通第一个 Hello World 模块,并整理出模块加载时的符号导出(Symbol Export)逻辑。
第 2 周:字符设备与中断子系统(27-49 节)
重点: file_operations 结构体、中断下半部(Tasklet/工作队列)机制。
复盘建议: 重点复盘“中断共享”,这在你明年的机器人项目中处理多个传感器冲突时非常关键。
第 3 周:并发竞争与设备树基础(50-70 节)
重点: 自旋锁与互斥体、设备树(DTS)语法及 OF 函数。
复盘建议: 结合 RK3568 的设备树,尝试修改一个节点并观察 /sys/firmware/devicetree 的变化。
第二阶段:驱动架构与通用子系统(第 4-7 周)
目标: 掌握 Linux 驱动的“分离设计”思想,能够独立编写外设驱动。
第 4 周:Platform 总线与设备模型深度(71-85 节)
重点: Platform 设备驱动匹配、kobject/kset 底层原理。
复盘建议: 这是面试常考点,建议画出设备模型层级图,并理解 udev 如何动态创建设备节点。
第 5 周:GPIO 与 Pinctrl 子系统(86-107 节)
重点: 瑞芯微平台 Pinctrl 的配置逻辑。
复盘建议: 对接明年项目。尝试将一个 GPIO 配置为中断源,模拟 RV1126 项目中可能用到的传感器触发信号。
第 6 周:常用通信协议 I2C/SPI/UART(108-122 节)
重点: i2c_driver 与 spi_driver 的注册。
复盘建议: 针对你手头的传感器,写一个简单的 SPI 或 I2C 驱动,并复盘子系统如何屏蔽掉底层控制器差异。
第 7 周:输入子系统与 PWM/IIO(147-166 节)
重点: Input 事件上报流程、ADC 数据采集。
复盘建议: 对接机器人项目。RK3588 机器人通常涉及大量电机控制(PWM)和传感器采样(IIO),这两章需重点演练。
第三阶段:高阶总线与内核优化(第 8-10 周)
目标: 攻克复杂协议,掌握内核性能分析,“降维打击”明年项目。
第 8 周:USB、PCIE 与以太网模块(123-146, 135-140 节)
重点: USB Gadget 模式、PCIE 枚举及资源空间。
复盘建议: 重点看 PCIE 的调试技巧,这在 RK3588 外挂 NPU 或高速存储时是核心瓶颈点。
第 9 周:DMA、电源管理与内核底层(167-192 节)
重点: DMA 传输 API、休眠唤醒(Wakelock)、task_struct 结构体。
复盘建议: 针对 RV1126 这种视觉芯片,复盘 DMA 如何实现图像数据的零拷贝传输。
第 10 周:内核性能调优与面试实战(193-220 节)
重点: 全课核心。ftrace、perf、KASAN 检测、Panic 死机日志分析。
复盘建议: 模拟一个内核崩溃场景,练习使用本章介绍的工具定位出 Bug 所在的 C 行号。
评论区