
物理CSI | ID | 寄存器基地址 | 中断号 |
CSI0 | 0 | 0x90009800 | 115 |
CSI1 | 1 | 0x9000a000 | 118 |
CSI2 | 2 | 0x9000a800 | 121 |
逻辑slot0/slot1/slot2可自由绑定任意物理CSI,互不抢占硬件资源。
系统默认加载vvcam_videomcm_mask=1,每路摄像头分配MP主输出、SP1/SP2辅输出三组V4L2节点:
单路:vvcam-video.0.0 ~ 0.2
双路:vvcam-video.0.0 ~ 0.5
三路:vvcam-video.0.0 ~ 0.8
⚠️ 关键提醒:/dev/videoX由内核动态分配,业务代码禁止硬编码设备号,必须通过vvcam-video.0.N entity名称匹配通路。 查看摄像头通路命令:
for d in /sys/class/video4linux/video*;do echo "$(basename "$d"): $(cat "$d/name")";donemedia-ctl -d /dev/media0 -p
slot必须从0连续启用,禁止跳开(仅开slot0+slot2无法识别第二、三路);
启用mipi.N同步开启对应I2C总线、复位GPIO;
&v4l2isp完整配置devN-sensor-name/mode/i2c-bus;
1)单路默认配置
&i2c4 { status = "okay"; };&mipi0 { status = "okay"; };&mipi1 { status = "disabled"; };&mipi2 { status = "disabled"; };&v4l2isp {dev0-sensor-name = "gc2093";dev0-sensor-mode = <0>;dev0-sensor-i2c-bus = <4>;};
2)双路双目配置
&i2c0 { status = "okay"; };&i2c4 { status = "okay"; };&mipi0 { status = "okay"; };&mipi1 { status = "okay"; };&mipi2 { status = "disabled"; };&v4l2isp {dev0-sensor-name = "gc2093";dev0-sensor-mode = <0>;dev0-sensor-i2c-bus = <4>;dev1-sensor-name = "gc2093";dev1-sensor-mode = <0>;dev1-sensor-i2c-bus = <0>;};
3)三路三目完整配置
&i2c0 { status = "okay"; };&i2c1 { status = "okay"; };&i2c4 { status = "okay"; };&mipi0 { status = "okay"; };&mipi1 { status = "okay"; };&mipi2 { status = "okay"; };&v4l2isp {dev0-sensor-name = "gc2093";dev0-sensor-mode = <0>;dev0-sensor-i2c-bus = <4>;dev1-sensor-name = "gc2093";dev1-sensor-mode = <0>;dev1-sensor-i2c-bus = <0>;dev2-sensor-name = "gc2093";dev2-sensor-mode = <0>;dev2-sensor-i2c-bus = <1>;};
make linux-dircleanmake linux-rebuildmake
编译完成烧录镜像即可生效。
v4l2-drm-three-camera为SDK内置三路同步采集渲染专用程序,源码路径buildroot-overlay/package/vvcam,编译后自动安装至开发板/usr/bin;支持三路画面分屏显示、独立分辨率、独立图层、画面旋转/裁剪。
运行前确认ISP服务、VVCAM模块正常,枚举全部V4L2设备:
v4l2-ctl --list-devicescat /proc/vsi/isp_subdev0ls /dev/vvcam-mipi.*
优先选用每路MP输出设备:vvcam-video.0.0 / vvcam-video.0.3 / vvcam-video.0.6。
v4l2-drm-three-camera \-d1 -w 240 -h 240 -x 0 -y 0 -l 1 --rotation 0 \-d4 -w 240 -h 400 -x 240 -y 0 -l 2 --rotation 0 \-d7 -w 480 -h 800 -x 480 -y 0 -l 3 --rotation 0
单路参数组以-d开头,每路独立配置,禁止三路共用同一个DRM图层:
参数 | 作用 |
-d N | 指定该路/dev/videoN设备 |
-w/-h | 单路画面显示宽高 |
-x/-y | 画面在屏幕左上角起始坐标 |
-l 1/2/3 | 选用DRM硬件VIDEO图层1/2/3 |
--rotation0/1/2/3 | 画面0°/90°/180°/270°旋转 |
-n | 缓冲区数量 |
-f | 像素格式,支持NV12/NV16 |
-s | 仅采集图像,不输出显示 |
d:保存三路当前帧图片至当前目录
q:退出Demo程序 终端实时打印三路采集帧率、整体渲染帧率。
v4l2-drm:单路基础预览,支持镜像、裁剪、分辨率切换;
v4l2-drm-scene:单路ISP场景动态切换(昼夜模式切换)。
修改对应slot devN-sensor-name为目标驱动名(OV13850/IMX335等);
匹配驱动内modes[]数组下标,修改devN-sensor-mode;
同步调整硬件I2C总线、Sensor复位GPIO、MIPI时序;
Buildroot开启对应Sensor驱动,导入配套ISP标定文件。
无多路/dev/vvcam-mipi.*节点:检查mipi.N是否连续使能、对应I2C总线开启;
单路黑屏:核对复位GPIO、I2C地址、mode下标是否匹配Sensor;
画面乱序:必须通过entity名称匹配通路,不依赖固定/dev/videoX;
多路高负载场景:保证稳定供电、合理散热,按需调低采集分辨率。
三路摄像头V4L2 Demo完整手册:
https://www.kendryte.com/k230_linux/zh/main/app_develop_guide/user_develop/media.html
多路摄像头设备树配置指南:
https://www.kendryte.com/k230_linux/zh/main/advanced_adaptation_guide/sensor_switch_doc.html
