本文共 1304 字,大约阅读时间需要 4 分钟。
前面使用configfs配置了一个usb虚拟网卡设备. (cdc ecm)
这里使用configfs配置一个 mass storage设备
1. 准备文件系统,
可以使用实际的本地磁盘分区, 如/dev/mmcblk0p1,
也可以使用自己制作的loop回环块设备。 前提是有做过格式化, 且文件系统主机端能识别。 比如fat格式。
回环块设备制作方式简单如下:
dd if=/dev/zero of=/mnt/mass_stor.img bs=1M count=20
losetup -f /mnt/mass_stor.img (分配可用的loop设备)
mount /dev/loop0 /mnt/media
2. 利用configfs制作gadget mass storage设备
cd /sys/kernel/configmkdir g_massecho "0x200" > bcdUDBecho "0x100" > bcdDeviceecho "0x1234" > idVendorecho "0x5678" > idProductmkdir configs/c1.1mkdir functions/mass_storage.0echo /dev/loop0 > functions/mass_storage.0/lun.0/filemkdir strings/0x409echo "0123456789ABCDEF" > serialnumberecho "river" > manufacturerecho "river_msc" > productmkdir configs/c1.1/strings/0x409echo "abc" > configs/c1.1/strings/0x409/configurationln -s functions/mass_storage.0 configs/c1.1ls /sys/class/udcfe200000.dwc3echo "fe200000.dwc3" > UDC
3. ok, mass_storage 设备制作成功
* 注:
利用configfs无法制作多功能的复合设备,
故echo "fe200000.dwc3" > UDC时, 可能会报以下错误:
root@xxx:/sys/kernel/config/usb_gadget/g_ecm# echo "fe200000.dwc3" > UDC [ 9880.063594] driver->udc_name: fe200000.dwc3[ 9880.067787] begin to find udc(fe200000.dwc3)[ 9880.072050] ret = 0-sh: echo: write error: Device or resource busy
此时, 需要将之前绑定的gadget驱动卸载后才能加载新的驱动。
如何卸载之前的设备,
echo "" > UDC
4. 主机端,
msc驱动为常见驱动,一般Linux和Windows都默认支持, 故不再赘述。
转载地址:http://oicrj.baihongyu.com/