当前位置: 首页 > news >正文

驱动——Platform

1. 核心定义

Linux Platform(Linux 平台驱动框架)是 Linux 内核为了解决 **“相同功能的硬件,因不同厂商 / 硬件布局导致驱动重复开发”** 问题而设计的设备 - 驱动匹配框架
本质是:将 “硬件的共性功能” 抽象为 “平台驱动”,将 “硬件的个性化参数”(如寄存器地址、中断号)抽象为 “平台设备”,通过内核的匹配机制让二者关联,实现驱动的复用。

因为不同厂商的开发板(如树莓派、Orange Pi)都可能使用 “LED 灯” 硬件,但 LED 的寄存器基地址、控制引脚、中断号可能不同;若没有 Platform 框架,每个开发板都要写一套 LED 驱动(重复);有了 Platform 框架:只需写 1 套 “LED 平台驱动”(处理开灯、关灯的共性逻辑),再为每个开发板定义 1 个 “LED 平台设备”(配置该板的 LED 参数),内核自动匹配二者,驱动即可复用。

Linux Platform 框架由 “平台设备(Platform Device) ”“平台驱动(Platform Driver) ”“内核匹配机制” 三部分组成,三者的关系如下:
平台设备(硬件参数) ←内核匹配→ 平台驱动(功能逻辑)

平台设备(Platform Device):描述 “硬件是什么”

核心数据结构struct platform_device(定义在include/linux/platform_device.h

动态注册:内核推荐通过设备树 ,定义平台设备,内核启动时自动解析设备树并注册为平台设备

平台驱动(Platform Driver):实现 “硬件能做什么”

核心数据结构struct platform_driver(定义在include/linux/platform_device.h

内核匹配机制:实现 “设备与驱动的关联”

  1. 内核维护两个链表:platform_devices(平台设备链表)和platform_drivers(平台驱动链表);
  2. 当注册平台设备或平台驱动时,内核遍历另一个链表,尝试匹配;
  3. 匹配成功后,调用平台驱动的probe()函数,完成硬件初始化。

Linux Platform 框架通过 “设备与驱动分离” 实现了驱动复用,

platform_deviceplatform_driver的数据结构、probe()函数的实现、设备树与驱动的匹配机制,以及资源申请与管理。

http://www.xdnf.cn/news/1483633.html

相关文章:

  • 总结-遇到
  • GD32自学笔记:1.Keil配置GD32环境
  • 【ComfyUI】区域条件控制 图像构图引导
  • 深入解析 Java 的类加载机制
  • docker安装redis(8.2.1)
  • 滑动窗口、哈希表
  • 【CMake】变量作用域2——函数作用域
  • 具身导航“所想即所见”!VISTA:基于生成式视觉想象的视觉语言导航
  • 【攻防实战】浅谈Cobalt Strike远控实战
  • 生命周期方法:didUpdateWidget
  • W25Q128
  • 今日分享:C++ -- list 容器
  • RecSys:用户行为序列建模以及DIN、SIM模型
  • 6.虚拟化历史
  • 象寄AI-专注商业视觉内容的智能生成
  • 【基础-单选】在Stage模型中,模块的配置文件是
  • SQL 实战指南:校园图书管理系统 SQL 设计(借阅 / 归还 / 库存查询实现)——超全项目实战练习
  • AI市场风起云涌,ai浏览器是最佳的落地项目,现在ai市场的ai浏览器竞争加剧,得ai浏览器者得天下!
  • 对接gemini-2.5-flash-image-preview教程
  • C++比较两个字符串
  • redis的数据类型:string
  • --定位--
  • isAssignableFrom() vs instanceof
  • CuTe C++ 简介02,gemm_device cuda kernel 的实现
  • Kernel中的cgroup2介绍
  • c++八股文1
  • ZooKeeper集群的安装与部署
  • 静态IP一般在什么业务场景中使用
  • Debezium日常分享系列之:Debezium 3.2.2.Final发布
  • 九月六号练习题