Rockchip | Rockchip 多媒体技术--Camera

Posted Neutionwei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rockchip | Rockchip 多媒体技术--Camera相关的知识,希望对你有一定的参考价值。

Rockchip-isp1


概述

以下文档提供了rockchip-isp1驱动程序和rockchip SoC上图像信号处理模块的基本信息,并附有示例和详细信息。

硬件

更多详细信息可在TRM章节“Image Signal Processing”、“MIPI D-PHY”中找到,但它们仅在NDA下可用。

ISP 详细

ISP 包括:

  • MIPI serial camera interface
  • Image Signal Processing
  • Many Image Enhancement Blocks
  • Crop
  • Resize

方框图

完整的方框图无法从datasheet粘贴到此处,下图为抽象版本:

MIPI 详细

rockchip SoC中有三个D-PHY实例,其连接如下图所示:

软件

驱动

rockchip-isp1是rockchip SoC上基于V4L2的图像信号处理模块驱动程序。与早期的驱动程序rk-isp10相比,它使用媒体控制器框架,这与普通的v4L2不同。虽然普通v4L2将设备视为将输入数据连接到主机存储器的基于DMA的普通图像拖放器,但媒体控制器考虑到一个典型视频设备可能由多个子设备组成。

媒体控制器基础知识

请仔细阅读下面的链接,如果你以前没有使用过它。

https://linuxtv.org/downloads/v4l-dvb-apis/uapi/mediactl/media-controller-intro.html

方框图

File 视图

V4l2 视图

NameTypeDescription
rkisp1_mainpathv4l2_vdev, capture

格式:YUV, RAW Bayer;最大分辨率:4416*3312;支持:Crop

rkisp1_selfpathv4l2_vdev, capture

格式: YUV, RGB;最大分辨率:920*1080;支持:Crop

rkisp1-isp-subdevv4l2_subdev

内部isp模块;支持:source/sink pad crop。

sink pad的格式应等于sensor输入格式,大小应等于/小于sensor输入大小。

如果输出格式为raw bayer,则source pad的格式应等于vdev输出格式,否则应为YUYV2X8。大小应等于/小于sink pad。

rockchip-sy-mipi-dphyv4l2_subdev

MIPI-DPHY 配置

rkisp1-statisticsv4l2_vdev, capture提供图像颜色统计信息
rkisp1-input-paramsv4l2_vdev, output

接收AWB、BLC的参数。。。。。。图像增强块

Sensor 驱动要求

sensor驱动应执行下表中的控制。

ControlsDescriptionR/WNeeded by
V4L2_CID_VBLANK垂直消隐。每帧之后的空闲时间,在此期间不产生图像数据。垂直消隐的单位是直线。每一行都有图像宽度的长度加上在同一子设备中由V4L2_CID_PIXEL_RATE速率控制定义的像素速率下的水平消隐。RAe
V4L2_CID_HBLANK水平消隐。每行图像数据之后的空闲时间,在此期间不产生图像数据。水平消隐的单位是像素。RAe
V4L2_CID_EXPOSURE确定相机sensor的曝光时间。曝光时间受帧间隔的限制。驱动会将这些值解释为100µs单位,其中值1代表1/10000秒,10000代表1秒,100000代表10秒。R/WAe
V4L2_CID_ANALOGUE_GAIN模拟增益是影响像素矩阵中所有颜色分量的增益。增益操作在A/D转换之前在模拟域中执行。R/WAe
V4L2_CID_DIGITAL_GAIN数字增益是所有颜色分量乘以的值。通常,应用的数字增益是控制值除以例如0x100,这意味着为了不获得数字增益,控制值需要为0x100。无增益配置通常也是默认配置。R/WAe
V4L2_CID_PIXEL_RATE子设备源板中的像素速率。此控制为只读,其单位为像素/秒。RAe
V4L2_CID_LINK_FREQ数据总线频率。数据总线频率与媒体总线像素代码、总线类型(每个采样的时钟周期)一起定义像素阵列中的像素速率(V4L2_CID_PIXEL_RATE)(如果设备不是图像sensor,则可能在其他地方)。帧速率可以通过像素时钟、图像宽度和高度以及水平和垂直消隐来计算。虽然像素速率控制可以在包含像素阵列的子设备之外的其他地方定义,但无法从该信息获得帧速率。这是因为只有在像素阵列上,才能假定垂直和水平消隐信息是准确的:像素阵列中不允许其他消隐。帧速率的选择通过选择所需的水平和垂直消隐来执行。这种控制的单位是赫兹。Rmipi-dphy

设备树绑定

https://github.com/torvalds/linux/tree/master/Documentation/devicetree/bindings/media/rockchip-isp1.txt

https://github.com/torvalds/linux/tree/master/Documentation/devicetree/bindings/media/rockchip-mipi-dphy.txt

Linux

用户应用

v4l-utils工具和应用程序:

v4l-utils工具是由Linux维护的V4L2开发工具包。它提供了一套用于配置V4L2子设备属性的V4L2和媒体框架相关工具,测试V4L2设备,并提供开发库,如libv4l2等等。 

本章主要介绍v4l utils中的两个命令行工具:media-ctl和v4l2-ctl

 media-ctl,用于查看和配置拓扑

 v4l2-ctl,用于配置v4l2控件、捕获帧、设置cif、isp和sensor

参数:

v4l-utils的不同版本的格式代码将不同,尤其是mbus-fmt部分,本文档中使用的版本是集成在Linux SDK中的v4l-utils-1.14.1。

android

https://source.android.com/devices/camera/camera3

二次开发

该驱动程序目前可以在ASUS Tinker Board和Firefly-RK3288-Reload+Rockchip Debian/Yocto SDK上运行。

源码

内核

  1. 4.15 + FORMLIST Patches
  2. Rockchip 4.4 BSP

Sensor驱动

  1. IMX219
  2. OV5647
  3. TC35874X

设备树

  1. Tinker Board
  2. Firefly-rk3288-Reload

测试命令

cat /sys/class/video4linux/video*/name
# get self_path videox and main_path videox+1
gst-launch-1.0 rkcamsrc device=/dev/videox+1 io-mode=4 ! videoconvert ! video/x-raw,format=NV12,width=640,height=480 ! kmssink

其他

拓扑

Media device information
------------------------
driver          rkisp1
model           rkisp1
serial          
bus info        
hw revision     0x0
driver version  0.0.0

Device topology
- entity 1: rkisp1-isp-subdev (4 pads, 5 links)
            type V4L2 subdev subtype Unknown flags 0
            device node name /dev/v4l-subdev0
        pad0: Sink
                [fmt:SBGGR10_1X10/800x600 field:none
                 crop.bounds:(0,0)/800x600
                 crop:(0,0)/800x600]
                <- "rockchip-sy-mipi-dphy":1 [ENABLED]
        pad1: Sink
                <- "rkisp1-input-params":0 [ENABLED]
        pad2: Source
                [fmt:SBGGR10_1X10/800x600 field:none
                 crop.bounds:(0,0)/800x600
                 crop:(0,0)/800x600]
                -> "rkisp1_selfpath":0 [ENABLED]
                -> "rkisp1_mainpath":0 [ENABLED]
        pad3: Source
                -> "rkisp1-statistics":0 [ENABLED]

- entity 2: rkisp1_selfpath (1 pad, 1 link)
            type Node subtype V4L flags 0
            device node name /dev/video0
        pad0: Sink
                <- "rkisp1-isp-subdev":2 [ENABLED]

- entity 3: rkisp1_mainpath (1 pad, 1 link)
            type Node subtype V4L flags 0
            device node name /dev/video1
        pad0: Sink
                <- "rkisp1-isp-subdev":2 [ENABLED]

- entity 4: rkisp1-statistics (1 pad, 1 link)
            type Node subtype V4L flags 0
            device node name /dev/video2
        pad0: Sink
                <- "rkisp1-isp-subdev":3 [ENABLED]

- entity 5: rkisp1-input-params (1 pad, 1 link)
            type Node subtype V4L flags 0
            device node name /dev/video3
        pad0: Source
                -> "rkisp1-isp-subdev":1 [ENABLED]

- entity 6: rockchip-sy-mipi-dphy (2 pads, 2 links)
            type V4L2 subdev subtype Unknown flags 0
            device node name /dev/v4l-subdev1
        pad0: Sink
                [fmt:SRGGB10_1X10/3280x2464 field:none]
                <- "imx219 2-0010":0 [ENABLED]
        pad1: Source
                [fmt:SRGGB10_1X10/3280x2464 field:none]
                -> "rkisp1-isp-subdev":0 [ENABLED]

- entity 7: imx219 2-0010 (1 pad, 1 link)
            type V4L2 subdev subtype Sensor flags 0
            device node name /dev/v4l-subdev2
        pad0: Source
                [fmt:SRGGB10_1X10/3280x2464 field:none]
                -> "rockchip-sy-mipi-dphy":0 [ENABLED]

以上是关于Rockchip | Rockchip 多媒体技术--Camera的主要内容,如果未能解决你的问题,请参考以下文章

Rockchip | Rockchip Graphics与Display

瑞芯微的Rockchip的Rk3399的优势多吗?

Rockchip | Rockchip平台SD卡启动idbloader.img打包

Rockchip | Rockchip原始固件与RK固件格式

Rockchip | Rockchip U-Boot命令判断存储器是否有RK固件

RockChip主板系统签名说明