Linux 设备模型(零): 基础概念
前言
Linux 设备模型可能是学习 Linux 驱动最基础的概念了,但平时开发驱动或看驱动程序时很少与驱动模型直接接触。这导致我只知道设备模型的概念,没有很清晰的理解,简单的说我并没有完全掌握 Linux 设备模型。但我深知设备模型是所有 Linux 设备的底层逻辑,我必须能对它有足够的掌控力。我出于以下两个原因决定写一个系列博文:
- 逼迫自己深入:网上关于设备模型的文章太多了,不乏有很多优秀的文章,但是看人家的文章总是得过且过。如果我自己要写一篇博文就不得不逼自己深入探索每个细节。
- 向互联网输出:虽然关于设备模型的文章已经很多了,但是每个人思考的角度和深度不同。可能看一篇文章没有完全懂,但是多看几篇你就能把握全局了,所以谁会嫌学习资料太多呢。
一、什么是设备模型?
首先我们想一下什么是设备?你可能会说这不是最简单的吗?鼠标、U 盘、按键、串口、LCD… … 不都是设备吗?是的,世界上的设备多到数不过来,而这些设备之间差异极大,怎么在 linux 中描述和管理设备就成了重要的事情。经过多年的优化 linux 在 2.6 的内核中增加一个新特性— —统一设备模型。接下来我们一起探索统一设备模型实现了哪些功能并且如何实现的吧。
二、Linux 设备模型结构
三、文章结构
下面是该系列的文章结构,斜体的标题为还未完成的文章,文章我会持续更新。
(一):kobject、kset、ktype
(二):sys文件系统
(三):构建 sys 文件实验
(番外篇):引用计数的实现
(四):BUS
(五):platform
(六):设备树
(七):驱动与设备树
(八):class
(番外篇):事件处理机制