先判断这门课值不值得你花时间
Linux 内核驱动开发不是一门能"速成"的技能,它更像一道分水岭:会写应用层代码的人很多,能看懂内核里发生了什么、能自己动手改一处驱动的人很少。这门课面向的正是后面这类需求——你已经在用 Linux,但想弄明白设备是怎么被系统识别、中断是怎么被处理、内核里的锁到底在防什么。
如果你只是想让服务器跑起来、会写几个脚本做运维,那这门课大概率超出你的实际需要,性价比不高。但如果你所在的工作涉及嵌入式、BSP 移植、内核模块调试,或者你在往系统底层方向转,那它解决的是很具体的场景:写一个能加载进内核的模块、定位一次内核崩溃、理解子系统之间的调用关系。这类能力在面试和实际排障中都属于硬通货。
它到底讲什么,学完能做什么
课程的主线是围绕内核驱动开发展开的,覆盖了中断处理、内核中的锁机制、文件系统相关的内容。这几块不是随便挑的,它们恰好是驱动开发里最容易出问题、也最能拉开水平差距的地方。
学完之后,比较现实的产出是:你能独立完成一个字符设备驱动的编写与加载,理解模块的初始化和退出流程;遇到并发场景知道该用自旋锁还是信号量,而不是凭感觉;能读懂中断上下文的限制,明白为什么有些操作不能放在中断里做。这些是能落到工作里的东西,不是停留在"了解概念"的层面。
要说明的是,课程本身不会把你变成内核专家。内核是个庞大的体系,一门课能覆盖的是主干和关键节点,剩下的靠你在具体项目里继续啃。抱着这个预期来学,不会失望。
资料结构和使用方式
这是一套以视频讲解为主的课程资料,配合一份说明文件帮你理清学习顺序。视频的形式适合跟着敲、跟着调,尤其是驱动这类必须动手才能理解的 topic,光看不动手基本等于没学。
建议的用法是:先按课程顺序把驱动开发的基础流程过一遍,跑通第一个能加载的内核模块,建立"改代码—编译—加载—看日志"的完整反馈回路。之后再进入中断、锁这些偏机制的部分,这时候你已经有了可调试的环境,理解起来会快很多。文件系统那块内容相对独立,可以在前两部分扎实之后再回头看。
不要试图一次把所有视频刷完。内核内容信息密度高,连续看容易疲劳且记不住,一天吃透一个小节比看五个小节更有效。
适合什么基础的人
- 需要已经会用 C 语言,指针、结构体、函数指针这些要熟练,否则读内核代码会非常吃力。
- 最好有基本的 Linux 命令行操作经验,能编译程序、看系统日志。
- 有操作系统课程基础会更顺,比如进程、内存管理的基本概念,没学过也不是不能跟,但需要自己补。
- 完全零基础、没写过 C 的人,建议先补语言和系统基础,直接上这门课会卡在起步阶段。
一点提醒
驱动开发的学习成本主要体现在环境搭建和调试上,第一次编译内核模块、第一次用工具看内核日志,都可能花掉不少时间。这部分课程会讲,但真正卡住你的往往是环境和版本差异。做好准备:留出折腾环境的时间,遇到报错先查日志再下结论。把这门课当成进入内核世界的入口,而不是终点,你的收获会更实在。
课程目录
51CTO-Linux内核驱动开发视频课说明.png [493.5 KB] 37.中断共享.mp4 [39.3 MB] 41.应用层互斥锁的使用.mp4 [76.8 MB] 02.内核源码查看方法.mp4 [48.9 MB] 34.小节复习.mp4 [63.6 MB] 56.小节复习.mp4 [41.9 MB] 58.platform之资源获取实例.mp4 [58.8 MB] 65.I2C控制器的内核驱动框架分析.mp4 [206.7 MB] 55.platform总线机制.mp4 [90.6 MB] 54.驱动模型之总线、设备、驱动思想.mp4 [172.2 MB] 57.platform总线匹配规则实例.mp4 [58.3 MB] 70.操作LCD之frambuffer的APP程序一.mp4 [118.3 MB] 77.proc文件系统之可读写文件的创建.mp4 [117.5 MB] 66.5点触控触摸屏驱动编写一.mp4 [216.3 MB] 74.LCD驱动框架分析二.mp4 [111.4 MB] 53.驱动模型思想机制及涉及接口.mp4 [105.5 MB] 68.基于I2C控制器的从机驱动扩展.mp4 [134.1 MB] 67.5点触控触摸屏驱动编写二.mp4 [198.1 MB] 75.proc文件创建之LED驱动.mp4 [106.8 MB] 76.proc文件创建之内核缓存设备驱动.mp4 [63.1 MB] 32.高级字符设备驱动之ioctl接口实现led操作.mp4 [102.7 MB] 09.系统调用函数实现的本质.mp4 [139.3 MB] 45.内核加锁机制之互斥锁和自旋锁.mp4 [67.6 MB] 51.input子系统关于单点触控触摸屏数据的上报.mp4 [152.7 MB] 35.内核中断请求接口.mp4 [66.4 MB] 04.根文件系统的制作.mp4 [40.2 MB] 24.内核缓存设备驱动的测试app编写.mp4 [23.5 MB] 22.LED之字符设备驱动的第二种注册方式及app编写.mp4 [85.7 MB] 62.小节复习.mp4 [88.7 MB] 71.操作LCD之frambuffer的APP程序二.mp4 [104.0 MB] 17.内核中动态申请内存空间的接口.mp4 [177.8 MB] 33.利用gpio子系统操作led驱动.mp4 [135.8 MB] 21.LED字符设备驱动.mp4 [217.9 MB] 28.poll驱动接口之应用层select测试.mp4 [132.3 MB] 43.避免死锁.mp4 [16.9 MB] 03.内核和文件系统的烧写.mp4 [57.7 MB] 20.系统调用和内核驱动之间的调用过程.mp4 [149.9 MB] 29.poll驱动接口之应用层poll测试.mp4 [37.7 MB] 25.小节复习.mp4 [40.3 MB] 69.为5点触控触摸屏驱动编写Kconfig.mp4 [19.8 MB] 01.内核驱动开发概述.mp4 [148.2 MB] 05.内核编译组织结构.mp4 [45.9 MB] 38.中断下半部之tasklet实现机制.mp4 [93.3 MB] 47.自旋锁解决进程和中断下半部之间的竞争.mp4 [45.5 MB] 40.定制linux内核的启动logo.mp4 [113.0 MB] 72.内核获取bootloader的bootargs环境变量.mp4 [63.4 MB] 73.LCD驱动框架分析一.mp4 [143.5 MB] 61.测试蜂鸣器驱动之app.mp4 [43.1 MB] 13.驱动模块的编写技术.mp4 [176.3 MB] 59.SOC各种控制器的设备对象和驱动对象之组织框架.mp4 [123.2 MB] 52.input子系统关于多点触控触摸屏数据的上报.mp4 [43.6 MB] 14.系统调用和驱动模块的串讲.mp4 [50.4 MB] 15.内核双向循环链表的思想机制.mp4 [151.4 MB] 64.基于ADC的定位器电压值抽样驱动及app编写.mp4 [108.7 MB] 50.利用input子系统编写功能键设备驱动.mp4 [155.8 MB] 23.一套驱动支持多个设备的内核缓存设备驱动编写技术.mp4 [212.4 MB] 36.双边沿触发按键中断注册.mp4 [69.8 MB] 39.中断下半部之workqueue实现机制.mp4 [66.4 MB] 19.古老的字符设备驱动注册接口及代码实例.mp4 [144.7 MB] 44.内核加锁机制之信号量.mp4 [157.1 MB] 16.内核操作双向循环链表的接口精讲及应用实例.mp4 [189.9 MB] 60.pwm驱动蜂鸣器驱动.mp4 [161.5 MB] 30.poll驱动接口之应用层epoll测试.mp4 [56.1 MB] 46.自旋锁解决进程和中断之间的竞争.mp4 [63.6 MB] 49.获取鼠标键盘触摸屏等输入设备数据app编写.mp4 [163.4 MB] 48.原子操作.mp4 [113.5 MB] 10.内核中实现并添加亮灭led的系统调用函数.mp4 [148.2 MB] 80.复习二.mp4 [20.3 MB] 11.应用层测试内核中添加的系统调用函数实现led的亮灭.mp4 [32.2 MB] 26.内核缓存设备驱动之进程阻塞.mp4 [102.8 MB] 08.Kconfig和Makefile之间的关系.mp4 [86.3 MB] 18.设备驱动的分类、设备文件和内核驱动之间的关联.mp4 [101.2 MB] 42.应用层自旋锁的使用.mp4 [18.4 MB] 79.复习一.mp4 [113.3 MB] 78.内核系统时间的获取.mp4 [91.5 MB] 27.内核缓存设备驱动之IO复用poll接口实现.mp4 [57.0 MB] 07.Kconfig文件语法.mp4 [104.2 MB] 31.混杂字符设备驱动注册方法之led驱动.mp4 [47.8 MB] 63.adc控制器的内核驱动框架结构.mp4 [157.3 MB] 12.驱动模块的编写技术.mp4 [153.8 MB] 06.Kconfig文件语法.mp4 [16.8 MB] 适合人群 Linux内核开发者 操作系统爱好者 嵌入式系统工程师 学习收获 掌握内核驱动开发流程 了解内核数据结构和算法 提升操作系统开发能力 祝您学习愉快! 学有所成,前程似锦!






