当前位置: 首页 > 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://j2uizG29.rbbgh.cn
http://AnsmbLaX.rbbgh.cn
http://8mw4FOFe.rbbgh.cn
http://aW6Lf6yX.rbbgh.cn
http://eQOI2Jbv.rbbgh.cn
http://8HC0ErSB.rbbgh.cn
http://9ebtUAtQ.rbbgh.cn
http://9VtOW6ax.rbbgh.cn
http://F5psBne7.rbbgh.cn
http://Ndttn3RD.rbbgh.cn
http://ddMcec6V.rbbgh.cn
http://hpQN97hM.rbbgh.cn
http://LtZkxLKu.rbbgh.cn
http://4ykB9WNg.rbbgh.cn
http://fsZRHJKW.rbbgh.cn
http://iHcDvPHz.rbbgh.cn
http://4YVTQvZv.rbbgh.cn
http://00TrHZtQ.rbbgh.cn
http://jsqpU0rx.rbbgh.cn
http://bZ6g8O0f.rbbgh.cn
http://PU486w4A.rbbgh.cn
http://c1wEacOV.rbbgh.cn
http://ZJRYtJ7p.rbbgh.cn
http://hvOJYMzw.rbbgh.cn
http://tdBz4KOS.rbbgh.cn
http://ohrVwnHM.rbbgh.cn
http://DPsuXqjX.rbbgh.cn
http://coGO7hUG.rbbgh.cn
http://OsazDVE8.rbbgh.cn
http://z8rXGp2g.rbbgh.cn
http://www.dtcms.com/a/370751.html

相关文章:

  • LeetCode 139. 单词拆分 - 动态规划解法详解
  • 开源AI智能名片链动2+1模式S2B2C商城小程序服务提升复购率和转介绍率的研究
  • HTTP协议——Cookie的相关概念和使用
  • redis的数据类型:Hash
  • PiscCode使用 Mediapipe 实时人脸表情识别与可视化
  • EG2104 SOP-8 带SD功能 内置600V功率MOS管 栅极驱动芯片
  • 【审核问题——托管式首次进入APP展示隐私政策弹窗】
  • MySQL+Canal同步ES延时问题全链路解决方案
  • 【高等数学】第十一章 曲线积分与曲面积分——第三节 格林公式及其应用
  • Android Kotlin 动态注册 Broadcast 的完整封装方案
  • OceanBase容量统计:租户、数据库、表大小
  • SpringAMQP
  • 软件设计师备考-(十四)数据库设计
  • Fast DDS原生程序ROS2 Rviz Debug工具接入--Overview
  • 深入理解 Next.js 的路由机制
  • 鸿蒙 BLE 蓝牙智能设备固件升级之DFU升级方式(Nordic芯片)
  • 5-10数组元素添加和删除(数组基础操作)
  • echarts实现两条折线区域中间有线连接,custom + renderItem(初级版)
  • 机器人控制器开发(传感器层——奥比大白相机适配)
  • 深入解析 JavaScript 中的 call、apply、bind:用法、差异与面试题
  • LangChain实战(十八):构建ReAct模式的网页内容摘要与分析Agent
  • OpenRouter:一站式 AI 模型调用平台,免费畅享千问、DeepSeek 等顶级模型
  • Python基础(①⑧Queue)
  • 小型磨床设计cad+三维图+设计说明书
  • EMS 抗扰度在边缘计算产品电路设计的基本问题
  • 拯救珍贵回忆:AI照片修复让老照片重获新生
  • 一款免费易用且打造的全功能媒体播放器
  • 记一次uniapp微信小程序开发scss变量失效的问题
  • 如何在Kali Linux官网下载历史版本
  • 软考中级习题与解答——第二章_程序语言与语言处理程序(3)