Linux驱动-platform设备驱动
#1 platform设备驱动模型数据结构
一般总线驱动设备数据结构
驱动 总线 设备
device_driver bus_type device
一般总线驱动设备数据结构
驱动 总线 设备
platform_driver platform_bus_type platform_device
#2 platform总线注册
platform_bus_init
bus_register(&platform_bus_type);//注册之前要先构造platform总线数据结构,如下:
struct bus_type platform_bus_type = {.name = "platform",.dev_groups = platform_dev_groups,.match = platform_match,.uevent = platform_uevent,.pm = &platform_dev_pm_ops,
};
#3 platform驱动
数据结构如下:
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驱动时需要向内核注册,流程如下:
platform_driver_register__platform_driver_register设置driver的probe为platform_drv_prob;driver_register
向内核注册驱动的时候,如果驱动和设备匹配成功,就会执行platform_drv_prob函数;
#4 platform设备
数据结构如下:
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;};
总结:
1.无设备树时,此时需要驱动工程师编写设备注册文件,使用platform_device_register向内核注册设备;
2.有设备树时,修改设备树的设备节点即可,内核会解析设备会,并将设备树还原成设备;
当设备与platform的驱动匹配以后,就会执行platform_driver结构中的probe函数;
#5 platform匹配过程
platform_matchof_driver_match_device //使用设备树时acpi_driver_match_deviceplatform_match_id //根据platform_driver->id_tablestrcmp(pdev->name, drv->name) //比较platform_device->name和platform_driver->name//无设备树时使用
匹配过程优先使用设备树方式,使用设备树时的匹配流程如下:
of_driver_match_deviceof_match_device(const struct of_device_id *matches,const struct device *dev) //of_match_table保存了驱动支持的设备信息of_match_node__of_match_node__of_device_is_compatible__of_find_property(device, "compatible", NULL);//取出属性值
Linux驱动-platform设备驱动相关推荐
- Linux之Platform设备驱动
目录 一.Linux 设备驱动分层和分离 1.设备驱动的分层思想 2.主机驱动和外设驱动分离思想 二.Platform 平台驱动模型 1.platform 设备 2.platform 驱动 3.pla ...
- Linux驱动——platform设备驱动实验
文章目录 1. 驱动的分离和分层 1.1 驱动的分离 1.3 驱动的分层 2. 实验程序编写 2.1 leddevice.c编写 2.2 leddriver.c编写 3. 测试 4. 总结 1. 驱动 ...
- Linux 设备驱动开发 —— platform 设备驱动
一.platform总线.设备与驱动 在Linux 2.6 的设备驱动模型中,关心总线.设备和驱动3个实体,总线将设备和驱动绑定.在系统每注册一个设备的时候,会寻找与之匹配的驱动:相反 ...
- Linux 设备驱动开发 —— 设备树在platform设备驱动中的使用
关与设备树的概念,我们在Exynos4412 内核移植(六)-- 设备树解析 里面已经学习过,下面看一下设备树在设备驱动开发中起到的作用 Device Tree是一种描述硬件的数据结构,设备树源(De ...
- Linux驱动之platform设备驱动
当我们在一块开发板上写好了驱动,但换一块不同芯片的开发板,我们就需要重新写一个驱动.其中主要是硬件连接也就是接口发生了改变,而软件框架几乎不用通用的.所以为了更加方便地移植,能够仅修改很小的内容就达到 ...
- 嵌入式linux platform设备驱动
对于linux这样一个成熟,庞大,复杂的操作系统,代码的重用性非常重要,否则的话会在linux内核中存在大量无意义的重复代码.尤其是驱动程序,因为驱动程序占用了 Linux内核代码量的大头,如果不对驱 ...
- Linux platform 设备驱动实验-基于正点原子IMX6ULL开发板
我们以前的设备驱动都非常的简单,都是对IO进行最简单的读写操作.像I2C. SPI.LCD 这些复杂外设的驱动就不能这么去写了,Linux 系统要考虑到驱动的可重用性,因此提出了驱动的分离与分层这样的 ...
- linux设备驱动归纳总结(九):1.platform设备驱动
http://blog.chinaunix.net/uid-25014876-id-111745.html 这一节可以理解是第八章的延伸,从这节开始介绍platform设备驱动. 一.什么是paltf ...
- Linux 设备驱动开发 —— platform设备驱动应用实例解析
前面我们已经学习了platform设备的理论知识Linux 设备驱动开发 -- platform 设备驱动 ,下面将通过一个实例来深入我们的学习. 一.platform 驱动的工作过程 platfor ...
最新文章
- php fread读行,如何使fread阻塞和读取直到结束?
- 使用Windbg解析dump文件
- python数据分析pandas_Python数据分析之 pandas汇总和计算描述统计
- 关于Ocelot 网关结合Consul实现服务转发的坑爹问题
- 平安人寿福利BUFF重磅推介 | 北京研发中心职位速递
- 查看Servlet 3.0的新增功能
- Android官方开发文档Training系列课程中文版:动画视图之场景创建
- Qt工作笔记-对qmake的认识【两篇转载结合】
- [专栏精选]UnityWebRequest详解
- ELK下Kibana的使用
- (转)嘉信理财再度全面降佣,它会否成为投资界的Amazon?
- <C语言>数据文件自动生成(多模块进阶)
- python爬取凤凰新闻_Python爬虫实践(9)--爬取凤凰网汽车资讯
- CAD的.net开发
- C语言——超市商品管理系统
- 可微信打印的共享服务器哪好,基于微信的图片打印分享平台
- 进化计算(七)——MOEA/D算法详解
- 刚入行的软件测试工程师如何自学软件测试?
- macOS免费串口工具coolTerm/Minicom/Comtool/Volt+(伏特加)/友善串口调试助手/screen/picocom
- 万维钢解读,从数学上解释为什么绝大多数投资者都会输给市场?最可能值,远远小于平均值...
热门文章
- 云计算、社交网络和移动互联网------转自月光博客
- 如何编写一个程序,将一个给定的整数插到原本有序的整数序列中,使结果序列仍然有序。
- 幻数java题_java – ConcurrentModificationException的幻数
- 【杰神说说】物联大师2.0版本预告
- Flex Frameworks
- 对合成大西瓜修改图片的实践
- JavaScript中e.keycode详解
- 报错-vue.runtime.esm.js?2b0e:619 [Vue warn]: Unknown custom element: <el-dialog> - did you register th
- R语言使用cph函数和rcs函数构建限制性立方样条cox回归模型、使用rms包的Predict函数计算指定连续变量在不同分组变量下和风险比HR值的关系、使用ggplot2可视化变量与风险值HR的关系
- JAVA算法(四平方和)