This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:Linux
您好!
我们尝试在处理器 SDK v05.03.00.07上运行 UVC-Gadget 应用程序、但它无法分配缓冲区。
http://processors.wiki.ti.com/index.php/Usbgeneralpage#USB_Video
目标日志位于此处。
root@am57xx-evm:~ ls -l /dev/video crw-rw-- 1 root 视频 81,2 Apr6 01:37 /dev/video0 crw-rw-- 1 root 视频 81,1 Apr6 01:37 /dev/video10 crw-rw-- 1 root 视频 81、0 4月6日01:37 /dev/video11 root@am57xx-evm:~ modprobe g_webcam [296.379760] g_webcam gadget:UVC_FUNCK_BIND [296.384410] g_webcam gadget:webcam Video Gadget [296.389234] g_webcam g_ls ready root@~ am57xx-l-/dev/video root - rw- rw- rw- rw- rw- 视频 81,2 Apr6 01:37 /dev/video0 crw-rw-- 1 root 视频 81年4月3日01:42 /dev/video1 crw-rw---- 1根 视频 81,1 Apr6 01:37 /dev/video10 crw-rw-- 1 root 视频 81、0 4月6日01:37 /dev/video11 root@am57xx-evm:~ uVC-gadget -d /dev/video1 器件/dev/video1已打开:dwc3-gadget (gadget)。 [331.780165] g_webcam gadget:高速配置#1:视频 [331.785514] g_webcam gadget:uvc_function_set_alt (0、0) [331.790762] g_value webcam gadget:reset UVC Control [331.795234] g_webcam Requestget:uvc_function_set_w01_set (w1) wq1、wq1 r1_1 r1 wq1 wq1 w01b 流处理类型[337801_1) bRequestType 21 BREQUEST 01 wValue 0100 WINDEX 0001 wLength 001A 流请求(req 01 cs 01) 设置探测器控制、长度= 26 bRequestType A1 BREQUEST 81 wValue 0100 WIndex 0001 wLength 001A 流请求(req 81 cs 01) bRequestType A1 BREQUEST 87 windex 0200 wLength 0002 控制请求 (REQ 87 cs 02) bRequestType A1 BREQUEST 87 wValue 0200 WINDEX 0200 wLength 0002 控制请求(REQ 87 cs 02) bRequestType A1 BREQUEST 87 wValue 0200 WINDEX 0200 wLength 0002 控制请求(REQ 87 cs 02) bRequestType A1 BREQUEST 87 wINDEX 0200 wLength 0002 控制请求 (REQ 87 cs 02) bRequestType A1 BREQUEST 87 wValue 0200 WINDEX 0200 wLength 0002 控制请求(REQ 87 cs 02) bRequestType A1 BREQUEST 87 wValue 0200 WINDEX 0200 wLength 0002 控制请求(REQ 87 cs 02) bRequestType A1 BREQUEST 87 wINDEX 0200 wLength 0002 控制请求 (REQ 87 cs 02) bRequestType A1 BREQUEST 87 wValue 0200 WINDEX 0200 wLength 0002 控制请求(REQ 87 cs 02) bRequestType A1 BREQUEST 87 wValue 0200 WINDEX 0200 wLength 0002 控制请求(REQ 87 cs 02) bRequestType A1 BREQUEST 87 wINDEX 0200 wLength 0002 控制请求 (REQ 87 cs 02) bRequestType A1 BREQUEST 87 wValue 0200 WINDEX 0200 wLength 0002 控制请求(REQ 87 cs 02) bRequestType A1 BREQUEST 87 wValue 0200 WINDEX 0200 wLength 0002 控制请求(REQ 87 cs 02) bRequestType A1 BREQUEST 87 wINDEX 0200 wLength 0002 控制请求 (REQ 87 cs 02) bRequestType A1 BREQUEST 87 wValue 0200 WINDEX 0200 wLength 0002 控制请求(REQ 87 cs 02) bRequestType A1 BREQUEST 87 wValue 0200 WINDEX 0200 wLength 0002 控制请求(REQ 87 cs 02) bRequestType A1 BREQUEST 87 wINDEX 0200 wLength 0002 控制请求 (REQ 87 cs 02) bRequestType A1 BREQUEST 87 wValue 0200 WINDEX 0200 wLength 0002 控制请求(REQ 87 cs 02) bRequestType A1 BREQUEST 87 wValue 0200 WINDEX 0100 wLength 0001 控制请求(REQ 87 cs 02) bRequestType 21 BREQUEST 01 wQU0100 WINDEX wLength 001A 流请求 (REQ 01 cs 01) 设置探头控制、长度= 26 警告:MJPEG 已请求且未加载图像。 bRequestType A1 BREQUEST 82 wValue 0100 WINDEX 0001 wLength 001A 流请求(req 82 cs 01) bRequestType A1 BREQUEST 83 wValue 0100 WINDEX 0001 wLength 001A 流请求(req 83 cs 01) bRequestValue 21 BREValue EST 01 wQUINDEX wLength 001A 流请求(req 01 cs 01 01 01) 设置探头控制、长度= 26 警告:已请求 MJPEG、且未加载图像。 bRequestType A1 BREQUEST 81 wValue 0100 WINDEX 0001 wLength 001A 流请求(req 81 cs 01) bRequestType 21 BREQUEST 01 wValue 0100 WINDEX 0001 wLength 001A 流请求(req 01 cs 01) 设置探针控制、长度= 26 警告:MJPEG 请求且未加载图像。 bRequestType A1 BREQUEST 82 wValue 0100 WINDEX 0001 wLength 001A 流请求(req 82 cs 01) bRequestType A1 BREQUEST 83 wValue 0100 WINDEX 0001 wLength 001A 流请求(req 83 cs 01) bRequestValue 21 BREValue EST 01 wQUINDEX wLength 001A 流请求(req 01 cs 01 01 01) 设置探头控制、长度= 26 警告:已请求 MJPEG、且未加载图像。 bRequestType A1 BREQUEST 81 wValue 0100 WINDEX 0001 wLength 001A 流请求(req 81 cs 01) bRequestType 21 BREQUEST 01 wValue 0100 WINDEX 0001 wLength 001A 流请求(req 01 cs 01) 设置探针控制、长度= 26 警告:MJPEG 请求且未加载图像。 bRequestType A1 BREQUEST 82 wValue 0100 WINDEX 0001 wLength 001A 流请求(req 82 cs 01) bRequestType A1 BREQUEST 83 wValue 0100 WINDEX 0001 wLength 001A 流请求(req 83 cs 01) bRequestValue 21 BREValue EST 01 wQUINDEX wLength 001A 流请求(req 01 cs 01 01 01) 设置探头控制、长度= 26 警告:已请求 MJPEG、且未加载图像。 bRequestType A1 BREQUEST 81 wValue 0100 WINDEX 0001 wLength 001A 流请求(req 81 cs 01) bRequestType 21 BREQUEST 01 wValue 0200 WINDEX 0001 wLength 001A[502.248756] g_webcam gadget:UVC_FUNCK_SET_alt (1、1) 流请求(req 01 cs 02) WINDEX 0001 wLength 001A[502.248756] g_webcam g_webcam g/网络摄像头 小工具:UVC_SET_alt (1、1、1)设置:UVC 259131] Vc : 已请求 MJPEG、但未加载图像。 设置[502.270462] UVC-Gadget:vmalloc:分配失败:0字节、模式:0x14080c0 (GFP_kernel|_GFP_zero)、nodemask=(null) 格式为0x47504a4d 640x360 启动视频流。 [502.284723] UVC-gadget cpuset=/ MEMS_allowed=0 [502.295507] CPU:1 PID:1114 Comm:UVC-gadget 已污染:g o 4.14.79-ge669d52447 #1 [502.304157]硬件名称:通用 DRA74X (平展器件树) [502.310274]背板: [502.312743][ ](dump_backtrace)从[ ](show_stack+0x18/0x1c) [502.320345] r7:fffff000 r6:60030013 r5:00000000 r4:c1053d10 [ 502.326034][ ](show_stack)从[ ](dump_stack+0x90/0xa4) [502.333292][ ](dump_stack)从[ ](warn_alloc+0xc4/0x16c) [502.340633] r7:fffff000 r6:ffffff r5:0000071f r4:00000000 [ 502.346321][ ](warn_alloc)、来自[ ](__vmalloc_node_range+0x210/0x23c) [502.354620] r3:00000000 r2:c0bbb790 [ 502.358208] r5:0000071f r4:00000000 [ 502.361800][ ](__vmalloc_node_range)从[ ](vmalloc_user+0x70/0xac) [ 502.370101] R9:bf4cd6bc R8:ed10b200 r7:fff000 R6:00000001 R5:0000071f R4:014080c0 [ 502.37788][ ](vmalloc_user)从[ ](vb2_vmalloc_alloc+0x58/0xac [videobuf2_vmalloc]) [502.387668] r5:00000000 r4:ed44f500 [502.391268][ ](vb2_vmalloc_alloc [video_vmalloc])、来自[ ](__vb2_queue_alloc+0x170/0x424) [502.401662] r7:fff000 r6:ec0b2468 r5:ed10b200 r4:00000000 [502.407348][ ](__vb2_queue_alloc)来自[ ](vb2_core_reqbufs+0x104/0x358) [502.415910] r10:ed421180 R9:00000000 R8:ee895e28 r7:bf4da064 R6:ec0b26ec R5:ec0b2468 [502.423771] R4:00000000 [50262.417] ](vb2_core_reqbufs)、来自[ ](vb2_reqbufs+0x38/0x3c) [ 502.434181] R10:ed421180 R9:00000000 R8:00000008 r7:bf4da064 R6:ee84cb00 R5:ec0b2468 [502.442042] R4:ee895e28 [ 502.444600][ ](vb2_reqbufs)、来自[ ](uvcg_alloc_buffers+0x14/0x20 [USB_f_UVC]) [502.45363] R5:ed421180 R4:ee895e28 [502.457293][ ](uvcg_alloc_buffers [USB_f_uvc])、来自[ ](UVC_v4l2_reqbufs+0x38/0x44 [USB_f_UVC]) [502.467858] R5:ed421180 R4:ee895e28 [502.471462][ ](UVC_v4l2_reqbufs [USB_f_UVC])、来自[ ](V4L_reqbufs+0x50/0x54) [502.480371] R5:ed421180 R4:ee895e28 [502.483965][ ](V4L_reqbufs)、来自[ ](_VIDEO_DO ioctl+0x30c/0x314) [502.492002] r7:c071b8c0 R6:ec0b2000 R5:c0145608 R4:00000003 [502.497689][ ](__VIDEO_DO _ioctl)从[ ](VIDEO_usercopy+0x78/0x49c) [502.505901] R10:00000000 R9:00000000 R8:ee895e28 r7:00000000 R6:00000014 R5:00000003 [502.513762] R4:c0145608 [502.516309][ ](视频_usercopy)、来自[ ](VIDEO_ioctl2+0x18/0x1c) [502.524085] R10:ed519070 R9:ee894000 R8:ec0b2418 r7:bef2a7ec R6:c0145608 R5:ed421180 [502.531945] R4:ec0b2000 [502.534][ ](video_ioctl2)、来自[ ](v4l2_ioctl+0x84/0xe0) [ 502.541927][ ](v4l2_ioctl)从[ ](do_vfs_ioctl+0xa8/0x790) [ 502.549443] R9:ee894000 R8:00000003 r7:c0145608 R6:00000003 R5:ed421180 R4:bef2a7ec [ 502.557222][ ](do _vfs_ioctl)、从[ ](sys_ioctl+0x3c/0x60) [502.564564] r10:00000036 r9:ee894000 r8:bef2a7ec r7:c0145608 R6:00000003 R5:ed421180 [502.572424] r4:ed421180 [ 502.574972][ ](sys_ioctl)从[ ](RET_FAST_SYSCALL+0x0/0x4c) [502.582575] R9:ee894000 R8:c0207e44 r7:00000036 R6:00000004 R5:00000001 R4:00025208 [502.590494] Mem-Info: [502.592831] active_anon:4592 inactive_anon:2254 isolated_anon:0 [502.592831] active_file:7930 inactive_file:29267 isolated_file:0 [502.592831] unevicable:2CMA writeback:0不稳定:0 [502.592831] 非活动状态:100b:100b 无源回写 b:18243KB:无源回写 b:100b:100b:无源回写 b:100243KB:100b:无源回写 b:无源回写 b:100243KB:100b:100b:无源回写 b:100b:无源回写 b 无 [ 502.650946] DMA 自由:430504kB 最小值:2504kB 低电平:3128kB 高电平:3752kB ACTIVE_ANON:0KB ACTIVE_ANON:0KB ACTIVE_FILE:12336kB INACTIVE_FILE:1000kB UNACTIVE_FILE:1000kB UNevicable CMA:0KB writepending:8kB present:589824kB INLOCKE_8kB:128kB RABPCP 本地堆栈 :108kB:128kB:128kB 无回弹:128kB 0 1253 1253 [502.682948] HIGHMEM FREE:1137340kB 最小值:512KB 低电平:2556kB 高电平:4600kB ACTIVE_ANON:18368kB ACTIVE_ANON:9016kB ACTIVE_FILE:19384kB CMA_FILE:116068kB UNPCP 不活动:048kB:032kB 本地堆栈 [:1206kB:078kB:128kB 无源堆栈:032kB:128kB:128kB:128kB:128kB 无中断128kB:128kB:128kB:128kB:128kB:128kB:128kB 无中断备用 10*4KB (MEC) 10*8KB (UME) 1*16KB (UC) 7*32KB (UC) 5*64KB (EC)6*128KB (UMC) 2HM256KB (UMC) 5*512KB (EC)4*1024KB (EC)2*2048KB (UM) 102*4096KB (UMC) 2*5073KB (ME) 2.450B (IE) 17 高速缓存4KB (UMC) 3*8KB (MC) 6*16KB (MC) 6*32KB (UMC) 7*64KB (UMC) 9128KB (UM) 7*128KB (UM) 7*256KB (UM) 10*512KB (UM) 4*1024KB (UM) 5*2048KB (UC) 9*4096KB (UMC) 732KB (432KB UM) 64KB (2607372KB UM) 10KB (UMC)10*7524KB (4*772KB (UM) 64KB (4*772KB (2607372KB UC)交换数据[U772KB (UMC)[U7724KB (4*7524KB U772KB U7724U772KB (UC)交换数据 ADD 0、DELETE 0、FIND 0/0 [502.760188]免费交换=0KB [502.763143]总交换=0KB [502.766032] 474368页 RAM [502.768940]326912页 HIGHMEMM/MovableOnly [502.773278] 7834页保留 [502.776430]47104页 无法请求缓冲区(/dev/video1)。 分配缓冲区失败。
在主机上、我们使用 Ubuntu 18.04并运行 guvcview。 但只需获取黑色图像、流在几秒钟后断开。
guvcview -d /dev/video1 -f YUV
网络摄像头小工具:UVC 摄像头(USB-0000:00:14.0-1.2): /dev/video1 集成摄像头:集成 C (USB-0000:00:14.0-8) :/dev/video0 驱动程序信息(未使用 libv4l2): 驱动程序名称:uvcvideo 卡类型 :网络摄像头小工具:UVC 摄像头 总线信息 :USB-0000:00:14.0-1.2 驱动程序版本:4.15.18 功能:0x84200001 视频捕捉 流 扩展 PIX 格式 设备功能 设备电容:0x04200001 视频捕捉 流 扩展 PIX 格式 优先级:2 视频输入:0 (摄像机1:正常) 格式视频捕捉: 宽度/高度 :640/360 像素格式 :“JPG” 字段 : 每行无字节:0 大小映像 :460800 Colorspace :sRGB 传递函数:默认值(映射到 sRGB) YCbCr/HSV 编码:默认值(映射到 ITU-R 601) 量化 :默认 (映射到完整范围)标志 : 裁剪功能视频捕捉: 边界 :左0,顶0,宽度640,高度360 默认值 :左0、上0、宽度640、高度360 像素宽:1/1 选择:CROP_DEFAULT、左0、上0、宽度640、高度360 选择:CROP_Bounds、左0、上0、宽度640 、高度360流参数视频捕捉: 功能 :时间帧 /秒:15.000 (15/1) 个读取缓冲区 :0
我们还尝试使用 gstreamer 在主机上捕获 video1流。 它看起来工作正常、但捕获的图像仍然是黑色的。
在主机上、
gst-launch-1.0 -v v4l2src device=/dev/video2! 视频/x-raw、格式=YUY2、宽度=640、高度=360、帧速率=10/1! 视频转换! 自动视频链接
在目标上、
root@am57xx-EVM:~ modprobe g_webcam [ 270.67261] g_webcam gadget:uvc_function_bind [ 270.678202] g_webcam gadget:webcam Video Gadget [ 270.682845] g_webcam g_webcam gadget:g_webcam ready root@am57xx-evm:~ dwcgvc-gadget /dev/video1 /dev/video1设备打开(dwcget) [296.267502] g_webcam gadget:高速配置#1:视频 [296.272849] g_webcam gadget:uvc_function_set_alt (0、0) [296.278097] g_value webcam gadget:reset UVC Control [296.282570] g_webcam g_requestget:uvc_function_set_w01_set (1)[296.2801_1、wq1、wq1) bRequestType 21 BREQUEST 01 wValue 0100 WINDEX 0001 wLength 001A 流请求(req 01 cs 01) 设置探测器控制、长度= 26 bRequestType A1 BREQUEST 81 wValue 0100 WIndex 0001 wLength 001A 流请求(req 81 cs 01) bRequestType A1 BREQUEST 87 windex 0200 wLength 0002 控制请求 (REQ 87 cs 02) bRequestType A1 BREQUEST 87 wValue 0200 WINDEX 0200 wLength 0002 控制请求(REQ 87 cs 02) bRequestType A1 BREQUEST 87 wValue 0200 WINDEX 0200 wLength 0002 控制请求(REQ 87 cs 02) bRequestType A1 BREQUEST 87 wINDEX 0200 wLength 0002 控制请求 (REQ 87 cs 02) bRequestType A1 BREQUEST 87 wValue 0200 WINDEX 0200 wLength 0002 控制请求(REQ 87 cs 02) bRequestType A1 BREQUEST 87 wValue 0200 WINDEX 0200 wLength 0002 控制请求(REQ 87 cs 02) bRequestType 21 BREQUEST 01 wIndex 0001 wLength 001A 流请求 (REQ 01 cs 01) 设置探头控制、长度= 26 bRequestType A1 BREQUEST 82 w0100 WINDEX 0001 wLength 001A 流请求(REQ 82 cs 01) bRequestType A1 BREQUEST 83 wQUINDEX 0001 wValue 001A 流请求(REQ 83 cs 01) bRequestType 21 BREQUEST 01 wValue 0100 WINDEX 0001 wLength 001A 流请求(req 01 cs 01) 设置探测器控制、长度= 26 bRequestType A1 BREQUEST 81 wValue 0100 WINDEX 0001 wLength 001A 流请求(req 81 cs 01) bRequestType 21 BREQUEST 01 wValue 0200 WINDEX 0001 wLength 001A[424.195285] g_webcam 小工具:UVC_FUNCK_SET_alt (1、1) [ 424.205538] g_webcam 小工具:重置 UVC 流请求(req 01 cs 02) 设置提交控制、长度= 26 设置格式为0x65640x360 开始视频流。 /dev/video1:请求4个缓冲器。 /dev/video1:映射在地址 bb6d70000的缓冲区0。 /dev/video1:映射在地址 bb6cff000处的缓冲区1。 /dev/video1:映射在地址 bb6c8e000处的缓冲区2。 /dev/video1:映射在地址 bb6c1d000处的缓冲区3。
提前感谢、
奥伊拉
您好、Ohira、
我不确定是什么导致了测试中的 vmalloc 失败,我在测试中看不到它。 但是、我可以确认您描述的测试序列、从而在主机侧出现黑屏。
如果在加载 g_webcam 驱动程序时添加如下所示的参数、您应该能够在主机上看到流视频。
# modprobe g_webcam streaming_maxpacket=3072