USB:小工具:设备模式:configfs:uvc和单一配置的大容量存储?

时间:2017-03-20 04:40:29

标签: linux linux-kernel embedded-linux uvc

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

任何人都可以告诉你该怎么做。

此致 GBiradar

1 个答案:

答案 0 :(得分:1)

您正在制作兼具相机和拇指驱动器的设备?也许是加密狗,你可以上传视频,然后在Skype上播放?无论哪种方式,这对configfs来说都是一个很好的练习。

在较高的层面上,步骤是:

  1. 让大容量存储独立工作。
  2. 让UVC工作(将图像流式传输到主机)。
  3. 将两者合并为一个脚本。
  4. 过早跳到第3步会使诊断问题变得更加困难。例如,如果用户空间uvc-gadget程序存在可能阻止两个小工具枚举的问题。

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

    a[:, [0, 3]]
    

    (作为参考,这是我的uvc-gadget repo补丁。)

    简单地指向#!/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 ############################################################ 处的启动分区是一种快速而肮脏的方法来测试Pi SD卡上的大容量存储。运行/dev/mmcblk0p1以查找您可以在特定系统上使用的内容。

    由于Pi Zero是USB 2.0设备,我不需要包含任何sudo fdisk -l(超高速)。我还故意省略了MaxPower,serialnumber和manufacturer等字段,您可以在其他示例中找到它们。此脚本旨在显示启动和运行所需的最低要求。

    您已经在其他渠道上发布了从NXP到TI的平台上询问此问题,我无法预测可能出现的问题。但是,我看到建议尝试在内核版本4.11-rc3中引入的与UVC相关的修复程序。看起来Raspbian目前的版本为4.9,也许这些更改不是必需的。