Edit online

USB Device 配置

4 Dec 2024
Read time: 7 minute(s)

USB Device Controller 配置

  1. 在 menuconfig 中配置设备。使能 USB 端口,并且配置当前 USB 端口为 Device 模式:
    > Board options
       [*] Using Usb0
           Select Usb0 mode (Device)  --->
  2. 在 menuconfig 中配置 CherryUSB 驱动。使能 CherryUSB 驱动,并且使能 Device 模式:
    > Local packages options
       > Third-party packages options
           [*] CherryUSB: tiny and portable USB host/device stack for embedded system with USB IP  --->
               [*]   Enable usb device mode  --->

USB Interface 配置

USB Device 可以模拟成各种功能的 USB 外设,例如 USB 串口、USB 网口、U 盘。
  1. U 盘配置
    1. 在 menuconfig 中使能 CherryUSB 中 msc 类型的 Device Class 驱动,并且使能对应实例模板。

    2. 在 MSC 类型的 Device Class 驱动中有两类实例模板,一种是把读取 RAM,一种是读取 Flash 或 SDCard。

      • 读取 ram,可照下面的步骤进行配置:
        > Local packages options
           > Third-party packages options
               [*] CherryUSB: tiny and portable USB host/device stack for embedded system with USB IP  --->
                   [*]   Enable usb device mode  --->
                       [*]   Enable usb msc device  --->
                           Use ram or storage template (msc ram)  --->
                               [*]   Use msc ram template
      • 读取 SDCard,可照下面的步骤进行配置:
        > Local packages options
           > Third-party packages options
               [*] CherryUSB: tiny and portable USB host/device stack for embedded system with USB IP  --->
                   [*]   Enable usb device mode  --->
                       [*]   Enable usb msc device  --->
                           Use ram or storage template (msc storage)  --->
                           MSC Storage Parameter  --->
                               [*] USBDEV_MSC_THREAD  # 配置线程进行读写
                               [*] USBD_MSC_STORAGE_USING_HOTPLUG #支持存储媒介的热插拔
                               (/sdcard) MSC_STORAGE_PATH # U 盘读取的分区(这里填写的是对应的文件系统名称)
                               (2048) USBDEV_MSC_MAX_BUFSIZE # 此值必须是 512 的倍数,增大此项,可提升读写速度,同时也会消耗更多的 ram
    3. 将单板的 USB Device 端口和 Windows PC 的 USB Host 端口连接,在 Windows PC 上会看到一个新增的 U 盘,可以正常读写。

    4. 修改 U 盘产品信息:
      --- Enable usb msc device
      (aic)    CONFIG_USBDEV_MSC_MANUFACTURER_STRING # 厂商信息(最大支持 8 bytes)
      (d13)    CONFIG_USBDEV_MSC_PRODUCT_STRING      # 产品信息(最大支持 16 bytes)
      (0.01) CONFIG_USBDEV_MSC_VERSION_STRING        # 厂商信息(最大支持 4 bytes)

      效果如下图:


      image4

  2. ADBD 配置
    1. 在 menuconfig 中使能 CherryUSB 的 Device 驱动,并且使能对应实例模板:
      > Local packages options
         > Third-party packages options
             [*] CherryUSB: tiny and portable USB host/device stack for embedded system with USB IP  --->
                 [*]   Enable usb device mode  --->
             [*] ADBD: Android Debug Bridge daemon implementation in RT-Thread  --->
                 [*]   Enable Shell service
                 [*]   Enable File service
    2. 将单板的 USB Device 端口和 PC 的 USB Host 端口连接,在 PC 端运行 adb shell 命令即可进行 ADB 操作。 进入 ADB Shell 以后,可以通过 exitas 命令退出:
      C:\Users\xxx>adb shell
      
      aic /> ls
      Directory /:
      ram                 <DIR>
      data                <DIR>
      rodata              <DIR>
      sdcard              <DIR>
      udisk               <DIR>
      aic />
      aic /> exit
      exitas
      aic /> exitas
      
      C:\Users\xxx>
      重要:

      AiBurn 烧录软件默认会不停的使用 ADB 命令来扫描单板是否启动完成,在使用 ADB 命令时为了避免冲突建议关闭 AiBurn 软件,或者在 AiBurn 中关闭 ADB 扫描设备 功能。

  3. Audio 配置
    1. 在 menuconfig 中使能 CherryUSB 中 audio 类型的 Device Class 驱动,并且使能对应实例模板:
      > Local packages options
         > Third-party packages options
             [*] CherryUSB: tiny and portable USB host/device stack for embedded system with USB IP  --->
                 [*]   Enable usb audio device  --->
                     [*]   Use audio speaker template  --->
                         Use audio speaker template (UAC2.0)  --->
    2. 将单板的 USB Device 端口和 Windows PC 的 USB Host 端口连接,在 Windows PC 上会看到一个新增的 Audio 设备,可以正常播放音频。如图所示:


      image0

  4. MIDI 配置
    • 在 menuconfig 中使能 CherryUSB 中 midi 类型的 Device Class 驱动,并且使能对应实例模板:
      > Local packages options
         > Third-party packages options
             [*] CherryUSB: tiny and portable USB host/device stack for embedded system with USB IP  --->
                 [*]   Enable usb midi device  --->
                     [*]   Use midi template
    • 将单板的 USB Device 端口和 Windows PC 的 USB Host 端口连接,在 Windows PC 的设备管理其中,可以看到一个新增的 MIDI 设备,需要在特定的 MIDI 工具(如 MidiEditor)中使用。如图所示,在 MIDI 工具中选择对应的 MIDI 设备进行数据的收发:


      image1

  5. USB Display 配置

    • 在 Menuconfig 中使能 CherryUSB 中 Display 类型的 Device Class 驱动,并且使能对应实例模板:
      > Local packages options
         > Third-party packages options
             [*] CherryUSB: tiny and portable USB host/device stack for embedded system with USB IP  --->
                 [*]   Enable usb device mode  --->
                     [*]   Enable usb display device  --->
                         [*]   Use display template
    • 将单板的 USB Device 端口和 Windows PC 的 USB Host 端口连接,并且在 PC 安装对应的 AicUsbGraphicDriver 驱动,单板将会成为 PC 的一个扩展显示屏。

  6. UVC 配置
    • 在 Menuconfig 中使能 CherryUSB 中 UVC 类型的 Device Class 驱动,并且使能对应实例模板:
      > Local packages options
         > Third-party packages options
             [*] CherryUSB: tiny and portable USB host/device stack for embedded system with USB IP  --->
                 [*]   Enable usb device mode  --->
                    [*]   Enable usb video device  --->
                       [*]   Use video template  --->
                          [X]   Use video dvp sensor template
      Usevideotemplate 选项下有多种配置可以进行选择,分别有:
      Use video static mjpeg template
      Use video static yuyv template
      Use video static nv12 template
      Use video dvp sensor template

      其中前三者都是传输静态图像的一个测试实例模板,Usevideodvpsensortemplate 才是传输摄像头图像数据的实例模板。

    • 用户使用:

      将单板的 USB Device 端口和 Windows PC 的 USB Host 端口连接,在 Windows PC 上看到一个新增的 Camera 设备,并且可以正常接收设备返回的图像数据。

      如图所示:


      image2