瑞芯微RV1126B开发板(EASY-EAI-PI2) OTG切换成U盘模式
1. 本文介绍1.1 OTG切换成USB模式OTG 切换 USB 模式的核心意义在于打破传统 USB 主从角色固定的限制让设备如嵌入式开发板、移动终端灵活适配不同互联场景。对 EASY EAI PI2 RV1126B 开发板而言该功能可实现 “设备互联”,能模拟 U 盘、串口等从机Device模式直接与 PC 或其他设备直连传输数据无需额外中转设备极大简化开发与使用流程提升数据交互效率。1.2 OTG基本概念OTG 是USB On-The-Go 的缩写该技术于2001年由USB标准化组织发布是一种扩展 USB 功能的技术标准核心是打破传统 USB “主从固定” 的限制改善不同设备之间的来连接和数据交换让设备如开发板、手机、平板既能作为主机连接外设也能作为从机被其他设备访问。2. Linux 内核驱动配置与编译2.1 升级到最新固件固件的下载和具体烧录步骤若不熟练可查阅《固件烧录与更新》一文2.2 下载ubuntu系统SDKubuntu_sdk源码主要是kernel源代码的下载可以参考《嵌入式底层开发/ubuntu系统SDK/编译说明》一文2.3 修改内核Device Drivers ---[ ] USB support ---* DesignWare USB2 DRD Core SupportRV1126B 默认支持该核心驱动DWC2 Mode Selection (Dual Role mode) ---选择双角色模式* USB Gadget Support ---保留默认Maximum VBUS Power usage (2-500 mA) 设为 500保留默认Number of storage pipeline buffers 设为 2M USB functions configurable through configfs[*] Mass storage开启大容量存储功能M Gadget Filesystem Function FilesystemM Mass Storage Gadget进入内核找到相应的驱动配置将其添加到RV1126b_eai.config中即可如下所示*提示RV1126b_eai.config在kernel_dev/arch/arm64/configs目录中2.4 编译生产内核模块若需要了解如何编译更新内核通过阅读《嵌入式底层开发/ubuntu系统SDK/kernel》并按照其相关的操作进行内核的编译和更新内核。*注意记得要把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/...【编译更新前】【编译更新后】*注意更新一旦完成后adb则被禁用可使用串口或ssh进行调试3. OTG切换U盘配置3.1 创建U盘镜像文件与挂载点执行以下命令创建 1.6GB 的虚拟 U 盘镜像可根据 RV1126B 内存大小调整若内存小可减小count值如count800对应 0.8GBdd if/dev/zero of/userdata/mydisk/udisk.img bs1M count1600安装依赖工具sudo apt-get update sudo apt-get install dosfstools -y格式化镜像为 PC 可识别的 vfat 格式mkfs.vfat /userdata/mydisk/udisk.img3.2 加载模块并启动U盘模拟将镜像文件与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 removable14. 功能测试基础数据交互测试1. PC端通过USB线连接PI2 RV1126B开发板的 OTG 接口与 PC可像操作普通 U 盘一样读写文件。2. 开发板端进入/mnt/udisk目录能查看 PC 拷贝到 U 盘中的文件在该目录写入文件后插拔 USB 线即可在 PC 端看到。4.1 注意事项1. PC写入文件后开发板看不到执行sudo umount /mnt/udisk sudo mount /dev/loop7 /mnt/udisk重新挂载。2. 开发板写入文件后PC看不到插拔一次 USB 线即可刷新。3. 若启动了大容量存储模式使得开发板作为U盘使用那么adb则会被禁用