龙芯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盘