Linux驱动到底能不能在应用层开发驱动

电子说

1.3w人已加入

描述

中午跟比较要好的同事一块吃饭,同事刚从单片机开发转Linux开发没多久,目前负责给客户开发一个USB 设备驱动。他跟我抱怨,由于获取不到客户内核代码,因此每次客户那边内核代码发生了改变,自己的驱动程序也要跟着重新编译,太麻烦了。因此,我建议同事把驱动写到APP里面。同事大惊,Linux能在应用层开发驱动?

答案是肯定的。在Linux系统中,对于总线类驱动(usb,i2c,spi等),驱动框架都分为俩部分。一是总线控制器驱动,它负责使能总线传输数据的能力。二是设备驱动,它负责使能挂在总线上的设备。

以usb设备为例,usb host controller驱动使得Linux可以在自己及挂在自己身上的usb 设备(如usb转串口设备、usb摄像头等)之间传输数据。但是usb设备种类有千千万。驱动这些设备,都需要通过usb总线发送特定的数据给到usb设备。比如,我要初始化usb 串口设备,我应该发什么数据设置它的波特率呢?

相信大家已经明白了,总线控制器驱动及总线设备驱动的关系了,其实就是程序分层的思想。总线控制器驱动有了之后,程序员就可以调用她的接口,将自己要发送的数据发送到总线上的设备,这就是设备驱动了。那具体在内核空间调用还是在应用空间调用都是OK的。

笔者在实际工作过程中,有过在应用空间开发i2c设备驱动,安卓APP开发usb 设备驱动(usb转串口)程序的经验。
责任编辑  LK

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分