gpt4 book ai didi

linux - Raspberry Pi 零 USB 设备仿真

转载 作者:太空狗 更新时间:2023-10-29 11:07:37 29 4
gpt4 key购买 nike

我知道 Raspberry Pi Zero 支持 OTG 和 USB 外设协议(protocol),这里显示了很多很酷的内置外设:https://learn.adafruit.com/turning-your-raspberry-pi-zero-into-a-usb-gadget?view=all#other-modules

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

提前致谢!

最佳答案

Do I need to modify the OTG USB drivers in the Raspbian kernel?

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

您很幸运,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 不支持等时端点、中断传输或异常控制传输。如果您需要这个,您可能需要开始研究使用源代码扩展现有的小工具模块 here .

更新:当我回家测试这个时,我遇到了 Raspbian 的严重警告。它最初无法创建 ffs.my_func_name,因为默认情况下未启用 usb_f_fs。尽管您不需要修改任何内核模块,但您必须 recompile具有备用配置。 make menuconfig -> Device Drivers -> USB support -> USB Gadget Support -> USB functions configurable through configfs/Function filesystem (FunctionFS) + 一些其他模块来测试。上传新的内核/模块后,我在 Raspbian 8 上测试了上述脚本。我还建议将 USB Gadget Drivers/Function Filesystem 设置为 (M),以防您求助于更简单的 g_ffs 遗留模块代替 ConfigFS。

关于linux - Raspberry Pi 零 USB 设备仿真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39375475/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com