大家好,我是极客范的本期栏目编辑小友,现在为大家讲解Linux驱动到底能不能在应用层开发驱动问题。
中午,我和更好的同事一起吃饭。我的同事刚从MCU开发转到Linux开发,现在负责给客户开发一个USB设备驱动。他跟我抱怨说因为拿不到客户的内核代码,每次客户的内核代码变了,他的驱动都要重新编译,太麻烦了。所以建议同事把驱动写进APP里。同事们很惊讶Linux能在应用层开发驱动?
答案是肯定的。在Linux系统中,用于总线驱动(usb、i2c、spi等)。),驱动程序框架分为两部分。一个是总线控制器驱动程序,负责使总线能够传输数据。第二个是设备驱动程序,负责启用挂在总线上的设备。
以usb设备为例,usb主机控制器驱动程序使Linux能够在自身和usb设备(如usb转串口设备、usb摄像头等)之间传输数据。)挂在自己身上。但是有数千万个usb设备。为了驱动这些设备,需要通过usb总线向usb设备发送特定的数据。比如我想初始化一个usb串口设备,应该发送什么数据来设置它的波特率?
相信大家都已经明白,总线控制器驱动和总线设备驱动的关系,其实就是程序分层的思想。总线驱动可用后,程序员可以调用她的接口,将需要发送的数据发送到总线上的设备,这就是所谓的设备驱动。可以在内核空间或者应用空间调用。
在实际工作过程中,笔者有在APPlication space开发i2c设备驱动,在Android app中开发usb设备驱动(usb转串口)程序的经验。
责任编辑LK
中午,我和更好的同事一起吃饭。我的同事刚从MCU开发转到Linux开发,现在负责给客户开发一个USB设备驱动。他跟我抱怨说因为拿不到客户的内核代码,每次客户的内核代码变了,他的驱动都要重新编译,太麻烦了。所以建议同事把驱动写进APP里。同事们很惊讶Linux能在应用层开发驱动?
答案是肯定的。在Linux系统中,用于总线驱动(usb、i2c、spi等)。),驱动程序框架分为两部分。一个是总线控制器驱动程序,负责使总线能够传输数据。第二个是设备驱动程序,负责启用挂在总线上的设备。
以usb设备为例,usb主机控制器驱动程序使Linux能够在自身和usb设备(如usb转串口设备、usb摄像头等)之间传输数据。)挂在自己身上。但是有数千万个usb设备。为了驱动这些设备,需要通过usb总线向usb设备发送特定的数据。比如我想初始化一个usb串口设备,应该发送什么数据来设置它的波特率?
相信大家都已经明白,总线控制器驱动和总线设备驱动的关系,其实就是程序分层的思想。总线驱动可用后,程序员可以调用她的接口,将需要发送的数据发送到总线上的设备,这就是所谓的设备驱动。可以在内核空间或者应用空间调用。
在实际工作过程中,笔者有在APPlication space开发i2c设备驱动,在Android app中开发usb设备驱动(usb转串口)程序的经验。
责任编辑LK。dfma {
相对位置:
宽度: 1000 px;
margin: 0 auto
}。dfma a:after {
绝对位置:
left : 0;
bottom : 0;
宽度: 30px;
线高: 1.4;
文本对齐:中心;
背景-color: rgba(0,0,0, 5);
color: # fff
font-size : 12px
内容: '广告;
}。dfma img {
显示器:块;
}