首页 文章

USB - 没有中断 endpoints 的MTP / PTP

提问于
浏览
2

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

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

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

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

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

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

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

  • 'space available'未更新 - 用户将看到有100Mb的可用内存,但放置1Mb文件会出现错误"Not Enough Memory"

  • 非主机驱动的操作在主机上不可见(因此,当删除,创建或移动设备文件时,连接的主机不知道它)

如果我们能够忍受它,那么以这种方式实施它是否明智?


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

似乎windows驱动程序(wpd)需要中断 endpoints - 即使它没有被使用 . 厄运...

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

1 回答

  • 1

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

    不支持3 endpoints 设置 . 需要中断 endpoints ,以便驱动程序可以从设备接收MTP事件 . 这些事件是驱动程序依赖于将事件中继到应用程序的通知机制(例如,当创建,更新或移除对象时) . 如果您的设备对 endpoints 不执行任何操作(即不发送任何事件),则只要更改了设备上的对象,Explorer等应用程序就无法正常运行 .

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

相关问题