Linux platform驱动框架笔记

1.驱动的分隔

Linux platform驱动框架笔记_第1张图片
上图为驱动的分隔,也就是将主机驱动和设备驱动分隔开来。比如 I2C、SPI 等等都会采用驱动分隔的方式来简化驱动的开发。在实际的驱动开发中,一般 I2C 主机控制器驱动(eg:imx6ul的i2c主机驱动)已经由半导体厂家编写好了,而设备驱动(eg:MPU6050的i2c设备驱动)一般也由设备器件的厂家编写好了,我们只需要提供设备信息即可。

2.驱动的分离

Linux platform驱动框架笔记_第2张图片
将主机驱动和设备驱动可以再细化。比如 I2C 设备的话提供设备连接到了哪个 I2C 接口上,I2C 的速度是多少等等。相当于将设备信息从设备驱动中剥离开来(驱动的分离),如上图所示。驱动使用标准方法去获取到设备信息(比如从设备树中获取到设备信息),然后根据获取到的设备信息来初始化设备。 这样就相当于驱动只负责驱动,设备只负责设备,想办法将两者进行匹配即可(用platform总线去匹配)。
Linux 内核中大量的驱动程序都采用总线、驱动和设备模式。但在 SOC 中有些外设是没有总线这个概念的,但是又要使用总线、驱动和设备模型该怎么办呢?为了解决此问题,Linux 提出了 platform 这个虚拟总线,相应的就有 platform_driver 和 platform_device。

platform总线:platform总线由Linux 内核提供的,不需要管;
platform_device:在使用设备树的时候,设备的描述被放到了设备树中,因此 platform_device 就不需要我们去编写了;
platform_driver :需要我们去实现。

platform框架是针对于驱动的框架。
对于I2C的完整驱动的解析如下:
Linux platform驱动框架笔记_第3张图片

你可能感兴趣的:(Linux)