14.1linux中platform设备驱动实验(知识点)_csdn

我们在前面几章编写的设备驱动都非常的简单,都是对 GPIO 进行最简单的读写操作。
I2C、 SPI、 LCD 等这些复杂外设的驱动就不能这么去写了, Linux 系统要考虑到驱动的可重用性,因此提出了驱动的分离与分层这样的软件思路,在这个思路下诞生了我们将来最常打交道的 platform 设备驱动,也叫做平台设备驱动
本章我们就来学习一下 Linux 下的驱动分离与分层,以及 platform 框架下的设备驱动该如何编写。

1.Linux 驱动的分离与分层

1.1、驱动的分隔与分离

Pasted image 20250403102328.png
Pasted image 20250403102608.png
Pasted image 20250403102637.png
Pasted image 20250403102656.png
Pasted image 20250403103530.png
驱动通过标准方法获取设备信息(从设备树中获取到设备信息),然后设备的方面,根据获取到的设备信息来初始化设备。
这样就相当于驱动只负责驱动设备只负责设备,想办法将两者进行匹配即可。
Pasted image 20250403103742.png
Pasted image 20250403103829.png

1.2、驱动的分层

上一小节讲了驱动的分隔与分离,本节我们来简单看一下驱动的分层,大家应该听说过网络的 7 层模型,不同的层负责不同的内容。同样的, Linux 下的驱动往往也是分层的,分层的目的也是为了在不同的层处理不同的内容。以其他书籍或者资料常常使用到的input(输入子系统,后面会有专门的章节详细的讲解)为例,简单介绍一下驱动的分层。 input 子系统负责管理所有跟输入有关的驱动包括键盘、鼠标、触摸等,最底层的就是设备原始驱动,负责获取输入设备的原始值,获取到的输入事件上报给 input 核心层。 input 核心层会处理各种 IO 模型,并且提供 file_operations 操作集合。我们在编写输入设备驱动的时候只需要处理输入事件的上报即可,至于如何处理这些上报的输入事件那是上层去考虑的,我们不用管。可以看出借助分层模型可以极大的简化我们的驱动编写,对于驱动编写来说非常的友好。

2.platform 平台驱动模型简介

前面我们讲了设备驱动的分离,并且引出了总线(bus)、驱动(driver)和设备(device)模型,比如 I2C、 SPI、 USB 等总线。在 SOC 中有些外设是没有总线这个概念的,但是又要使用总线、驱动和设备模型该怎么办呢?为了解决此问题, Linux 提出了 platform 这个虚拟总线,相应的就有 platform_driver 和 platform_device。

2.1、platform 总线

Pasted image 20250403104659.png
Pasted image 20250403104714.png
Pasted image 20250403104759.png
Pasted image 20250403104947.png
Pasted image 20250403105431.png
Pasted image 20250403105516.png
Pasted image 20250403105548.png

2.2、platform 驱动

Pasted image 20250403110420.png
Pasted image 20250403110430.png
Pasted image 20250403110449.png
Pasted image 20250403110510.png
Pasted image 20250403110526.png
Pasted image 20250403110604.png
Pasted image 20250403110616.png
Pasted image 20250403110633.png
Pasted image 20250403110652.png
Pasted image 20250403110704.png
Pasted image 20250403110719.png
Pasted image 20250403110805.png
Pasted image 20250403110819.png
Pasted image 20250403110835.png
Pasted image 20250403110901.png
Pasted image 20250403110915.png
Pasted image 20250403110929.png

2.3、platform 设备

Pasted image 20250403111031.png
Pasted image 20250403111042.png
Pasted image 20250403111055.png
Pasted image 20250403111108.png
Pasted image 20250403111122.png
Pasted image 20250403111138.png
Pasted image 20250403111201.png
Pasted image 20250403111216.png
Pasted image 20250403111235.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值