问题描述
在烧录官方最新 Linux 固件后,尝试使用板载 GC2093 摄像头时失败。具体现象:
摄像头设备节点存在(/dev/video1 显示为 vvcam-video.0.0),ffmpeg -list_formats all 能列出支持的格式(NV12, YUYV, BGR24 等),说明 I²C 通信正常,驱动已加载。
但执行 ffmpeg -f v4l2 -video_size 640x480 -i /dev/video1 -vframes 1 test.jpg 时,内核报错:
text
vb2_start_streaming+0xc0/0x120
vb2_core_streamon+0x9a/0x150
VIDIOC_STREAMON: Invalid argument
同时内核日志中出现 list_add corruption 警告和 WARNING: CPU: 0 PID: xxx at drivers/media/common/videobuf2/videobuf2-core.c:1613。
尝试降低分辨率至 320x240、160x120,错误相同。
检查 CMA 内存(cat /proc/meminfo | grep Cma)显示 CmaFree 充足(约 10+ MB),应该不是内存不足。
更换 /dev/video2、/dev/video3 测试,同样报错。
系统日志显示摄像头驱动模块均已加载(vvcam_isp、vvcam_mipi、vvcam_video 等),无硬件探测错误。
已尝试的解决步骤:
重启开发板多次。
使用不同分辨率和像素格式尝试。
用 v4l2-ctl --list-formats-ext 确认设备支持格式。
手动释放缓存(echo 3 > /proc/sys/vm/drop_caches)。
刷写其他 Linux 固件版本(包括较旧版本)问题依旧。
复现步骤
测试摄像头
硬件板卡
K230D Zero
软件版本
BPI-CanMV-K230D-Zero_linux_v0.6.9_nncase_v2.10.0.img
其他信息
[root@canaan ~ ]#ffmpeg -f v4l2 -list_formats all -i /dev/video1
ffmpeg version 4.4.4 Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 14.1.1 (Xuantie-900 linux-6.6.0 glibc gcc Toolchain V3.0.2 B-20250410) 20240710
configuration: --enable-cross-compile --cross-prefix=/builds/maix_sw/k230_linux_sdk/output/BPI-CanMV-K230D-Zero_defconfig/host/bin/riscv64-unknown-linux-gnu- --sysroot=/builds/maix_sw/k230_linux_sdk/output/BPI-CanMV-K230D-Zero_defconfig/host/riscv64-buildroot-linux-gnu/sysroot --host-cc=/usr/bin/gcc --arch=riscv64 --target-os=linux --disable-stripping --pkg-config=/builds/maix_sw/k230_linux_sdk/output/BPI-CanMV-K230D-Zero_defconfig/host/bin/pkg-config --disable-static --enable-shared --prefix=/usr --enable-avfilter --disable-version3 --enable-logging --enable-optimizations --disable-extra-warnings --enable-avdevice --enable-avcodec --enable-avformat --enable-network --disable-gray --enable-swscale-alpha --disable-small --enable-dct --enable-fft --enable-mdct --enable-rdft --disable-crystalhd --disable-dxva2 --enable-runtime-cpudetect --disable-hardcoded-tables --disable-mipsdsp --disable-mipsdspr2 --disable-msa --enable-hwaccels --disable-cuda --disable-cuvid --disable-nvenc --disable-avisynth --disable-frei0r --disable-libopencore-amrnb --disable-libopencore-amrwb --disable-libdc1394 --disable-libgsm --disable-libilbc --disable-libvo-amrwbenc --disable-symver --disable-doc --disable-gpl --disable-nonfree --enable-ffmpeg --disable-ffplay --disable-libv4l2 --disable-avresample --disable-ffprobe --disable-libxcb --disable-postproc -[ 111.935768] vvcam-isp 90000000.isp.0: vvcam_isp_open:99
-enable-swscale --enable-indevs --enable-alsa --enable-outdevs --enable-pthreads --enable-zlib --enable-bzlib --disable-libfdk-aac --disable-libcdio --disable-gnutls --enable-o[ 111.956222] vvcam-isp 90000000.isp.0: reset
penssl --enable-[ 111.961929] vvcam-isp 90000000.isp.0: reset
libdrm --disable-libopenh264 --disable-vaapi --disable-vdpau --disable-mmal --disable-omx --disable-omx-rpi --disable-libopencv --enable-libopus --disable-libvpx --disable-libass --disable-libbluray --disable-libmfx --disable-librtmp --disable-libmp3lame --disable-libmodplug --disable-libspeex --disable-libtheora --disable-iconv --enable-libfreetype --disable-fontconfig --disable-libopenjpeg --disable-libx264 --disable-libx265 --disable-libdav1d --disable-x86asm --disable-mmx --disable-sse --disable-sse2 --disable-sse3 --disable-ssse3 --disable-sse4 --disable-sse42 --disable-avx --disable-avx2 --disable-armv6 --disab[ 112.020554] vvcam-isp 90000000.isp.0: vvcam_isp_release:125
le-armv6t2 --disable-vfp --disable-neon --disable-altivec --extra-libs=-latomic --enable-pic --cpu=rv64imafdcv_zicsr_zifencei
libavutil 56. 70.100 / 56. 70.100
libavcodec 58.134.100 / 58.134.100
libavformat 58. 76.100 / 58. 76.100
libavdevice 58. 13.100 / 58. 13.100
libavfilter 7.110.100 / 7.110.100
libswscale 5. 9.100 / 5. 9.100
libswresample 3. 9.100 / 3. 9.100
[video4linux2,v4l2 @ 0x2acdeda4f0] Raw : Unsupported : Y/UV 4:2:2 :
[video4linux2,v4l2 @ 0x2acdeda4f0] Raw : nv12 : Y/UV 4:2:0 :
[video4linux2,v4l2 @ 0x2acdeda4f0] Raw : yuyv422 : YUYV 4:2:2 :
[video4linux2,v4l2 @ 0x2acdeda4f0] Raw : bgr24 : 24-bit BGR 8-8-8 :
[video4linux2,v4l2 @ 0x2acdeda4f0] Raw : Unsupported : 24-bit BGR planer :
[video4linux2,v4l2 @ 0x2acdeda4f0] Raw : Unsupported : 10-bit Y/UV 4:2:0 :
/dev/video1: Immediate exit requested
[root@canaan ~ ]#