2

由于我们计划为您的下一个设备使用 MTP(媒体传输协议),因此我们评估使用 MTP 作为当前发布设备中当前(不稳定)USB 驱动程序的替代品。

此设备的限制是,其处理器 (Strong Arm) 最多仅支持 3 个端点:

“串行端口 0 是一个通用串行总线设备控制器 (UDC),它支持三个端点,并且可以以 12 Mbps 的波特率运行半双工(仅从属,而不是主机或集线器控制器)。”

但根据规范,MTP 至少需要 4 个端点(来自 PTP 规范):

“设备应包含至少四个端点:默认、数据输入、数据输出和中断端点。”

现在的问题是:我们可以跳过设备上的中断端点吗?我知道它违反了规范 - 但如果我们这样做会发生什么?

从我们目前的评估软件中,我可以看到以下场景:

  1. “可用空间”未更新 - 用户将看到有 100Mb 的可用内存,但放置 1Mb 文件会出现错误“内存不足”
  2. 非主机驱动的操作在主机上不可见(因此当在设备上删除、创建或移动文件时,连接的主机不知道)

如果我们可以忍受它,是否建议以这种方式实现它?


更新:该死的......当我上次测试它时,我刚刚删除了中断EP数据传输的代码。现在我还删除了端点定义(我不再创建端点),从这一点开始,无法再建立 MTP 连接:(

似乎 Windows 驱动程序 (wpd) 需要中断端点——即使它没有被使用。厄运...

有没有人知道,是否以及如何让 MTP 与 3 个端点一起工作?

4

1 回答 1

1

最后我得到了微软的答复:

不支持 3 端点设置。

需要中断端点,以便驱动程序可以从设备接收 MTP 事件。这些事件是一种通知机制,驱动程序依赖于将事件中继到应用程序(例如,当创建、更新或删除对象时)。

如果您的设备对端点不执行任何操作(即不发送任何事件),则只要您设备上的对象发生更改,诸如 Explorer 之类的应用程序就不会正确运行。

所以我们埋葬了我们的计划...... :(

于 2013-03-18T09:52:46.817 回答