FunctionFS使用SET_INTERFACE激活备用设置时将停止端点。知道为什么吗?

问题描述 投票:0回答:1

我正在尝试使用FunctionFS和FS驱动程序创建小工具。我的小工具由具有以下配置的两个功能组成:

Function 1:
Interface 0:
     Endpoint BULK OUT 0x01
     Endpoint BULK IN 0x81

Function 2:
Interface 0 Alternate setting 0:
     No Endpoint
Interface 0 Alternate setting 1:
     Endpoint BULK OUT 0x02
     Endpoint BULK IN 0x82

该小工具在IMX8板上运行。该操作系统是Debian,其内核为4.14.98。

在我使用另一台计算机上的libusb的libusb_set_interface_alt_setting激活功能2中的替代设置1之前,一切正常。 libusb没有显示任何错误,但是交换的USB数据包显示从主板返回了STALL。内核日志中也没有有关STALL的调试信息。如果我将小工具连接到不依赖libusb进行通信的另一块板上,则此问题不是由于libusb引起的,因为我有相同的问题(和STALL)。

我尝试更改USB描述符(端点地址,功能1中的备用设置)和代码(当我打开端点时,使用一个功能而不是两个功能),但结果没有改变。我还查看了内核源代码以找出错误的位置,但没有发现明显的地方可以创建STALL。

其他人也遇到过类似的问题,或者对我如何知道正在发生的事情有任何想法?我真的很感谢您的帮助。

我正在尝试使用FunctionFS和FS驱动程序创建小工具。我的小工具由具有以下配置的两个功能组成:功能1:接口0:端点BULK OUT 0x01 ...

linux-kernel usb embedded-linux functionfs
1个回答
0
投票

我想出来了,所以我将答案放在这里,以防其他人遇到这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.