基于am3354芯片的开发板上进行测试
摄像头驱动识别为SMI;
内核版本:Linux-3.2.0;
PSP版本号:04.06.00.10;
SDK版本号:05.07.00.00;
测试时用的qt4.8.5版程序,程序在单独打开使用两个摄像头中任意一个时都能正常显示,但是修改程序同时打开两个摄像头时,
驱动报错:uvcvideo: Failed to submit URB 0 (-28).
在Google搜索时好多网友讨论是因为usb带宽问题,在修改摄像头分辨率和帧数能够输出最小无果后,看到下面国外论坛位网友提供的patch:
diff --git a/drivers/media/video/uvc/uvc_driver.c b/drivers/media/video/uvc/uvc_driver.c index b6eae48..f633700 100644 --- a/drivers/media/video/uvc/uvc_driver.c +++ b/drivers/media/video/uvc/uvc_driver.c <at> <at> -2130,6 +2130,15 <at> <at> static structusb_device_id uvc_ids[] = {.bInterfaceProtocol = 0,.driver_info = UVC_QUIRK_PROBE_MINMAX | UVC_QUIRK_BUILTIN_ISIGHT }, + /* Foxlink ("HP Webcam" on HP Mini 5103) */ + { .match_flags =USB_DEVICE_ID_MATCH_DEVICE + |USB_DEVICE_ID_MATCH_INT_INFO, +.idVendor = 0x05c8, +.idProduct = 0x0403, +.bInterfaceClass =USB_CLASS_VIDEO, +.bInterfaceSubClass = 1, +.bInterfaceProtocol = 0, +.driver_info = UVC_QUIRK_FIX_BANDWIDTH }, /* Genesys LogicUSB 2.0 PC Camera */ { .match_flags =USB_DEVICE_ID_MATCH_DEVICE |USB_DEVICE_ID_MATCH_INT_INFO,
修改后发现也不起作用,报错仍然相同;于是又换了一款210开发板测试,没有打patch之前也是同样原因,打完patch后,210开发板成功
打开两个摄像头并且正常显示。
这应该算是kernel的bug,因此问一下TI官方有没有解决办法?
Steven Liu1:
请问,在你使用的这个版本中有USB CPPI DMA的支持吗?有的话使能了吗?
210开发板是指什么?你提这个案例的意思,是想说用这个patch能把这个问题解决,但是需要TI官方的肯定是吗?
ryan zhang:
回复 Steven Liu1:
首先非常感谢 @Steven Liu 的回复,我用的内核里有配置CONFIG_USB_TI_CPPI41_DMA_HW的
第二个问题确实是你理解的意思,昨天又试了下通过otg和host两个控制器分别连接两个摄像头,是能正常工作的
感觉跟usb带宽确实有关系,不知道TI官方的demo板是不是也有这样的问题?如果是的话,有没有解决方法
Steven Liu1:
回复 ryan zhang:
目前,我这边没有实际案例这么用过,所以没有人汇报过这个问题。建议发到E2E论坛的Sitara专区,会有产品线的人来进行解答:http://e2e.ti.com/support/arm/sitara_arm/f/791