OTG功能模拟U盘

龙芯ls2k1000 OTG功能模拟U盘

内核版本是linux-4.19-loongson

一、内核otg配置

在这里插入图片描述
在这里插入图片描述

二、otg.sh测试脚本

#!/bin/sh

#挂载configfs文件系统
mount -t configfs none /sys/kernel/config

cd /sys/kernel/config/usb_gadget
mkdir g1
cd g1
 
#设置USB协议版本
echo 0x0200  > bcdUSB
 
#定义产品的VendorID和ProductID
echo "0xABCD" >idVendor 
echo "0x1017" >idProduct  
 
#实例化"英语"ID:
mkdir strings/0x409
 
#将开发商、产品和***字符串写入内核:
echo "012345678ABCDEF" >strings/0x409/serialnumber 
echo "Dragon" >strings/0x409/manufacturer 
echo "DragonMSC"  >strings/0x409/product 
 
#创建一个USB配置实例:
mkdir configs/config.1
 
echo 120 > configs/config.1/MaxPower
 
#定义配置描述符使用的字符串
mkdir configs/config.1/strings/0x409
echo "mass_storage" >   configs/config.1/strings/0x409/configuration
 
#创建一个功能实例,需要注意的是,一个功能如果有多个实例的话,扩展名必须用数字编号:
mkdir functions/mass_storage.0
 
dd if=/dev/zero of=/mnt/disk.img bs=1M count=32
mkfs.vfat /mnt/disk.img
 
#配置U盘参数
echo "/mnt/disk.img" > functions/mass_storage.0/lun.0/file
echo 1 > functions/mass_storage.0/lun.0/removable
echo 0 > functions/mass_storage.0/lun.0/nofua
 
#捆绑功能实例到配置config.1
ln -s functions/mass_storage.0 configs/config.1
 
#查找本机可获得的UDC实例
ls /sys/class/udc/
#40000000.otg
 
#将gadget驱动注册到UDC上,插上USB线到电脑上,电脑就会枚举USB设备。
echo "40000000.otg" > UDC

执行脚本,即可加载u盘驱动。当echo "" > UDC时,相当于模拟U盘拔掉,PC磁盘符消失。

参考文档Documentation/usb/gadget_configfs.txt

三、运行结果

  • 执行 ./otg.sh 脚本
    在这里插入图片描述
  • 往模拟的U盘里写数据
    在这里插入图片描述
  • 卸载模拟U盘
    在这里插入图片描述
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大、猫

感谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值