ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

linux-Raspberry Pi零USB设备仿真

2019-11-18 07:51:51  阅读:450  来源: 互联网

标签:raspberry-pi linux-kernel linux-device-driver linux raspbian


我知道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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有