platform device和platform driver简述
首先我们在module_init中使用platform_driver_register来注册我们的驱动。一般来说platform_driver_register放在module_init的最后调用,因为platform_driver_register如果检测到有归属于该驱动的device就会去调用你驱动里的probe,probe完结后platform_driver_register才会返回,所以在注册驱动前要先把device number, class这些东西先注册上,probe里要用的。
module_init的基本工作(假定是char dev):
int mymodule_init()
{
alloc_chrdev_region(...);
class_create(...);
platform_driver_register(...);
}
如果有ID match上的话platform_driver_register就会调用probe:
platform device基本上就是用来描述你写在device tree里的那些东西。
以下两个函数用于设置/获取设备相关的数据(可以理解为类似WDM中的DEVICE_EXTENSION):
platform_set_drvdata(struct platform_device *pdev, void *data); void *platform_get_drvdata(struct platform_device *pdev);
如果你的设备使用中断:
int irq = platform_get_irq(pdev, );
request_irq(irq, ...);
如果设备使用两个或以上中断,那么platform_get_irq的第二参数分别是0, 1, ...。
当然对应的中断向量ID要事先写在device tree里面。device tree中的中断向量ID和platform_get_irq返回的irq一般来说是不一样的。
platform device和platform driver简述的更多相关文章
- Platform device/driver注册过程
		Platform是一种虚拟总线,Platform机制将设备本身的资源注册进内核,有内核统一管理,在驱动程序使用这些资源时使用统一的接口,这样提高了程序的可移植性. Linux的大部分设备驱动都可以使用 ... 
- RK30SDK开发板驱动分析(一):platform device 的概念与注册
		做过51单片机或者ARM开发的人都知道,单片机内部都有自己的“片内外设”,比如UART,比如I2C,比如SPI等等... 写单片机程序的时候,比如对于UART的驱动,我们都是在程序中直接写一套函数,来 ... 
- [platform]Device和Driver注册顺序
		1. 设备和驱动注册,无论谁先谁后,都可以通过查询总线进行匹配 设备挂接到总线上时,与总线上的所有驱动进行匹配(用bus_type.match进行匹配),如果匹配成功,则调用bus_type.prob ... 
- [platform]linux platform device/driver(二)--Platform Device和Platform_driver注册过程之详细代码
		转自:http://www.cnblogs.com/haimeng2010/p/3582403.html 目录: 1.platform_device注册过程 2.platform_driver注册过程 ... 
- [platform]linux platform device/driver(一)--Driver是如何找到对应的device
		1.platform device是怎么"自动"关联到platform driver上的? 转向linux driver有些时间了,前段时间碰到个问题,在Linux kernel ... 
- Linux Platform Device and Driver
		从 Linux 2.6 起引入了一套新的驱动管理和注册机制 :Platform_device 和 Platform_driver . Linux 中大部分的设备驱动,都可以使用这套机制 , 设备用 P ... 
- 从串口驱动的移植看linux2.6内核中的驱动模型 platform device & platform driver【转】
		转自:http://blog.csdn.net/bonnshore/article/details/7979705 写在前面的话: 博主新开了个人站点:你也可以在这里看到这篇文章,点击打开链接 本文是 ... 
- 驱动开发学习笔记. 0.05 linux 2.6 platform device register 平台设备注册 2/2 共2篇
		驱动开发读书笔记. 0.05 linux 2.6 platform device register 平台设备注册 2/2 共2篇 下面这段摘自 linux源码里面的文档 : 内核版本2.6.22Doc ... 
- 驱动开发学习笔记. 0.04  linux 2.6 platform device register 平台设备注册  1/2 共2篇
		驱动开发读书笔记. 0.04 linux 2.6 platform device register 平台设备注册 1/2 共2篇下面这段摘自 linux源码里面的文档 : Documentatio ... 
随机推荐
- 第一章连通性问题-----algorithm in C 读书笔记
			首先不得不吐槽一下翻译的质量,霍红卫....你给我站出来,不打死你,只想问你一下,你当年四级过了吗? 问题描述 输入两个整数,代表两个节点,如果这两个整数没有建立连接(这包括直接连接和通过其他节点连接 ... 
- CSRmesh Application
			1.CSRmesh Control Application v2.0.1版本可以运行在支持BLE4.0的Android设备上,该版本在Android4.4.4.5.0.5.0.1.5.0.2.5.1和 ... 
- DevExpress v17.2新版亮点—DevExtreme篇(三)
			用户界面套包DevExpress DevExtreme v17.2终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExtreme v17.2 的New Color Sche ... 
- wilber3申请数据的直接目录寻找
			ftp://ds.iris.edu/pub/userdata/ 
- addslash()
			php addslashes函数的作用是在预定义的字符前面加上反斜杠,这些预定义字符包括: 单引号(') 双引号(") 反斜杠(\) NULL addslashes函数经常使用在向数据库插入 ... 
- C++语言的一些问题
			论坛上看到的有人提出的关于C++的一些问题,真是细致(下面还有回复说他对C++一知半解的),一直以为自己的C++还是可以的,可是看了之后真是内牛满面,为什么自己从来没有想的这么深入,差距真的有这么大吗 ... 
- Error: map 不是模板
			问题: 笔者在自定义的namespace中使用map的时候,出现如题所示的问题. Error: map 不是模板 解决 百思不得其解. 然后Google到一片CSDN博文的类似问题 vector不是模 ... 
- ACM 常见词汇
			rectangular 美: [rek'tæŋɡjələr] 英: [rek'tæŋɡjʊlə(r)] adj. 矩形的:成直角的 grid 美: [ɡrɪd] 英: [ɡrɪd] n. ... 
- WinRAR的自解压模式 - imsoft.cnblogs
			一个 SFX (SelF-eXtracting)自解压文件是压缩文件的一种,它结合了可执行文件模块,一种用以运行从压缩文件解压文件的模块.这样的压缩文件不需要外部程序来解压自解压文件的内容,它自己便可 ... 
- Windows7系统中nginx与IIS服务器搭建集群实现负载均衡
			10分钟搭建服务器集群——Windows7系统中nginx与IIS服务器搭建集群实现负载均衡 分布式,集群,云计算机.大数据.负载均衡.高并发······当耳边响起这些词时,做为一个菜鸟程序猿无疑 ... 
