多个同样的设备,驱动怎么写??

汗晕倒 2011-03-17 02:52:03
有几个同样的设备,驱动应该就要一份就可以了吧,这个怎么写呢??
我在只能当它们是不一样的,然后每个设备给一份驱动,这样写好浪费啊。。。
麻烦大侠,给点资料或例子看看~~
如果用主设备号+次设备号,那么怎么去访问它呢??在 /dev目录下是不是有多个节点还是只有一个节点??
...全文
199 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
thunder__god 2011-07-03
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分
远古 2011-07-03
  • 打赏
  • 举报
回复
platform_devices 和platform_driver是通过名字匹配的,因此,驱动只有一个就可以了,而platform_devices则注册多个,根据具体的设备,可能结构体中有些变量是不一样的,但名字都和platform_driver中的名字一样,最后register这些platform_devices时都会被这个platform_driver自动匹配驱动上。
confidence321 2011-04-09
  • 打赏
  • 举报
回复
这是多个类似的设备吧,我移植过一个扩展串口的驱动,用FPGA扩展12个串口。
你需要每个设备都有一个file_operations,如fops_0,fops_1,fops_2.,组成一个数组fops_array[]。然后再写一个总的file_operations如 fops_all. 只要在 fops_all的open,release方法中做filp->f_ops()更新,关联到某个特定的fops_n就行。 然后只要在读写方法中用portnumber加以区分即可。
在LDD3里的open一节,有这个方法。哈哈,祝你好运。
Wenxy1 2011-04-08
  • 打赏
  • 举报
回复
注册时注册多个设备即可。

参考LDD第3版中的例子!
汗晕倒 2011-03-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jee44 的回复:]

根据硬件的位置会建立多个实例,一般不同设备在dev目录下看到类似/dev/xxx0、/dev/xxx1的节点名字
[/Quote]

可否给个例子??
我现在用platform_driver 这个结构去获得一个设备,那这样是一对一的,就是说是一个驱动对应一个设备。多个实例这个怎么写,提示一下相关api,谢谢~
Jee44 2011-03-17
  • 打赏
  • 举报
回复
根据硬件的位置会建立多个实例,一般不同设备在dev目录下看到类似/dev/xxx0、/dev/xxx1的节点名字

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧