初识platform device

本文探讨了Linux平台设备(platform device)与驱动之间的匹配机制,特别是对于嵌入式SoC环境中的设备。通过对比cdev_add等传统方法,强调了platform_driver_register方式的优势,如自动探测和热插拔特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现在我能熟练使用cdev_add 、register_blkdev 这样的驱动注册函数
但是我一直不能忘记学习平台移植的时候修改的众多platform_xxxx 结构体和注册api
而且在很多驱动代码里也都见到了platform_driver_register这样的写法,
但是没有看到哪本书介绍了相关内容

今天问了刘洪涛老师,老师很激动地讲了20分钟,很有收获
简要说,使用这种方式,可以轻松的实现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来匹配驱动和设备

 

原文地址:http://hi.baidu.com/deep_pro/blog/item/754f7764b73099fbf636544a.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值