繁体   English   中英

Raspberry Pi Zero USB设备仿真

[英]Raspberry Pi Zero USB device emulation

我知道Raspberry Pi Zero支持OTG和USB外设协议,这里有很多很酷的内置外设: https//learn.adafruit.com/turning-your-raspberry-pi-zero-into-a- USB-小工具吗?视图=所有其他#模块

问题是我需要模拟此列表中没有出现的USB外围设备。 我有设备的供应商ID和产品ID,我正在试图弄清楚如何做到这一点。 我是否需要修改Raspbian内核中的OTG USB驱动程序? 我是否必须完全构建自己的内核? 还是有一个我甚至没有意识到的更好的选择?

提前致谢!!

我是否需要修改Raspbian内核中的OTG USB驱动程序?

你的第一个问题的答案是“它取决于”,但如果你的设备没有做任何太不寻常的事情,这可能是一个否:你不需要修改内核模块和内核的源代码。

你很幸运Raspbian支持一个支持ConfigFS的现代内核。 使用dtoverlay=dwc2设置后,可以像root一样打开FunctionFS批量端点,如下所示:

modprobe libcomposite
modprobe usb_f_fs
cd /sys/kernel/config/usb_gadget
mkdir -p myperipheral; cd myperipheral
echo 0x1234 > idVendor  # put actual vendor ID here
echo 0xabcd > idProduct # put actual product ID here
mkdir configs/c.1
mkdir configs/c.1/strings/0x409
echo "My Peripheral" > configs/c.1/strings/0x409/configuration
mkdir functions/ffs.my_func_name
ln -s functions/ffs.my_func_name configs/c.1/
mkdir -p /tmp/mount_point
mount my_func_name -t functionfs /tmp/mount_point
# compile ffs-test from source, then copy and run it from /tmp/mount_point
ls /sys/class/udc > UDC

如果您需要更密切地模拟其他设备,则需要设置bcdDevicebcdUSB ,序列号,制造商,产品字符串,最大功率, os_desc以及可能的其他字段。

AFAIK FunctionFS不支持等时端点,中断传输,也不支持非常规控制传输。 如果您需要这一点,你可能需要开始寻找到扩展现有的小工具模块的源代码在这里

更新:当我回到家测试时,我遇到了一个严重的Raspbian警告。 它最初将无法创建ffs.my_func_name因为默认情况下未启用usb_f_fs。 虽然您不需要修改任何内核模块,但必须使用备用配置重新编译 make menuconfig - >设备驱动程序 - > USB支持 - > USB小工具支持 - > USB功能可通过configfs / Function filesystem(FunctionFS)+其他一些模块进行测试。 上传新内核/模块后,我在Raspbian 8上测试了上面的脚本。我还建议将USB小工具驱动程序/函数文件系统设置为(M),以防您使用更简单的g_ffs遗留模块代替ConfigFS。

暂无
暂无

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

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