大家好:
最近在做板子时发现一个奇怪的问题,捣鼓好久都没有解决,在此贴出来希望大家给家意见、建议
1.硬件:AM3354+HUB芯片(HUB2514)
2.问题:对U盘进行长时间拷贝、删除文件操作(同一个文件来回拷贝、删除),一段时间之后usb RX无法正常工作,追代码发现此时已经将对应的PD push到queue中,但是没有触发USBSSINT中断(从芯片手册上来看,CPPI DMA完成操作之后会触发该中断),所以目前猜测是虽然地址已经push到queue中了但是DMA没有启动传输,所以请教一下各位 从哪里可以检测到DMA传输的中间过程(比如datasheet中提到的DMA_req[8])
3.2中提到的问题在Kingston U盘上不存在,Sandisk的会出问题。
yongqing wang:
Sandisk 别的型号有测试一下吗
user5821401:
回复 yongqing wang:
目前我手上有的5个u盘都是这样(32G、64G、16G)
yongqing wang:
我估计是触发中断后又有别的push ,会造成数据被打断
yongqing wang:
回复 yongqing wang:
类似这个帖子中的解释,你可以按这个方向查查:e2e.ti.com/…/668709
yongqing wang:
回复 yongqing wang:
另外你的SDK是最新的吗?如果不是建议更新最新的版本看看
user5821401:
回复 yongqing wang:
我检测数据发现 最开始push到queue16中的数据始终没有被DMA读取(正常情况下queue16中的地址会被DMA读取,然后就变为0,现在读出来的还是原来写进去的值),你所说的触发中断之后又有别的push操作?(这个操作是DMA做的?我代码中检测了所有的push动作 没有看到有对应的调用),
user5821401:
回复 yongqing wang:
是的,
从CPPI DMA的描述来看,只要我的PD push到相应的queue中之后(RXSQ) 会触发一个DMA_req[8] 这个请求我可以再哪里检测到吗?
yongqing wang:
回复 user5821401:
意思是启动DMA之前有连续的push,造成传输丢弃
user5821401:
回复 yongqing wang:
这一点之前也怀疑过,检测发现没有多次push
yongqing wang:
回复 user5821401:
多试试别的牌子的,单一种出现问题,估计适配的驱动可能没做好