Platform 平台设备驱动框架

platform平台设备驱动是基于设备驱动模型的,它将总线结构体struct bus_type封装为struct bus_type platform_bus_type,将驱动结构体struct device_driver封装为struct platform_driver,将设备结构体struct device封装为struct platform_device。

平台总线结构体 platform_bus_type

struct bus_type platform_bus_type = {.name      = "platform",.dev_groups = platform_dev_groups,//platform_match - bind platform device to platform driver..match        = platform_match,.uevent       = platform_uevent,.pm      = &platform_dev_pm_ops,
};

平台设备结构体 platform_device

### 如果内核不支持设备树,就需要编写此结构体,然后使用platform_device_register()将设备加载到内核中;
### 如果内核支持设备树,只需要在设备树中编写此设备节点,内核会自动将其加载到内核中。struct platform_device {const char    *name;int       id;bool     id_auto;struct device   dev;u32     num_resources;struct resource   *resource;const struct platform_device_id   *id_entry;char *driver_override; /* Driver name to force a match *//* MFD cell pointer */struct mfd_cell *mfd_cell;/* arch specific additions */struct pdev_archdata    archdata;
};### 注册与卸载平台设备函数
platform_device_register() //注册platform设备
platform_device_unregister() //卸载platform设备

平台驱动结构体 platform_driver

struct platform_driver {int (*probe)(struct platform_device *);int (*remove)(struct platform_device *);void (*shutdown)(struct platform_device *);int (*suspend)(struct platform_device *, pm_message_t state);int (*resume)(struct platform_device *);struct device_driver driver;const struct platform_device_id *id_table;bool prevent_deferred_probe;
};### 注册与卸载平台驱动函数
platform_driver_register() //注册platform驱动
platform_driver_unregister() //卸载platform驱动

设备与驱动匹配

平台总线的platform_match()函数匹配成功以后,就会执行platform_driver平台驱动内的probe()函数。
platform_match()函数匹配方式:
方式1:platform_device.driver_override与platform_driver.device_driver.name作比较
方式2:platform_driver.driver.of_match_table内的compatible属性与设备of_device_id的compatible属性作对比
方式3:platform_driver.id_table与设备的i2c_device_id作比较
方式4:platform_device.name与platform_driver.device_driver.name作比较

Platform平台设备驱动框架相关推荐

  1. linux驱动开发篇(四)—— platform平台设备驱动

    linux系列目录: linux基础篇(一)--GCC和Makefile编译过程 linux基础篇(二)--静态和动态链接 ARM裸机篇(一)--i.MX6ULL介绍 ARM裸机篇(二)--i.MX6 ...

  2. Linux Platform平台设备驱动模型

    Linux总线设备驱动模型主要包含总线.设备.驱动三个部分. 现实总线:一个现实的Linux设备和驱动通常都需要挂接在一种总线上,对于本身依附于PCI.USB.I2C.SPI等的设备而言,这自然不是问 ...

  3. Linux内核平台设备驱动模型platform_device和platform_driver框架

    关于Linux平台设备驱动模型,并不是创建新的设备分类,是在原有的字符设备基础上使用,将设备和驱动分开,生成两个.ko文件.         Linux内核维护一个全局设备链表,对应的总线会将驱动和设 ...

  4. windows linux 融合,Windows和Linux的设备驱动框架的对比融合研究

    摘要:把驱动框架分为三层,针对各层在Windows和Linux中的实现方法的不同,对Windows和Linux的设备驱动框架进行对比研究.从接口函数,应用程序访问驱动程序的路径,驱动程序具体实现及安装 ...

  5. 设备驱动,字符设备驱动、(总线)设备驱动模型、sysfs文件系统、平台设备驱动

    以下内容转载于微信公众号:嵌入式企鹅圈.如有侵权,请告知删除. 学习Linux设备驱动开发的过程中自然会遇到字符设备驱动.平台设备驱动.设备驱动模型和sysfs等相关概念和技术. 对于初学者来说会非常 ...

  6. platfrom设备驱动框架

    前面编写的设备驱动都非常的简单,都是对IO进行最简单的读写操作.像I2C.SPI.LCD 等这些复杂外设的驱动就不能这么去写了,Linux 系统要考虑到驱动的可重用性,因此提出了驱动的分离与分层这样的 ...

  7. MTK平台LCD驱动框架详解(一)

    许多学习嵌入式的进入MTK开发平台,很多东西都会感到很陌生.在MTK平台上你可以简简单单几分钟就点亮一块屏.加上MTK快速开发的节奏,也很少有时间自己整理学习.如果不思进取,不加班加点学习.很容易就慢 ...

  8. 嵌入式Linux设备驱动程序开发指南9(平台设备驱动)——读书笔记

    平台设备驱动 九.平台设备驱动 9.1 平台设备驱动概述 9.2 GPIO驱动 9.2.1 简介 9.2.2 硬件名称 9.2.3 引脚控制器 9.2.4 引脚控制子系统 9.2.5 GPIO控制器驱 ...

  9. 字符设备驱动、平台设备驱动、设备驱动模型、sysfs的比较和关联

    参考原文:https://www.kancloud.cn/yueqian_scut/emlinux/106829 对原文笔误地方做了修改.重新排版 目录 字符设备驱动.平台设备驱动.设备驱动模型.sy ...

最新文章

  1. 刚弄好的中台!又要开始拆了?难道是为了凑工作量?
  2. IBM推出云深度学习图形芯片Tesla P100 GPU加速器
  3. 解放学校网络管理员的双手 ——陕西省基础教育专网×××接入程序的优化
  4. django18:auth模块
  5. Text Link Ads 注册[赚钱一]
  6. (16)System Verilog禁止类中所有变量随机化
  7. QQ 新增“语音进度条”;滴滴顺风车负责人道歉;华为研发费将超 1000 亿美元 | 极客头条...
  8. 经营生鲜便利店的超级产品战略,盘点那些靠卖菜抢占社区的便利店
  9. ubuntu16.04安装NVIDIA显卡驱动
  10. openGauss助力中国移动获 “ICT优秀案例”
  11. 基于多任务深度学习的时空网络流量预测
  12. 前后端分离-CRUD
  13. Vue响应式声明渲染机制
  14. UCenter的百科
  15. 使用PreTranslateMessage(MSG* pMsg)截获键盘数字键
  16. 逆向工程核心原理 小结
  17. kk_想要学习的知识
  18. 意想不到!这个神奇的bug让我加班到深夜
  19. 【单片机毕业设计】【mcuclub-jj-051】基于单片机的书桌的设计
  20. 时序分析基本概念介绍Scenario

热门文章

  1. java csv to list_java – 如何轻松地将CSV文件处理为List
  2. python列表注解
  3. centos7 yum修改为国内源
  4. 关于数据库的设计的一点思路
  5. 前端上传数据-按解析顺序
  6. Redis那些事(一) — Redis简介
  7. p1218 Superprime Rib
  8. leetcode 144. Binary Tree Preorder Traversal ----- java
  9. Android SDK Manager更新不了的解决办法
  10. URAL 1233 Amusing Numbers 好题