什么叫做驱动框架?
内核中驱动部分维护者针对每个种类的驱动设计一套成熟的、标准的、典型的驱动实现,并把不同厂家的同类硬件驱动中相同的部分抽出来自己实现好,再把不同部分留出接口给具体的驱动开发工程师来实现,这就叫驱动框架。
即标准化的驱动实现,统一管理系统资源,维护系统稳定。
这样驱动开发从设计题变成了填空题。
基于 Linux kernel-5.1,参考 Linux 源码根目录下 MAINTAINERS 文件,该文件是目前内核维护人员列表,从这里可以看出 Linux 大概有哪些部分。MAINTAINERS 文件中已经列出了 2280 个子系统 subsystems,但并不是每个子系统都一直在维护,很多已经不维护了。下面列出比较常见的子系统。
- gpio 子系统
- pinctrl 子系统
- input 子系统
- PWM 子系统
- leds 子系统
- 中断子系统
- IIO(Industrial Input/Output) 子系统
- ADC 子系统
- I2C 子系统
- SPI 子系统
- regmap 子系统
- USB 子系统
- RTC 子系统
- Common Clock 子系统
- cpufreq 子系统
- cpuidle 子系统
- Security 子系统
- SOC-CAMERA V4L2 子系统
- 音频 ALSA 子系统
- 时间子系统
- 图形子系统
- TTY 子系统
- Remote Processor 子系统
- Remote Processor Message 子系统
- SCSI 子系统
- SOUNDWIRE 子系统
- SPMI 子系统
- STAGING 子系统
- SWIOTLB 子系统
- TEE 子系统
- TURBOCHANNEL 子系统
- ULTRA-WIDEBAND (UWB) 子系统
- VME 子系统
- XEN BLOCK 子系统
- XEN PCI 子系统
- XEN SWIOTLB 子系统
- MFD 子系统
- Regulator 子系统
- counter 子系统
- mtd 子系统
- PM wakeup source 子系统
- Runtime PM 子系统