打印
[技术问题解答]

KL26 USB为什么要在这里延时一下?

[复制链接]
704|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tbag|  楼主 | 2017-5-23 17:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Freescale USB Stack v4.0.3 或更低的版本中,原子操作函数
_usb_khci_atom_tr(),  遇到NAK会延时若干毫秒,
case 0x0a:  /* NAK */
            res = KHCI_ATOM_TR_NAK;
            if (retry)
                time_delay(10 * delay_const * (pipe_desc_ptr->NAK_COUNT - retry));
            break;

我在芯片手册上没找到这个延时的依据,为什么要延时? 尝试去掉或者答复缩短延时,会致使工作不正常。目前这个延时严重影响了我们的性能,请问如何解决?

ps: 在Freescale_BM_USB_Stack_v5.0, 看到改成了一个非阻塞的原子操作函数,但不意味着不延时,我没有去验证。

相关帖子

沙发
tbag|  楼主 | 2017-5-24 16:14 | 只看该作者
补充一下:此时USB工作在HOST模式。在向设备读取数据过程中,设备可能返回NAK,如果这里延时几十个毫秒,会极大降低系统吞吐,我们现在就被这里卡住了,性能一直提不上去。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝