1.背景
Linux系统要考虑到驱动的可重用性,因此提出了驱动的分离与分层这样的软件思路
对于 Linux 这样一个成熟、庞大、复杂的操作系统,代码的重用性非常重要,否则的话就会在 Linux 内核中存在大量无意义的重复代码。尤其是驱动程序,因为驱动程序占用了 Linux内核代码量的大头,如果不对驱动程序加以管理,任由重复的代码肆意增加,那么用不了多久Linux内核的文件数量就庞大到无法接受的地步。
2.简述
2.1 驱动的分隔与分离
- 上面的这种框架,会看出设备端的驱动被编写好几次。
- 上面的这种框架大大简化驱动文件。
分隔后的驱动框架
- 上面的框架就是驱动的分隔,可以看到驱动文件和设备文件隔开(一般驱动文件和设备文件都有各自的厂家编好了)我们只需要提供设备信息来初始化设备(从设备驱动中剥离开来,从设备树中获取设备信息)
- 设备只负责设备,驱动只负责驱动,只要想办法让二者匹配即可
- 上面的叫做Linux中的“总线、驱动和设备模型”(驱动分离)。(总线就是充当月老的角色)
Linux中的“总线、驱动和设备模型”
2.2 分层
- 可以类比网络的OSI模型,目的就是在不同层处理不同的内容。
- example:
我们在编写输入设备驱动的时候只需要处理好输入事件的上报即可,至于如何处理这些上报的输入事件那是上层去考虑的,我们不要管。 - 借助分层模型可以极大的简化我们的驱动编写