首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >USB : gadget :设备模式: configfs: uvc和大容量存储在单个配置上?

USB : gadget :设备模式: configfs: uvc和大容量存储在单个配置上?
EN

Stack Overflow用户
提问于 2017-03-20 04:40:28
回答 1查看 3.1K关注 1票数 1

我试图在设备模式下为单个usb设备控制器端口添加uvc和海量存储。我在用configfs做工作。

有人能告诉我怎么做吗。

你好,GBiradar

EN

回答 1

Stack Overflow用户

发布于 2017-11-05 05:15:57

你在做一个可以同时用作相机和拇指驱动器的设备吗?也许你可以上传视频,然后在Skype上播放这些视频?无论哪种方式,这对于configfs来说都是一个很好的练习。

在较高的层次上,这些步骤是:

  1. 让大容量存储自行工作。
  2. 让UVC自己工作(流图像到主机)。
  3. 将两者合并成一个脚本。

过早地跳到第三步会使诊断问题变得更加困难。例如,如果用户空间uvc-gadget程序存在问题,可能会阻止这两个小工具枚举。

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

代码语言:javascript
复制
#!/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-小工具回购。)

简单地指向/dev/mmcblk0p1的引导分区是一种快速和肮脏的方法来测试Pi的SD卡上的大容量存储。运行sudo fdisk -l以查找您可以在特定系统上使用的内容。

由于Pi零是一个USB2.0设备,我不需要包括任何class/ss (上)。我还有意省略了一些字段,如MaxPower、序列号和制造商,您可能在其他示例中找到这些字段。此脚本旨在显示启动和运行所需的最低要求。

在从NXP到TI等平台上,您已经在其他渠道上发布了这方面的信息,我无法预测那里可能会出现什么问题。然而,我看到有人建议尝试在内核版本4.11-rc3中引入的与UVC相关的修复。考虑到Raspbian目前正在4.9版上,也许这些更改是不必要的。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42895950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档