Platform平台设备驱动框架
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平台设备驱动框架相关推荐
- linux驱动开发篇(四)—— platform平台设备驱动
linux系列目录: linux基础篇(一)--GCC和Makefile编译过程 linux基础篇(二)--静态和动态链接 ARM裸机篇(一)--i.MX6ULL介绍 ARM裸机篇(二)--i.MX6 ...
- Linux Platform平台设备驱动模型
Linux总线设备驱动模型主要包含总线.设备.驱动三个部分. 现实总线:一个现实的Linux设备和驱动通常都需要挂接在一种总线上,对于本身依附于PCI.USB.I2C.SPI等的设备而言,这自然不是问 ...
- Linux内核平台设备驱动模型platform_device和platform_driver框架
关于Linux平台设备驱动模型,并不是创建新的设备分类,是在原有的字符设备基础上使用,将设备和驱动分开,生成两个.ko文件. Linux内核维护一个全局设备链表,对应的总线会将驱动和设 ...
- windows linux 融合,Windows和Linux的设备驱动框架的对比融合研究
摘要:把驱动框架分为三层,针对各层在Windows和Linux中的实现方法的不同,对Windows和Linux的设备驱动框架进行对比研究.从接口函数,应用程序访问驱动程序的路径,驱动程序具体实现及安装 ...
- 设备驱动,字符设备驱动、(总线)设备驱动模型、sysfs文件系统、平台设备驱动
以下内容转载于微信公众号:嵌入式企鹅圈.如有侵权,请告知删除. 学习Linux设备驱动开发的过程中自然会遇到字符设备驱动.平台设备驱动.设备驱动模型和sysfs等相关概念和技术. 对于初学者来说会非常 ...
- platfrom设备驱动框架
前面编写的设备驱动都非常的简单,都是对IO进行最简单的读写操作.像I2C.SPI.LCD 等这些复杂外设的驱动就不能这么去写了,Linux 系统要考虑到驱动的可重用性,因此提出了驱动的分离与分层这样的 ...
- MTK平台LCD驱动框架详解(一)
许多学习嵌入式的进入MTK开发平台,很多东西都会感到很陌生.在MTK平台上你可以简简单单几分钟就点亮一块屏.加上MTK快速开发的节奏,也很少有时间自己整理学习.如果不思进取,不加班加点学习.很容易就慢 ...
- 嵌入式Linux设备驱动程序开发指南9(平台设备驱动)——读书笔记
平台设备驱动 九.平台设备驱动 9.1 平台设备驱动概述 9.2 GPIO驱动 9.2.1 简介 9.2.2 硬件名称 9.2.3 引脚控制器 9.2.4 引脚控制子系统 9.2.5 GPIO控制器驱 ...
- 字符设备驱动、平台设备驱动、设备驱动模型、sysfs的比较和关联
参考原文:https://www.kancloud.cn/yueqian_scut/emlinux/106829 对原文笔误地方做了修改.重新排版 目录 字符设备驱动.平台设备驱动.设备驱动模型.sy ...
最新文章
- 刚弄好的中台!又要开始拆了?难道是为了凑工作量?
- IBM推出云深度学习图形芯片Tesla P100 GPU加速器
- 解放学校网络管理员的双手 ——陕西省基础教育专网×××接入程序的优化
- django18:auth模块
- Text Link Ads 注册[赚钱一]
- (16)System Verilog禁止类中所有变量随机化
- QQ 新增“语音进度条”;滴滴顺风车负责人道歉;华为研发费将超 1000 亿美元 | 极客头条...
- 经营生鲜便利店的超级产品战略,盘点那些靠卖菜抢占社区的便利店
- ubuntu16.04安装NVIDIA显卡驱动
- openGauss助力中国移动获 “ICT优秀案例”
- 基于多任务深度学习的时空网络流量预测
- 前后端分离-CRUD
- Vue响应式声明渲染机制
- UCenter的百科
- 使用PreTranslateMessage(MSG* pMsg)截获键盘数字键
- 逆向工程核心原理 小结
- kk_想要学习的知识
- 意想不到!这个神奇的bug让我加班到深夜
- 【单片机毕业设计】【mcuclub-jj-051】基于单片机的书桌的设计
- 时序分析基本概念介绍Scenario