0

我有一个在带有 IMX6 处理器的板上运行 WinCE7 的系统。偶尔当系统负载很重时,我在 USB 跟踪器上看到,大约 2 秒后,看不到 IN 令牌(仅看到 SOF,表明总线处于活动状态)。在驱动程序中的某个地方调用了函数“IssueBulkTransfer”,我相信它会通过 Microsoft 库并到达 BSP。我的问题是,如果我告诉主机控制器发送一个 IN 令牌,如果控制器的微码收到 NAK ,它是否会继续发送 IN 令牌,而我的驱动程序不必每次都重新发送 IN 令牌(因此使用 CPU 时间)?

谢谢

4

1 回答 1

0

根据描述,我假设您正在谈论 EHCI 控制器。分两点回答——

1 - 是的,控制器将持续发送 NAK 的 IN 令牌,直到该端点的 NAC 计数器达到 0。

2 - 我想你看到的空闲期也是预期的。请参阅 EHCI 规范第 4.9 节的引用。

请注意,当异步调度中的所有队列头耗尽所有传输或所有 NakCnt 归零时,主机控制器将检测到空的异步调度和空闲调度遍历(参见第 4.8.3 节)。

所以控制器将停止遍历调度列表,这可能是您看到的 2 秒空闲。控制器再次开始遍历的那一刻,它重新加载 NAK 计数器并再次以 IN 令牌开始。

于 2017-03-08T10:00:15.903 回答