我有一个在带有IMX6处理器的板上运行WinCE7的系统。有时,当系统负载过重时,我在USB跟踪器上看到,在大约2秒的时间内,看不到IN令牌(只看到SOF,表示总线是活动的)。在驱动程序中的某个地方调用了函数"IssueBulkTransfer“,我相信它会经过微软的库并到达BSP。我的问题是,如果我告诉主机控制器发送IN令牌,如果控制器的微码接收到NAK,它是否会继续发送IN令牌,而我的驱动程序不必每次都重新发送IN令牌(从而占用CPU时间)?
谢谢
发布于 2017-03-08 18:00:16
从描述中,我假设您正在谈论EHCI控制器。答案有两点:
1-是,控制器将连续发送NAKs的IN令牌,直到该端点的NAC计数器达到0。
2-我想你现在看到的空闲期也在预料之中。请参阅EHCI规范4.9节中的报价。
请注意,当异步调度中的所有队列头耗尽所有传输或所有NakCnt变为零时,主机控制器将检测到空的异步调度和空闲调度遍历(参见第4.8.3节)。
因此,控制器将停止遍历调度列表,这可能是您看到的2秒空闲时间。当控制器再次开始遍历时,它会重新加载NAK计数器,并再次在in令牌中启动。
https://stackoverflow.com/questions/42448011
复制相似问题