导航

嵌入式编程:四平台免驱的usb设备(一)

Posted on 2015-07-22 22:06  xhawk18  阅读(1773)  评论(0编辑  收藏  举报

如今,PC势弱,手机、平板大行其道,安卓、苹果、win三大平台混战,设备厂商苦之久矣!

我们的产品是一个基于usb连接的设备,为了方便用户使用,以及争取最多的二次开发厂商支持,

我们希望这样usb设备是这样的 --

1. 无论win32还win64都不需要另外安装驱动程序就能连接

2. 安卓下不需要root就能访问

3. iOS无需越狱能访问

4. 一般linux usb能直接支持,无需用户自己加入额外的内核驱动

(当然,所谓 “免驱” 是通俗说法,所有平台都需要usb驱动。只是想最大程序简化用户安装使用)

 

要实现这样的目标,选择一个最合适的usb设备类就是最基本的要求。

经常用来实现usb沟通的一些类,比如usb串口,u盘,usb鼠标、键盘、自定义的hid或bulk传输设备,

都是备选的目标。然而,不是每个类型的设备都能达到以上的目标。比如将设备模拟成u盘,系统会

多出盘符;将设备做成usb串口,虽然各平台都有现成的驱动用,但要用户安装总不免折腾。。

 

几经考虑,我们决定做这样的一个玩意 --

    这个设备包含两个interfaces,第一个interface是标准usb键盘,并支持控制传输读写数据;

第二个interface是一个自定义的 "hid设备",支持device向host发送数据。

 

这个设备可以达到什么样的目标呢?比我们最初的构想还要好!--

1. 兼容多个平台。我们已经验证 windows,linux 都达到所谓“免驱” 目标,安卓也不用root验证通讯成功。

iOS我们暂时尚未验证,但有一些技术考察看,我们相信这个不成问题。

2. 双向的数据通讯

3. 设备有消息向主机发送时,主机无需轮询。标准的键盘接口,可随时向主机发送输入信息。

4. 第二个interface,在不方便使用键盘发送消息时,可以随时向主机发送信息。

 

(待续,usb设备固件编程、windows/linux/安卓编程)