【Linux驱动】platform 设备驱动分离(一)—— 驱动分层及相关API

本文详细阐述了Linux系统中驱动分层的架构,包括设备层管理设备属性信息、驱动层负责设备操作以及总线在设备与驱动间的中介作用。重点介绍了在没有设备树时的手动注册与使用设备树后的自动化过程,以及驱动与设备的匹配策略,如OF类型匹配、ACPI匹配和id_table匹配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以目前为止的逻辑,无论是获取设备属性信息,还是实现驱动逻辑,都是放在一个驱动模块中。在没有设备树的情况下,如果我们只需要修改设备信息(如寄存器地址),那么我们就需要重新编译整个驱动模块。

很显然,设备信息的变化不应该影响到驱动逻辑的正常运行,这就需要引入驱动分层的概念。

一、整体架构

驱动分层总体可以分为三层

  • 设备层:负责管理设备属性信息,包含了一些外设硬件信息,如寄存器地址、引脚配置信息等
  • 驱动层:负责驱使设备的正常运作,驱动程序借由总线传递控制信号、数据,进而来控制设备
  • 总线:驱动和设备信息的月老,负责设备和驱动程序之间的通信和数据交换

驱动程序要想驱使设备,需要先让驱动与设备匹配,匹配工作由总线负责。只有当左侧的设备与右侧的驱动程序建立联系以后,驱动程序才可以驱使设备。

        (1) 当我们向系统注册一个驱动,总线会在左侧查找是否存在与之匹配的设备;

        (2) 当我们向系统注册一个设备,总线会在右侧查找是否存在与之匹配的驱动;

=============== 不使用设备树 ===============

不使用设备树时需要手动注册 platform 设备和 platform 驱动,手动注册 platform 设备其实就是在向内核添加硬件外设信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值