CAMERA
规格
K1
MIPI_CSI
gc5035
4 Lane x1 or 2 Lane x2
K1B
MIPI_CSI
gc5035
4 Lane x1 or 2 Lane x2
K3
MIPI_CSI_RX0、MIPI_CSI_RX1
gc5035
4 Lane x2 or 2 Lane x4
K7 (< 2.0)
MIPI_CSI0、MIPI_CSI1、MIPI_CSI3
null
4 Lane x3
K7 (>= 2.0)
MIPI_CSI0、MIPI_CSI1、MIPI_CSI3
imx415
4 Lane x3
K7C
MIPI_CSI0、MIPI_CSI1、MIPI_CSI3
imx415
4 Lane x3
Android/Linux dts配置
RK3562
kernel-5.10/arch/arm64/boot/dts/rockchip/rk3562-kickpi-mipi-camera0.dtsi
kernel-5.10/arch/arm64/boot/dts/rockchip/rk3562-kickpi-mipi-camera1.dtsiRK3568
kernel-5.10/arch/arm64/boot/dts/rockchip/rk3568-kickpi-mipi-camera-gc5035.dtsiRK3576
添加摄像头配置,cam0 ~ cam3 对应原理图的 MIPI-CSI_0 ~ MIPI-CSI_3。
Android / Linux dtsi 文件路径
rk3576-kickpi-k7-cam0.dtsi 对应 MIPI-CSI_0
rk3576-kickpi-k7-cam1.dtsi 对应 MIPI-CSI_1
rk3576-kickpi-k7-cam3.dtsi 对应 MIPI-CSI_3
单摄像头配置
使用 MIPI-CSI_0 接口接入 imx415,仅单个摄像头。
多摄像头配置
使用 MIPI-CSI_0 、MIPI-CSI_1、MIPI-CSI_3 接口都接入 imx415,共三个摄像头。
Armbian dts 配置
RK3576
目前 Armbian ISP 存在问题,不建议使用
添加摄像头配置,cam0 ~ cam3 对应原理图的 MIPI-CSI_0 ~ MIPI-CSI_3。
Armbian dtsi 文件路径
rk3576-kickpi-k7-cam0.dtsi 对应 MIPI-CSI_0
rk3576-kickpi-k7-cam1.dtsi 对应 MIPI-CSI_1
rk3576-kickpi-k7-cam3.dtsi 对应 MIPI-CSI_3
多摄像头配置
使用 MIPI-CSI_0 、MIPI-CSI_1、MIPI-CSI_3 接口都接入 imx415,共三个摄像头。
v4l2-ctl 测试
安装工具
查看摄像头节点
示例:
通过 rkisp_mainpath 可知有两个摄像头,可操作对应的第一个设备/dev/video33 和 /dev/video42
查看摄像头信息
示例
查看摄像头帧率
示例
v4l2-ctl -d /dev/video33
v4l2-ctl:Video4Linux2 控制工具,用于配置和控制 V4L2 兼容的视频设备
-d /dev/video33:指定操作的视频设备为/dev/video33
--set-fmt-video=width=1920,height=1080,pixelformat='MJPG'配置视频输出格式:
width=1920,height=1080:设置视频分辨率为 1920x1080(1080P)
pixelformat='MJPG':设置像素格式为 MJPEG( Motion JPEG,一种压缩格式)
--stream-mmap=4
启用内存映射(mmap)方式捕获视频流
=4表示分配 4 个缓冲区用于流捕获(多缓冲区可以减少帧丢失)
--set-selection=target=crop,flags=0,top=0,left=0,width=1920,height=1080设置视频裁剪区域:
target=crop:指定操作对象为裁剪区域
flags=0:无特殊标志(默认)
top=0,left=0,width=1920,height=1080:设置裁剪区域从左上角 (0,0) 开始,大小为 1920x1080(即使用完整画面,不裁剪)
--stream-count=500指定捕获的视频帧数为 500 帧,捕获完成后自动停止
gstreamer 测试
安装工具
命令行摄像头捕获图片
命令行摄像头预览
由于 ISP 问题,Armbian系统目前摄像头预览异常。
autovideosink 方式
例如:
gst-launch-1.0 v4l2src device=/dev/video11 ! video/x-raw,format=NV12,width=800,height=600,framerate=30/1 ! videoconvert ! autovideosink
gst-launch-1.0 v4l2src device=/dev/video33 ! video/x-raw,format=NV12,width=800,height=600,framerate=30/1 ! videoconvert ! autovideosink
gst-launch-1.0 v4l2src device=/dev/video42 ! video/x-raw,format=NV12,width=1280,height=720,framerate=30/1 ! videoconvert ! autovideosink
gst-launch-1.0 v4l2src device=/dev/video51 ! video/x-raw,format=NV12,width=1600,height=960,framerate=30/1 ! videoconvert ! autovideosink
waylandsink 方式(gome wayland 架构桌面使用该方式进行预览)
例如:
gst-launch-1.0 v4l2src device=/dev/video33 ! video/x-raw,width=800,height=600,framerate=30/1 ! videoconvert ! waylandsink
gst-launch-1.0 v4l2src device=/dev/video42 ! video/x-raw,width=1280,height=720,framerate=30/1 ! videoconvert ! waylandsink
gst-launch-1.0 v4l2src device=/dev/video51 ! video/x-raw,width=1600,height=960,framerate=30/1 ! videoconvert ! waylandsink
示例:
1、先查看摄像头规格;查看摄像头、查看摄像头信息、查看摄像头帧率
2、指定摄像头头节点进行预览;
3、使用 gst-launch-1.0 工具 autovideosink 方式预览 /dev/video33 摄像头。
gst-launch-1.0GStreamer 的命令行工具,用于快速构建和运行 GStreamer 管道。
v4l2src device=/dev/video33
v4l2src:视频 4Linux2 源元件,用于从符合 V4L2 标准的视频设备(如摄像头)捕获数据
device=/dev/video33:指定要使用的视频设备文件,这里是/dev/video33(不同设备的摄像头编号可能不同)
video/x-raw,format=NV12,width=800,height=600,framerate=30/1这是一个Caps(功能描述),用于指定视频格式:
video/x-raw:表示原始未压缩视频
format=NV12:视频像素格式为 NV12(一种常见的 YUV 格式,适合硬件加速)
width=800,height=600:视频分辨率为 800x600
framerate=30/1:帧率为 30 帧 / 秒
videoconvert视频格式转换元件,用于将输入视频格式转换为后续元件支持的格式(这里主要是为了适配显示元件的需求)
autovideosink自动选择合适的视频输出元件,会根据系统环境自动选择最佳的视频显示方式(如 X11、Wayland 或直接渲染等)
Linux Camera
rkaiq 源码路径
编译 camera-engine-rkaiq
第一步,删除 BR2_ARCH_NEEDS_GCC_AT_LEAST_9
第二步,创建低版本的 GCC 和 GLIBC 编译
第三步,编译
第四步,将生成的 tar 放到主板根目录
第五步,在主板上解压并重启
Android APP
Camera2 APP 源码路径。
Android ISP 适配
参考 imx415 其他 Profiles 配置对应设备 m02 。更多详解文档参考章节。
Android 测试
以双路摄像头为例,前置+后置摄像头。
1、打开 Camera APP。

2、切换前置和后置摄像头,需要点击3个小点配置。

3、点击按钮,切换前置和后置摄像头。

文档参考
Rockchip 官方提供了 Camera 相关文档,包含在源码SDK中。
Android 源码文档路径
Linux 源码文档路径
Last updated