zoukankan      html  css  js  c++  java
  • 嵌入式编程:四平台免驱的usb设备(一)

    如今,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/安卓编程)

  • 相关阅读:
    徒手用Java来写个Web服务器和框架吧<第二章:Request和Response>
    徒手用Java来写个Web服务器和框架吧<第一章:NIO篇>
    Linux使用小笔记<进程操作篇>
    shell条件判断
    rz和sz上传下载文件
    vim 快捷键
    while read读取文本内容
    云主机启动提示Booting from Hard Disk GRUB
    centos7进入单用户模式
    账号被锁无法ssh登陆
  • 原文地址:https://www.cnblogs.com/xhawk18/p/4668806.html
Copyright © 2011-2022 走看看