前言
一个完整的驱动程序总是由三部分组成:设备、总线、驱动
设备就好比我们的硬件:比如oled ,那么总线就相当于iic总线,驱动就是我们编写的控制oled的代码。
那么今天要讲的平台总线又是什么呢?
一、什么是平台总线?
在 Linux 2.6 以后的设备驱动模型中,需关心总线、设备和驱动这 3 个实体,总线将设备和驱动绑定。在系统每注册一个设备的时候,会寻找与之匹配的驱动;相反的,在系统每注册一个驱动的时候,会寻找与之匹配的设备,而匹配由总线完成。
Linux 发明了一种虚拟的总线,称为 platform 总线,相应的设备称为 platform_device,而驱动成为 platform_driver。
平台总线模型就是把原来的驱动 C 文件给分成了两个 C 文件,一个是 device.c,一个是 driver.c 把稳定不变的放在 driver.c 里面,需要变得就放在了 device.c 里面
一般模型如下:
如果我们使用的设备树,那么device.c部分就会换成设备树用来描述硬件资源。
二、平台总线相关的结构体
在 Linux 内核中,用 platform_driver
结构体表示 platform 驱动,platform_d