USB - 没有中断端点的MTP / PTP

时间:2013-02-04 18:27:21

标签: usb endpoint mtp

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

该设备的限制是,其处理器(Strong Arm)最多只支持3个EndPoints:

  

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

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

  

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

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

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

  1. 'space available'未更新 - 用户将看到有100Mb的可用内存,但放置1Mb文件会出现错误“Not Enough Memory”
  2. 主机上看不到非主机驱动的操作(因此,当设备文件被删除,创建或移动时,连接的主机不知道它)
  3. 如果我们能够忍受它,那么以这种方式实施它是明智的吗?


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

    似乎windows驱动程序(wpd)需要中断端点 - 即使它没有被使用。运气不好......

    有没有人知道,是否以及如何让MTP使用3个端点?

1 个答案:

答案 0 :(得分:1)

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

  

不支持3端点设置。

     

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

     

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

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