7.13.3. 配置指南

7.13.3.1. USB Host 配置

7.13.3.1.1. USB Host Controller 配置

首先需要配置好 USB Host Contoller ,ArtinChip 在 1 个 USB Host 端口中提供了 2 类 Host Contoller:

  • 针对 USB 2.0 (High Speed) 的 EHCI 控制器

  • 针对 USB 1.0/1.1 (Low/Full Speed) 的 OHCI 控制器

在软件上需要需要分开配置。

7.13.3.1.1.1. EHCI 配置

  • 在 Menuconfig 中配置设备。使能 USB 端口,并且配置当前 USB 端口为 Host 模式:

> Board options
   [*] Using Usb0
       Select Usb0 mode (Host)  --->
  • 在 Menuconfig 中配置 CherryUSB 驱动。使能 CherryUSB 驱动,并且使能 Host 模式:

> Local packages options
   > Third-party packages options
       [*] CherryUSB: tiny and portable USB host/device stack for embedded system with USB IP  --->
           [*]   Enable usb host mode  --->

7.13.3.1.2. USB Interface 驱动配置

在配置好 USB Host Controller 以后,就能够正确识别插入 USB 总线的 Device 设备了。

但是 USB Device 有很多不同类型 (例如:U 盘、键盘鼠标、无线网卡 …) ,这些功能都是在 USB Device 中以 Interface 为单位提供的。所以要使用 USB Device 的具体功能,还需要配置不同类型 USB Interface 的驱动。

7.13.3.1.2.1. U 盘 配置

  • 在 Menuconfig 中使能 CherryUSB 中 msc 类型的 Host Class 驱动,并且使能对应实例模板:

> Local packages options
   > Third-party packages options
       [*] CherryUSB: tiny and portable USB host/device stack for embedded system with USB IP  --->
           [*]   Enable usb host mode  --->
               [*]   Enable usb msc driver  --->
                   [*]   Use msc template
  • 插入 U 盘,会自动挂载到 /disk 目录:

[I/USB] New high-speed device on Hub 1, Port 1 connected
[I/USB] New device found,idVendor:30de,idProduct:6544,bcdDevice:0100
[I/USB] The device has 1 interfaces
[I/USB] Enumeration success, start loading class driver
[I/USB] Loading msc class driver
[I/USB] Get max LUN:1
[I/USB] Ep=81 Attr=02 Mps=512 Interval=255 Mult=00
[I/USB] Ep=02 Attr=02 Mps=512 Interval=255 Mult=00
[I/USB] Capacity info:
[I/USB] Block num:30274560,block size:512
[I/USB] Register MSC Class:/dev/sda
found part[0], begin: 32256, size: 14.446GB
[I] udisk_init()122 Found partition 0: type = 11, offet=0x3f, size=0x1cdf2a1
01-01 08:00:06 I/NO_TAG: try to mount file system!

7.13.3.2. USB Device 配置

首先要配置好 USB Device Controller。

7.13.3.2.1. USB Device Controller 配置

  • 在 Menuconfig 中配置设备。使能 USB 端口,并且配置当前 USB 端口为 Device 模式:

> Board options
   [*] Using Usb0
       Select Usb0 mode (Device)  --->
  • 在 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  --->

7.13.3.2.2. USB Interface 配置

USB Device 可以模拟成各种功能的 USB 外设,例如:USB 串口、USB 网口、U 盘。。。

7.13.3.2.2.1. U 盘 配置

  • 在 Menuconfig 中使能 CherryUSB 中 msc 类型的 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 msc device  --->
                   [*]   Use msc ram template
  • 用户使用:

    1. 将单板的 USB Device 端口和 Windows PC 的 USB Host 端口连接,在 Windows PC 上会看到一个新增的 U 盘,可以正常读写。

7.13.3.2.2.2. ADBD 配置

  • 在 Menuconfig 中使能 CherryUSB 中 msc 类型的 Device Class 驱动,并且使能对应实例模板:

> Local packages options
   > Third-party packages options
       [*] CherryUSB: tiny and portable USB host/device stack for embedded system with USB IP  --->
       [*] ADBD: Android Debug Bridge daemon implementation in RT-Thread  --->
           [*]   Enable Shell service
           [*]   Enable File service
  • 用户使用:

    1. 将单板的 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 扫描设备 功能。