关于Linux驱动的平台注册方式-- platform_driver_register

http://hi.baidu.com/deep_pro/blog/item/754f7764b73099fbf636544a.html

 

cdev_add 、register_blkdev 这样的驱动注册函数
platform_driver_register这样的写法,
但是没有看到哪本书介绍了相关内容


简要说,使用这种方式,可以轻松的实现device和driver的匹配,即热插拔
因为平台驱动提供了probe 方法,用来探测匹配设备

而通过cdev_add 的方式,就没有probe 的好处,虽然驱动也能够运行,但是属于无组织无纪律的方式,
近似于每个驱动独占设备的控制权
此时设备无法自动找到驱动,只有手动加载驱动,创建设备节点,使用应用程序来控制设备
但是这似乎才是我们熟知的方法,虽然其实不咋地

/Documentation/driver-model/platform.txt

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

目前还是感觉错误多多,
这样的话,综合以上,应该是说platform device在soc上地位特殊,不是正常挂在PCI 这种可以探测的总线上的,才需要使用这种方式主动触发一个probe来匹配驱动和设备

你可能感兴趣的:(关于Linux驱动的平台注册方式-- platform_driver_register)