将 OTG 切换为 U 盘模式
1.1. 正文介绍
1.1. 1 将 OTG 切换为 USB 模式
通过切换 OTG 的 USB 模式,开发板既可以作为 HOST(主机)使用,也可以作为 Device(设备:如 U 盘等)使用,从而提高数据传输效率。

1.1.1 将 OTG 切换为 USB 模式 图1
1.1.2 OTG 的基本概念
OTG 是 “USB On-The-Go” 的缩写,是 USB 标准化组织于 2001 年发布的一项扩展 USB 功能的技术规范。其核心是打破传统 USB 中“主机和设备角色固定”的限制,改善不同设备之间的连接和数据交换。由此,设备(开发板、智能手机、平板电脑等)既可以作为主机连接外设,也可以作为设备(从设备)被其他设备访问。

11.1. 2 OTG 的基本概念 图2
1.2. Linux 内核驱动的配置与编译
1.2.1 升级到最新固件
1.2.2 下载 Ubuntu 系统 SDK
1.2.3 修改内核
Device Drivers --->[ ] USB support ---><*> DesignWare USB2 DRD Core Support(RV1126B 默认支持该核心驱动)DWC2 Mode Selection (Dual Role mode) --->(选择双角色模式)<*> USB Gadget Support --->(保持默认)将 Maximum VBUS Power usage (2-500 mA) 设置为 500(保持默认)将 Number of storage pipeline buffers 设置为 2<M> USB functions configurable through configfs [*] Mass storage(启用大容量存储功能) <M> Gadget Filesystem< > Function Filesystem<M> Mass Storage Gadget在内核中找到对应的驱动配置,并按如下方式添加到 RV1126b_eai.config` 中。

11.2. 3 修改内核 图3
💡 注意:RV1126b_eai.config` 位于 kernel_dev/arch/arm64/configs 目录中。
1.2.4 编译并生成内核模块
💡 注意:请不要忘记将 lib_modules.tar.gz` 传输到开发板并解压。 编译和更新完成后,开发板的指定目录中会生成以下 4 个重要模块。
drivers/usb/gadget/libcomposite.kodrivers/usb/gadget/legacy/gadgetfs.kodrivers/usb/gadget/legacy/g_mass_storage.kodrivers/usb/gadget/function/usb_f_mass_storage.ko所在目录:/lib/modules/6.1.141/kernel/drivers/usb/…
【编译和更新前】

1.2.4 编译并生成内核模块 图4
【编译和更新后】

1.2.4 编译并生成内核模块 图5
💡 注意:更新完成后 adb 会被禁用。请使用串口控制台或 ssh 进行调试。
1.3. OTG U 盘切换配置
1.3.1 创建 U 盘镜像文件和挂载点
执行以下命令创建一个 1.6GB 的虚拟 U 盘镜像(可根据 RV1126B 的内存大小进行调整。如果内存较少,请减小 count 值。例如:count=800 表示 0.8GB):
dd if=/dev/zero of=/userdata/mydisk/udisk.img bs=1M count=1600安装依赖工具:
sudo apt-get update && sudo apt-get install dosfstools -y将镜像格式化为 PC 可识别的 vfat 格式:
mkfs.vfat /userdata/mydisk/udisk.img1.3.2 加载模块并启动 U 盘模拟
将镜像文件绑定到 loop 设备(RV1126B 支持 `loop7` 设备,无需额外配置):
sudo losetup /dev/loop7 /userdata/mydisk/udisk.img按顺序加载编译生成的内核模块:
sudo insmod gadgetfs.kosudo insmod libcomposite.kosudo insmod usb_f_mass_storage.ko💡 注意:上述命令执行后不会显示任何信息。请务必按照上述顺序执行。
所在目录:/lib/modules/6.1.141/kernel/drivers/usb/…
创建镜像文件的挂载点:
sudo mkdir /mnt/udisk将镜像文件挂载到创建的目录:
sudo mount /dev/loop7 /mnt/udisk启动 U 盘模拟功能(执行后,PC 上会弹出检测到新 USB 设备的通知):
sudo insmod g_mass_storage.ko file=/dev/loop7 removable=11.4. 功能测试
基本数据收发测试
1. PC 侧:使用 USB 线连接 Nano-TB RV1126B 开发板的 OTG 接口与 PC,可像普通 U 盘一样进行文件读写。
2. 开发板侧:进入 /mnt/udisk 目录后,可以查看从 PC 复制到 U 盘中的文件。向该目录写入文件后,通过拔插 USB 线,也会在 PC 侧同步显示。
1.4.1 注意事项
1. 如果在 PC 上写入文件后,开发板侧未显示:
sudo umount /mnt/udisk && sudo mount /dev/loop7 /mnt/udisk请执行上述命令重新挂载。
2. 如果在开发板上写入文件后,PC 侧未显示:
请拔插一次 USB 线进行刷新。
3. 启动大容量存储模式并将开发板作为 U 盘使用时,**adb 功能会被禁用**。
2. USB OTG 模式
2.1. USB OTG 概述
USB OTG(On-The-Go)是 USB 协议的扩展标准,用于解决传统 USB 只能进行“主机(HOST)-设备(Peripheral/Device)”单向连接的问题。EASY-EAI-Nano-TB 开发板的 USB OTG 接口支持 HOST 模式与 Peripheral 模式的灵活切换。默认可配置为 OTG 模式,并可使用系统命令快速更改工作模式,以满足不同场景下的设备连接需求,例如连接 U 盘、键盘、鼠标等外设,或作为从设备与 PC 通信。
2.2. 默认 OTG 模式
EASY EAI Nano USB 资源介绍

2.2. 默认 OTG 模式 图1
使用以下固件进行开发时,默认会配置为 USB OTG 模式:
查看当前 OTG 模式:
cat /sys/devices/platform/21400000.usb2-phy/otg_mode2.2.1 切换到 HOST 模式
但是,在某些特定场景下,例如需要连接并使用 U 盘或其他 USB 设备时,需要将 USB 接口切换为 USB HOST 模式。此时请按照以下步骤进行切换。 首先,将连接到 USB 接口的设备【全部拔下】。然后使用【串口控制台(串口调试)】(波特率:1500000)登录开发板控制台。用户名为 nano,密码为 123456`。 接着执行以下命令,即可将 USB 接口切换到 HOST 模式:
echo host \> /sys/devices/platform/21400000.usb2-phy/otg_mode查看当前 HOST 模式:
cat /sys/devices/platform/21400000.usb2-phy/otg_mode
2.2.1 切换到 HOST 模式 图2
使用 USB 设备(以 U 盘为例)进行验证。插入 U 盘后,可以通过以下两种方式进行验证:
1 lsusb 命令

2.2.1 切换到 HOST 模式 图3
2 lsblk 命令

12.2.1 切换到 HOST 模式 图4
2.2.2 切换到 Device 模式
如果想切换回 USB Device 模式使用,可以按照与切换到 HOST 模式类似的操作切换到 Device 模式。首先同样将连接到 USB 接口的设备【全部拔下】。然后执行以下命令切换到 USB Device 模式:
echo peripheral \> /sys/devices/platform/21400000.usb2-phy/otg_mode
2.2.2 切换到 Device 模式 图5
最后连接 ADB 线,并使用 `adb shell` 进入 ADB 环境进行确认。
💡 注意:切换到 Device 模式时,ADB 不会立即生效。需要等待约 1 分钟,直到可以通过 adb shell 命令访问 ADB 环境。