《ARM Linux设备驱动开发详解
–基于最新的 Linux 4.0 内核》读书笔记–软件的低内聚、高耦合
- 在驱动软件的开发过程中,要遵循软件设计中低内聚、高耦合的要求。也就是驱动只实现接口,具体的实现由应用去实现。简单的例子,在没有操作系统的单片机软件设计中,我之前的代码是驱动和应用通常在一个文件中实现,这样移植的话就不是很方便,而采用低内聚、高耦合的观点,驱动和应用分开,通过接口调用实现功能,那么只需要修改驱动接口的文件,而应用软件不需要修改。比如简单的 LED 的亮灭闪烁,如果实现 LED 亮灭的
light_on()
和light_off()
的驱动接口函数和实现 LED 闪烁和变化的应用的实现在一个文件中的时候,在移植的时候看起来就比较混乱。遵循低内聚、高耦合的设计方法,在驱动文件中只实现light_on()
和light_off()
驱动接口,在另一个应用文件中去实现 LED 的闪烁和变化,这样在移植的时候只需要修改驱动文件,而应用文件不需要做任何修改,减少移植的工作量。 - Linux 设备驱动将存储器和外设分为3个大类
- 字符设备
- 块设备
- 网络设备
- 字符设备指那些以串行顺序依次进行访问的设备。块设备可以按任意顺序进行访问。网络设备则是使用套接字接口。
- Linux 设备驱动是在硬件的基础上实现系统的 API 。因此,设备驱动也可以再分为两层,一层是设备驱动中的硬件操作,也就是对硬件进行直接操作的设备驱动,在此之上,是设备驱动中独立于设备的接口,其基于硬件的设备驱动实现操作系统的接口。