前段时间在调一款mips芯片的usb camera,失败了。方案商提供的代码已经可用U盘。也就是ehci host controller的块传输,控制传输没有问题。camera对应的是等时传输,方案商未测试过。我花了6周的时间试了1.1camera及2.0 uvc camera。始终是ehci等时传输有问题,一直觉得这个可能是瓶颈,驱动设置camera 或uvc设置,降低性能会做的出来。但是到第6周的周末我找leiming帮我调,他的初步结论是ehci host本身的问题,于是我放弃了。leiming是很热心的人,很感谢。6周,又一个丢人的时间片。这是我工作中第2次放弃做一个模块。第1次是破解加密芯片,发现是硬件加密狗,无人曾破解过时放弃。
那么我把失败的尝试列一下:
有2种现象差别,其余的现象都差不多
uframe传输数据大于1024,multi大于1时,一直出现xactErr错误
uframe传输数据小于等于1024,multi等于1时,出现一会xactErr后出现babble错误
1.修改uvc的uvcvideo.h中每次传输使用到的URB数
/* Number of isochronous URBs. */
#define UVC_URBS 5
修改为
#define UVC_URBS 1
出现4次Failed to resubmit status URB (-38)就一次也没有,但是这个规律是N-1次出现,除了少了这个错误打印外依然是xactErr和babble。所以不认为改成1可以解决。-38 -EL2NSYNC错误出现在2.6.14的版本里,高版本内核是-EFBIG错误。
2.修改uvc的uvcvideo.h中每次传输最多用多少个iso包,一个包对应一个uframe
那么我把失败的尝试列一下:
有2种现象差别,其余的现象都差不多
uframe传输数据大于1024,multi大于1时,一直出现xactErr错误
uframe传输数据小于等于1024,multi等于1时,出现一会xactErr后出现babble错误
1.修改uvc的uvcvideo.h中每次传输使用到的URB数
/* Number of isochronous URBs. */
#define UVC_URBS 5
修改为
#define UVC_URBS 1
出现4次Failed to resubmit status URB (-38)就一次也没有,但是这个规律是N-1次出现,除了少了这个错误打印外依然是xactErr和babble。所以不认为改成1可以解决。-38 -EL2NSYNC错误出现在2.6.14的版本里,高版本内核是-EFBIG错误。
2.修改uvc的uvcvideo.h中每次传输最多用多少个iso包,一个包对应一个uframe