【K230/K230D 新技能点亮】K230 Linux 多路摄像能力解锁,多视觉项目开发更简单

Viewed 2

问题描述


K230 Linux SDK重磅开放三路MIPI摄像头并行能力,配套专用v4l2-drm-three-camera三路同步采集Demo,完整操作文档现已更新至官网。依托VVCAM MCM多通道架构,三路独立ISP并行出图,双目避障、全景监控、多工位工业检测等场景开箱调试。K230硬件原生搭载CSI0/CSI1/CSI2三路独立MIPI控制器,支持逻辑slot与物理CSI自由映射,01Studio、LCKFB主流板型预置三路硬件映射配置,仅需修改设备树即可开启多路采集。

image.png

一、硬件底层多路架构说明

芯片CSI硬件资源

物理CSI ID 寄存器基地址 中断号
CSI0 0 0x90009800 115
CSI1 1 0x9000a000 118
CSI2 2 0x9000a800 121

逻辑slot0/slot1/slot2可自由绑定任意物理CSI,互不抢占硬件资源。

MCM多路输出规则

系统默认加载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")"; 
done
media-ctl -d /dev/media0 -p

二、设备树配置 单/双/三路摄像头

核心配置规则

  1. slot必须从0连续启用,禁止跳开(仅开slot0+slot2无法识别第二、三路);
  2. 启用mipi.N同步开启对应I2C总线、复位GPIO;
  3. &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-dirclean
make linux-rebuild
make

编译完成烧录镜像即可生效。

三、官方v4l2-drm-three-camera Demo完整使用教程

Demo基础说明

v4l2-drm-three-camera为SDK内置三路同步采集渲染专用程序,源码路径buildroot-overlay/package/vvcam,编译后自动安装至开发板/usr/bin;支持三路画面分屏显示、独立分辨率、独立图层、画面旋转/裁剪。

前置校验命令

运行前确认ISP服务、VVCAM模块正常,枚举全部V4L2设备:

v4l2-ctl --list-devices
cat /proc/vsi/isp_subdev0
ls /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 N 指定该路/dev/videoN设备
-w/-h 单路画面显示宽高
-x/-y 画面在屏幕左上角起始坐标
-l 1/2/3 选用DRM硬件VIDEO图层1/2/3
--rotation 0/1/2/3 画面0°/90°/180°/270°旋转
-n 缓冲区数量
-f 像素格式,支持NV12/NV16
-s 仅采集图像,不输出显示

运行交互按键

d:保存三路当前帧图片至当前目录
q:退出Demo程序 终端实时打印三路采集帧率、整体渲染帧率。

配套其他V4L2 Demo补充

v4l2-drm:单路基础预览,支持镜像、裁剪、分辨率切换;
v4l2-drm-scene:单路ISP场景动态切换(昼夜模式切换)。

四、Sensor替换适配步骤

  1. 修改对应slot devN-sensor-name为目标驱动名(OV13850/IMX335等);
  2. 匹配驱动内modes[]数组下标,修改devN-sensor-mode;
  3. 同步调整硬件I2C总线、Sensor复位GPIO、MIPI时序;
  4. Buildroot开启对应Sensor驱动,导入配套ISP标定文件。

五、多路调试避坑指南

  1. 无多路/dev/vvcam-mipi.*节点:检查mipi.N是否连续使能、对应I2C总线开启;
  2. 单路黑屏:核对复位GPIO、I2C地址、mode下标是否匹配Sensor;
  3. 画面乱序:必须通过entity名称匹配通路,不依赖固定/dev/videoX;
  4. 多路高负载场景:保证稳定供电、合理散热,按需调低采集分辨率。

六、官方完整开发文档直达

三路摄像头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

0 Answers