欢迎光临散文网 会员登陆 & 注册

驱动学习感想

2023-02-09 17:01 作者:秋名山西  | 我要投稿

最近看到某些驱动说自己属于linux某某子系统的驱动,例如I2C、USB等,但在其代码中由混杂着注册了
其他类型的驱动注册函数,例如USB 鼠标驱动中,就在驱动初始化函数中注册了调用了inpu驱动的注册函数。

现在的感悟是:
对于Linux系统而言,真正的设备文件分类主要有:
1、字符设备
2、块设备
3、网络设备

因此Linux设备驱动框架虽然有很多种,但是提供给用户程序进行操作时,最终都是要归属到上述的三种设备文件类型中去。
所以对于USB鼠标,只能认为USB设备和主机的通信方式使用的是USB通信协议,但是这只是将数据从设备读取到了内核,但是内核该如何将信息提交给应用程序呢?
这就需要考虑设备属于哪种类型,字符设备?块设备?网络设备?,鼠标一般归属为字符设备类型,而且属于输入设备(输入设备的本质也是字符设备)。因此这里可以
使用字符设备的方式组织将信息发送给应用程序,也可以使用linux 提供的Input驱动框架,使用事件管理机制简化驱动的编写。
当然,这两种方式都需要先按照设备与主机的通信方式选择对应的驱动框架,在后再在对应框架的初始化函数中注册字符设备驱动或者Input驱动,完成应用程序交给驱动的任务。

其次,常常在某些驱动中会专门为设备定制一个私有数据结构体,当然名字不一定带有“pdata”,这样做的目的,是将某些设备的特殊功能通过这样的方式,带入内核,
以便在设备初始化的时候调用,例如 中断、gpio、时钟等。



驱动学习感想的评论 (共 条)

分享到微博请遵守国家法律