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

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

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

此致,GBiradar

答案

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

在高层次上,步骤是:

让大容量存储独立工作。

让UVC工作(将图像流式传输到主机)。

将两者合并为一个脚本。

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

作为root,您可以运行以下脚本验证以使用Raspbian 9在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 < 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 repo。)

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

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值