这门课解决什么问题
在 ARM 嵌入式开发里,设备树是让内核识别硬件、配置驱动的一座桥。很多开发者第一次接触它时,往往卡在“为什么内核启动时能知道板子上有哪些外设”“我要加一个串口或 GPIO,到底改哪里”。这门课就是用来拆掉这些疑问的。它不涉及芯片内部寄存器级别的底层细节,而是站在“内核如何与硬件描述打交道”这一层,讲清楚设备树存在的理由、它的结构,以及内核是怎么解析它并生成驱动所需资源的。
如果你已经做过一些裸机或驱动移植,但每次看到 dts 文件里的节点、属性、compatible 字符串就发懵,或者改了设备树后内核报错却不知道去哪查,这门课能帮你把零散的知识串成一条线。它不会教你怎么写一个完整的驱动,而是聚焦设备树本身——这是很多教程里一笔带过、却在实际工作中绕不开的部分。
适合什么基础
适合已经会写最简单的字符设备驱动、能跑通内核编译流程的人。比如你用过 Linux 内核模块,知道 platform_driver 大致怎么注册,但还没系统看过设备树文档。不需要你懂汇编或硬件原理,但最好有基本的 C 语言阅读能力,因为课程里会涉及内核辅助 API 的用法。
如果连内核模块都没写过,建议先补一下驱动开发的基础,否则听“设备树如何工作”那一段会跟不上。反过来,如果你已经能照着别人的设备树改一改让板子跑起来,但说不清背后的机制,这门课正好可以补上这一环。
建议先看哪几块,怎么配合练习
按顺序看就行。前两段是“为什么”和“是什么”,重点理解设备树引入前的问题,以及它到底替代了哪些传统做法。第三段“如何工作、辅助 API”是核心,这里会讲到内核怎么遍历设备树、怎么匹配驱动,以及常用的读取接口。建议把第三段至少看两遍,第一遍跟思路,第二遍对着代码或文档查每个 API 的用法。
光看视频是不够的。学完第一段后,你可以拿一块现有开发板的 dts 文件,试着找出其中哪些节点对应了实际的外设,哪些属性被驱动使用了。学完第三段后,自己写一个简单的 platform_driver,让它从设备树里读取一个自定义属性,并打印到内核日志。这样你就能验证自己是否真的理解了“设备树如何工作”。
学完这门课,你应该能做到:拿到一份陌生的设备树文件,能大致看懂它的层级和每个节点在描述什么;知道怎么添加一个外设节点,并让驱动正确获取它的寄存器地址、中断号等资源;遇到“设备树里明明写了,驱动却读不到”的问题时,知道从哪里下手排查。这些能力足够支撑你在实际项目里独立处理设备树相关的配置和调试。
课程目录
1 为什么使用设备树、设备树是怎么样、什么需要改变 (30:37).mp4 2 设备树引入后 (32:55).mp4 3 设备树如何工作、辅助API (30:26).mp4






