正版资源51CTO - Linux内核驱动开发视频教程
这门课的主题很明确:Linux 内核模块与字符设备驱动的编写方法。它面向的是已经能熟练使用 Linux 命令行、写过用户态 C 程序,但还没真正进过内核态的开发者。如果你之前只停留在 insmod 看别人写的模块、或者只会调 ioctl 而不知道背后发生了什么,这份资料可以作为你第一次系统对照内核源
支付成功后自动发货,可在「我的订单」查看网盘链接;链接失效可联系客服免费补链。
这门课的主题很明确:Linux 内核模块与字符设备驱动的编写方法。它面向的是已经能熟练使用 Linux 命令行、写过用户态 C 程序,但还没真正进过内核态的开发者。如果你之前只停留在insmod看别人写的模块、或者只会调ioctl而不知道背后发生了什么,这份资料可以作为你第一次系统对照内核源码的入口。
技术栈与前置条件
课程围绕标准 Linux 内核源码树展开,涉及的接口都是内核里长期稳定的那批:模块的加载与卸载入口、file_operations结构体、copy_to_user/copy_from_user、并发控制里的自旋锁与信号量、中断处理与下半部机制,以及 platform 设备模型。工具链上需要 gcc、make、内核头文件或完整源码树,调试侧会用到dmesg、printk、/proc与/sys节点。前置要求写得直白一点:会写 Makefile、看得懂 C 指针与结构体、理解进程与内存的基本概念,否则跟起来会吃力。内核版本差异是这类内容绕不开的坑,建议自己动手时锁定一个 LTS 版本,不要拿不同版本的源码交叉对照。
内容组织方式
整体推进路径是「先跑通一个最小模块,再往里加功能」。前面部分讲模块的编译、加载、卸载和参数传递,让你先看到printk的输出落在dmesg里,建立"我改的代码确实进了内核"的反馈回路。中间部分进入字符设备:主次设备号的分配、cdev的注册、open/read/write/release的实现,以及阻塞与非阻塞 IO 的区别。后面会涉及中断注册、并发场景下的竞态处理、以及 platform 驱动与设备树的关联。这种顺序的好处是每一段都有可运行的产物,而不是先把所有概念堆完再写代码。看的时候建议按模块拆开,一个主题跑通再进下一个,别一口气刷完。
可以拿来复用的模块
驱动开发里有一批代码骨架是反复出现的,这门课基本都覆盖到了,可以直接抽出来当模板:
- 模块入口/出口与
MODULE_LICENSE等元信息的固定写法; - 字符设备注册到销毁的完整生命周期,包括错误路径上的回滚;
- 用户态与内核态之间的数据拷贝封装,以及边界检查的处理方式;
- 以
read阻塞等待配合中断唤醒的生产者—消费者范式; - platform 驱动的 probe/remove 结构与资源获取释放的配对。
这些骨架的价值在于结构稳定——换一个硬件或换一种设备类型,改的是寄存器和具体逻辑,不是框架本身。把它们整理成自己的模板库,后面写新驱动会快很多。
对照实践的建议
视频的局限是它只能展示一条走通的路径,而真实调试里大量时间花在报错上。所以建议边看边做三件事:第一,每写一个模块就故意制造一次失败,比如忘记释放设备号、在原子上下文里睡眠,看内核给什么提示;第二,用strace从用户态观察你写的字符设备到底被调用了哪些入口;第三,遇到不认识的函数就去翻源码树里的实现和调用者,grep比任何文档都准。内核开发没有"看懂了"这回事,只有"跑通了并且知道为什么能跑通"。这份资料适合当参照系,对照着它去读源码、改代码、debug,比单纯看视频走一遍有效得多。
51CTO - Linux内核驱动开发视频教程
深入内核,掌握驱动开发
编辑点评
系统深入,案例丰富,适合有Linux基础想学习内核驱动开发的学习者。
⭐ 编辑推荐
本教程深入浅出地讲解了Linux内核驱动开发,从基础概念到实际应用,助你成为内核驱动开发高手。
✨ 课程亮点
课程目录
课程目录77 集
- 51CTO-Linux内核驱动开发视频课说明.png [493.5 KB]
- 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]
- 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]
- 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]
- 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系统管理员
- 内核驱动开发爱好者
- 嵌入式系统开发者
🎯 学习收获
- 掌握Linux内核驱动开发基础
- 学会编写内核模块
- 了解内核驱动开发流程
🎉 祝您学习愉快!




