我正在使用gadgetfs开发简单的环回,但我对gadgefs如何知道主机启动IN传输感到有点困惑 .
Gadgetfs在 endpoints 上使用读/写,所以根据我的理解,它只能:
-
在OUT endpoints 文件描述符上使用“read”时 - 接受从主机到设备的新传输 .
-
在IN endpoints 文件描述符上使用“write”时 - 开始从设备到主机的传输 .
(1)上面似乎很容易理解,但我对(2)有误解:
是不是只有在主机启动事务时才接受写入IN endpoints (根据usb标准)?
如果是这样,小工具如何知道主机在IN endpoints 启动了一个事务,并且此时需要转移?
1 回答
Gadget将有一个USB设备控制器,可以处理来自USB主控制器的所有请求 . 因此,GadgetFS的工作是在设备控制器驱动程序的帮助下填充 endpoints 缓冲区 . 以下是一系列事件 -
这是整体步骤 . 您可以查看控制器规格以获取更多详细信息 . 对于EHCI和XHCI,这些步骤或多或少相同 .
请记住,所有事务都由设备控制器处理,应用程序/ GadgetFS有一个工作来填充EP指向的缓冲区 .