当前位置: 技术问答>linux和unix
多个同样的设备,驱动怎么写??
来源: 互联网 发布时间:2016-12-10
本文导语: 有几个同样的设备,驱动应该就要一份就可以了吧,这个怎么写呢?? 我在只能当它们是不一样的,然后每个设备给一份驱动,这样写好浪费啊。。。 麻烦大侠,给点资料或例子看看~~ 如果用主设备号+次设备号,那...
有几个同样的设备,驱动应该就要一份就可以了吧,这个怎么写呢??
我在只能当它们是不一样的,然后每个设备给一份驱动,这样写好浪费啊。。。
麻烦大侠,给点资料或例子看看~~
如果用主设备号+次设备号,那么怎么去访问它呢??在 /dev目录下是不是有多个节点还是只有一个节点??
我在只能当它们是不一样的,然后每个设备给一份驱动,这样写好浪费啊。。。
麻烦大侠,给点资料或例子看看~~
如果用主设备号+次设备号,那么怎么去访问它呢??在 /dev目录下是不是有多个节点还是只有一个节点??
|
根据硬件的位置会建立多个实例,一般不同设备在dev目录下看到类似/dev/xxx0、/dev/xxx1的节点名字
|
这是多个类似的设备吧,我移植过一个扩展串口的驱动,用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一节,有这个方法。哈哈,祝你好运。
你需要每个设备都有一个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一节,有这个方法。哈哈,祝你好运。
|
每天回帖即可获得10分可用分
|
platform_devices 和platform_driver是通过名字匹配的,因此,驱动只有一个就可以了,而platform_devices则注册多个,根据具体的设备,可能结构体中有些变量是不一样的,但名字都和platform_driver中的名字一样,最后register这些platform_devices时都会被这个platform_driver自动匹配驱动上。