Yocto自定义镜像配置PiCamera V2后QT应用无法打开相机
树莓派PiCamera V2的Yocto自定义镜像配置故障
初始问题
相机未被系统识别,/dev目录下无相关设备节点,dmesg也无相机相关日志,因此尝试添加bcm2835_v4l2内核模块解决。
当前配置
1. custom-image.bb内容
IMAGE_INSTALL += " packagegroup-core-boot packagegroup-core-x11-base xserver-xorg xdg-user-dirs xf86-video-fbdev v4l-utils " inherit core-image
2. 内核配置追加文件(自定义层recipes-kernel/linux/linux_raspberrypi_%.bbappend)
调用的bcm2835_v4l2.config内容:
CONFIG_VIDEO_V4L2=y CONFIG_VIDEOBUF2_CORE=y CONFIG_VIDEOBUF2_MEMOPS=y CONFIG_VIDEOBUF2_VMALLOC=y CONFIG_VIDEOBUF2_DMA_CONTIG=y CONFIG_BCM2835_V4L2=m
3. conf/local.conf配置
KERNEL_MODULE_AUTOLOAD += "bcm2835-v4l2" ENABLE_V4L2_CAMERA = "1"
部分解决后仍存在的问题
添加MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += "kernel-module-bcm2835-v4l2"后,相机可被系统检测到,但QT应用无法打开相机,内核错误日志如下(已翻译为中文):
[ 143.785992] bcm2835-v4l2-0: vidioc_s_fmt_vid_cap 设备忙 [ 143.791802] bcm2835-v4l2-0: vidioc_s_fmt_vid_cap 设备忙 [ 144.173679] bcm2835-v4l2-0: 无法启用捕获端口 - 错误码 -1。再次禁用相机端口 [ 144.191116] ------------[ 此处截断 ]------------ [ 144.195868] 警告:CPU: 1 PID: 457 在 drivers/media/common/videobuf2/videobuf2-core.c:1552 vb2_start_streaming+0xf4/0x17c [videobuf2_common] [ 144.208963] 已加载模块:bcm2835_v4l2(C) videobuf2_vmalloc videobuf2_memops bcm2835_mmal_vchiq(C) videobuf2_v4l2 videobuf2_common videodev mc vc_sm_cma(C) [ 144.223678] CPU: 1 PID: 457 进程名: camera_source:s 内核状态: G WC 5.15.34-v7l #1 [ 144.232254] 硬件名称: BCM2711 [ 144.235706] 回溯信息: [ 144.238193] [<c0c559f4>] (dump_backtrace) 来自 [<c0c55c40>] (show_stack+0x20/0x24) [ 144.245900] r7:00000610 r6:00000000 r5:c104df3c r4:60070013 [ 144.251643] [<c0c55c20>] (show_stack) 来自 [<c0c5b1d8>] (dump_stack_lvl+0x70/0x94) [ 144.259339] [<c0c5b168>] (dump_stack_lvl) 来自 [<c0c5b214>] (dump_stack+0x18/0x1c) [ 144.267040] r7:00000610 r6:00000009 r5:bf071c34 r4:bf075da8 [ 144.272781] [<c0c5b1fc>] (dump_stack) 来自 [<c0222030>] (__warn+0xfc/0x158) [ 144.279862] [<c0221f34>] (__warn) 来自 [<c0c56380>] (warn_slowpath_fmt+0x8c/0xa8) [ 144.287473] r7:00000610 r6:bf075da8 r5:00000000 r4:c384c000 [ 144.293214] [<c0c562f8>] (warn_slowpath_fmt) 来自 [<bf071c34>] (vb2_start_streaming+0xf4/0x17c [videobuf2_common]) [ 144.303780] r9:bf01d144 r8:c181d3b0 r7:c384c000 r6:c181d660 r5:c181d560 r4:ffffffff [ 144.311637] [<bf071b40>] (vb2_start_streaming [videobuf2_common]) 来自 [<bf071d4c>] (vb2_core_streamon+0x90/0x180 [videobuf2_common]) [ 144.323905] r7:c384c000 r6:00000000 r5:c2ab9780 r4:c181d560 [ 144.329646] [<bf071cbc>] (vb2_core_streamon [videobuf2_common]) 来自 [<bf08a1d8>] (vb2_ioctl_streamon+0x58/0x90 [videobuf2_v4l2]) [ 144.341546] r5:c2ab9780 r4:00000001 [ 144.345173] [<bf08a180>] (vb2_ioctl_streamon [videobuf2_v4l2]) 来自 [<bf01d170>] (v4l_streamon+0x2c/0x30 [videodev]) [ 144.356036] r5:40045612 r4:bf08a180 [ 144.359663] [<bf01d144>] (v4l_streamon [videodev]) 来自 [<bf021930>] (__video_do_ioctl+0x248/0x47c [videodev]) [ 144.370096] r5:40045612 r4:c181d058 [ 144.373722] [<bf0216e8>] (__video_do_ioctl [videodev]) 来自 [<bf022efc>] (video_usercopy+0x2e8/0x66c [videodev]) [ 144.384325] r10:00000000 r9:c384de3c r8:c384c000 r7:00000000 r6:c2ab9781 r5:40045612 [ 144.392271] r4:40045612 [ 144.394839] [<bf022c14>] (video_usercopy [videodev]) 来自 [<bf0232a0>] (video_ioctl2+0x20/0x24 [videodev]) [ 144.404910] r10:0000001c r9:c2ab9780 r8:022cf550 r7:c384c000 r6:c2ab9781 r5:00000000 [ 144.412856] r4:bf023280 [ 144.415425] [<bf023280>] (video_ioctl2 [videodev]) 来自 [<bf01b144>] (v4l2_ioctl+0x4c/0x60 [videodev]) [ 144.425149] [<bf01b0f8>] (v4l2_ioctl [videodev]) 来自 [<c048138c>] (sys_ioctl+0x114/0xa94) [ 144.433693] r5:00000000 r4:40045612 [ 144.437320] [<c0481278>] (sys_ioctl) 来自 [<c0200060>] (ret_fast_syscall+0x0/0x1c) [ 144.445016] 异常栈(0xc384dfa8 到 0xc384dff0) [ 144.450148] dfa0: a91d01a8 00000000 0000001c 40045612 022cf550 a4c599e8 [ 144.458451] dfc0: a91d01a8 00000000 022cf548 00000036 022cf548 a91ab1a8 00000002 07f00010 [ 144.466752] dfe0: 00000036 a4c599d0 b60b8529 b6031ae6 [ 144.471881] r10:00000036 r9:c384c000 r8:c0200264 r7:00000036 r6:022cf548 r5:00000000 [ 144.479827] r4:a91d01a8 [ 144.482470] ---[ 结束追踪 b10cbe6f2ae07ec8 ]---
内容的提问来源于stack exchange,提问作者Esraa Abdelnaby
相关产品推荐
相关产品推荐

