繁体   English   中英

USB:小工具:设备模式:configfs:uvc和大容量存储是否在单个配置上?

[英]USB : gadget : device mode : configfs: uvc and mass storage on single configuration?

我正在尝试在设备模式下为单个USB设备控制器端口添加uvc和大容量存储。 我正在使用configfs做工作。

谁能告诉我该怎么做。

此致GBiradar

您正在制造既可以充当照相机又可以充当拇指驱动器的设备? 也许是加密狗,您可以在其中上传视频,然后在Skype中播放它们? 无论哪种方式,对于configfs来说,这听起来都是不错的练习。

在较高级别上,步骤为:

  1. 让大容量存储本身工作。
  2. 使UVC本身正常工作(将图像流式传输到主机)。
  3. 将两者合并为一个脚本。

太早跳到步骤3将使诊断问题变得更加困难。 例如,如果用户空间uvc-gadget程序出现问题,可能会导致两个小工具无法枚举。

作为root用户,您可以运行以下经过验证的脚本,以使用Raspbian 9枚举Raspberry Pi Zero W并在Raspberry Pi Zero W上进行流式传输。对于步骤1,您可以删除UVC特有的部分,然后在步骤2中使用大容量存储行。

#!/bin/bash -xe

modprobe libcomposite
cd /sys/kernel/config/usb_gadget/
mkdir -p stackoverflow
cd stackoverflow
echo 0x1d6b > idVendor   # Linux Foundation
echo 0x0104 > idProduct  # Multifunction Composite Gadget
echo 239  > bDeviceClass # USB_CLASS_MISC
echo 0x02 > bDeviceSubClass
echo 0x01 > bDeviceProtocol
mkdir -p strings/0x409
mkdir -p configs/c.1/strings/0x409
echo "My Composite Gadget" > strings/0x409/product

###################### mass storage ########################
mkdir -p functions/mass_storage.usb0
echo /dev/mmcblk0p1 > functions/mass_storage.usb0/lun.0/file
ln -s functions/mass_storage.usb0 configs/c.1/
############################################################

########################## UVC #############################
mkdir -p functions/uvc.usb1/control/header/h
cd functions/uvc.usb1/control/
ln -s header/h class/fs
cd ../../../
mkdir -p functions/uvc.usb1/streaming/uncompressed/u/360p
cat <<EOF > functions/uvc.usb1/streaming/uncompressed/u/360p/dwFrameInterval
666666
1000000
5000000
EOF
mkdir functions/uvc.usb1/streaming/header/h
cd functions/uvc.usb1/streaming/header/h
ln -s ../../uncompressed/u
cd ../../class/fs
ln -s ../../header/h
cd ../../class/hs
ln -s ../../header/h
cd ../../../../..
ln -s functions/uvc.usb1 configs/c.1/
############################################################

ls /sys/class/udc > UDC

######################## UVC part 2 ########################
sleep 1 # workaround: if gadget activated too soon, may hit a dmesg error with usb_function_activate [libcomposite]
./uvc-gadget -d
############################################################

(作为参考,这是我的带有补丁的uvc-gadget回购 。)

简单地指向/dev/mmcblk0p1的启动分区是一种测试Pi的SD卡上大容量存储的快捷方法。 运行sudo fdisk -l查找可以在特定系统上使用的功能。

由于Pi Zero是USB 2.0设备,因此我不需要添加任何class/ss (超速)。 我还故意省略了在其他示例中可能会发现的字段,例如MaxPower,序列号和制造商。 该脚本旨在显示启动和运行所需的最低要求。

您已经在从NXP到TI的平台上的其他渠道上对此问题进行了询问,我无法预测在那里可能会出现什么问题。 但是,我发现建议尝试使用内核版本4.11-rc3中引入的与UVC相关的修复程序。 鉴于Raspbian当前在4.9版上,可能不需要那些更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM