九鼎创展论坛中文版English
登录 | 立即注册 设为首页收藏本站 切换到宽版
查看: 6636|回复: 1
打印 上一主题 下一主题

platform_driver_register详解

[复制链接]
跳转到指定楼层
楼主
发表于 2012-7-19 12:07:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
linux内核设备驱动分为字符设备,快设备和网络设备这三种,没错吧?在编写驱动的时候用register_chrdev(),register_blkdev(),register_netdev()来注册驱动,但是我看2.6的内核代码则包含了platform_driver_register(),platform_device_register()这样的函数来注册,有什么区别或者特别之处吗?请问在linux-2.6的内核驱动开发中,platform_driver_register(),platform_device_register()的顺序是先要注册设备,然后才能注册驱动吗?顺序可以颠倒吗?
希望高人费点时间!


设备与驱动的两种绑定方式:在设备注册时进行绑定及在驱动注册时进行绑定。 以一个USB设备为例,有两种情形:
(1)先插上USB设备并挂到总线中,然后在安装USB驱动程序过程中从总线上遍历各个设备,看驱动程序是否与其相匹配,如果匹配就将两者邦定。这就是platform_driver_register()
(2)先安装USB驱动程序,然后当有USB设备插入时,那么就遍历总线上的各个驱动,看两者是否匹配,如果匹配就将其绑定。这就是platform_device_register()函数


platform device多用在嵌入式SOC环境下, 和标准bus(pci/usb/...)上的设备相比,
集成在soc的设备有一些特殊性: 比如不可以hotplug, 无法自动probe, 有许多相关的
资源(irq/io/memory/...)需要在arch代码中传递过来(而不是可以自动probe到), 正
是这些特殊之处才使得出现了platform device 以及其特殊的一些接口
(platform_device/platform driver )。

不过,从drivers/base/platform.c来看, 实际上只是在driver model做了一定封装,支持
platform的一些特有属性, 和driver model的差异并不大。


回复

使用道具 举报

沙发
发表于 2012-7-19 13:22:05 | 只看该作者
要是lz能介绍介绍IIC模型的架构机理就更好了,用户手册上的goodix的驱动只是就事论事的说了下功能。要是在有一篇驱动的调用流程,调用关系的话,对我们这些人的帮助就更大了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳市九鼎创展科技官方论坛 ( 粤ICP备11028681号-2  

GMT+8, 2024-5-8 03:38 , Processed in 0.017829 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表