linux-Raspberry Pi零USB设备仿真
作者:互联网
我知道Raspberry Pi Zero支持OTG和USB外设协议,并且这里显示了很多很棒的外设: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
如果您需要更紧密地模拟其他设备,则由您来设置bcdDevice,bcdUSB,序列号,制造商,产品字符串,最大功率,os_desc以及其他可能的字段.
AFAIK FunctionFS不支持同步端点,中断传输或异常控制传输.如果需要,您可能需要开始研究扩展现有小工具模块的源代码here.
更新:当我回家进行测试时,我遇到了Raspbian的严重警告.最初将无法创建ffs.my_func_name,因为默认情况下未启用usb_f_fs.尽管不需要修改任何内核模块,但必须使用备用配置recompile.制作menuconfig->设备驱动程序-> USB支持-> USB小工具支持-> USB功能可通过configfs /功能文件系统(FunctionFS)的一些其他模块进行配置以进行测试.在上传了新的内核/模块之后,我在Raspbian 8上测试了上述脚本.我还建议将USB Gadget Drivers / Function Filesystem(USB小工具驱动程序/功能文件系统)设置为(M),以防您使用较简单的g_ffs旧版模块代替ConfigFS.
标签:raspberry-pi,linux-kernel,linux-device-driver,linux,raspbian 来源: https://codeday.me/bug/20191118/2026333.html