OTG 切换 USB 模式的核心意义,在于打破传统 USB 主从角色固定的限制,让设备(如嵌入式开发板、移动终端)灵活适配不同互联场景。对 EASY EAI Nano-TB RV1126B 这类开发板而言,该功能可实现 “设备互联” 与 “外设扩展” 双向兼容 —— 既可为 U 盘、键盘等外设提供主机(Host)支持,也能模拟 U 盘、串口等从机(Device)模式,直接与 PC 或其他设备直连传输数据,无需额外中转设备,极大简化开发与使用流程,提升数据交互效率。

OTG 是USB On-The-Go 的缩写,该技术于2001年由USB标准化组织发布,是一种扩展 USB 功能的技术标准,核心是打破传统 USB “主从固定” 的限制,改善不同设备之间的来连接和数据交换,让设备(如开发板、手机、平板)既能作为主机连接外设,也能作为从机被其他设备访问。

固件的下载和具体烧录步骤,若不熟练,可查阅《固件烧录与更新》一文
ubuntu_sdk源码(主要是kernel源代码)的下载,可以参考《嵌入式底层开发/ubuntu系统SDK/编译说明》一文
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
USB functions configurable through configfs
[*] Mass storage(开启大容量存储功能)
Gadget Filesystem
< > Function Filesystem
Mass Storage Gadget
进入内核找到相应的驱动配置,将其添加到RV1126b_eai.config中即可,如下所示:

*提示:RV1126b_eai.config在kernel_dev/arch/arm64/configs目录中
若需要了解如何编译更新内核,通过阅读《嵌入式底层开发/ubuntu系统SDK/kernel》,并按照其相关的操作,进行内核的编译和更新内核。
*注意:记得要把lib_modules.tar.gz拉回开发板进行解压
编译更新完成后,会在开发板指定目录生成 4 个关键关键模块:
drivers/usb/gadget/libcomposite.ko
drivers/usb/gadget/legacy/gadgetfs.ko
drivers/usb/gadget/legacy/g_mass_storage.ko
drivers/usb/gadget/function/usb_f_mass_storage.ko
*所在目录:/lib/modules/6.1.141/kernel/drivers/usb/...
【编译更新前】

【编译更新后】

(*注意:更新一旦完成后,adb则被禁用,可使用串口或ssh进行调试)
执行以下命令创建 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.img
将镜像文件与loop设备绑定(RV1126B 支持 loop7 设备,无需额外配置):
sudo losetup /dev/loop7 /userdata/mydisk/udisk.img
依次加载编译生成的内核模块:
sudo insmod gadgetfs.ko sudo insmod libcomposite.ko sudo insmod usb_f_mass_storage.ko
*注意:以上指令执行完均没有任何的提示,顺序必须和上述一致。
*.ko的所在目录:/lib/modules/6.1.141/kernel/drivers/usb/...
创建镜像文件的挂载点:
sudo mkdir /mnt/udisk
挂载镜像文件到创建的目录:
sudo mount /dev/loop7 /mnt/udisk
启动 U 盘模拟功能(执行后 PC 会提示发现新 U 盘):
sudo insmod g_mass_storage.ko file=/dev/loop7 removable=1

基础数据交互测试
1. PC端:通过USB线连接Nano-TB RV1126B开发板的 OTG 接口与 PC,可像操作普通 U 盘一样读写文件。
2. 开发板端:进入/mnt/udisk目录,能查看 PC 拷贝到 U 盘中的文件;在该目录写入文件后,插拔 USB 线即可在 PC 端看到。
1. PC写入文件后开发板看不到:
执行sudo umount /mnt/udisk && sudo mount /dev/loop7 /mnt/udisk重新挂载。
2. 开发板写入文件后PC看不到:插拔一次 USB 线即可刷新。
3. 若启动了大容量存储模式使得开发板作为U盘使用,那么adb则会被禁用
全部0条评论
快来发表一下你的评论吧 !