RV1126 添加gc2053摄像头驱动

前言

最近基于RV1126做人脸识别,选用了一款双目摄像头,RGB+IR,RGB Sensor为GC2093,IR Sensor为GC2053,可以读取两个sensor的图像,本节介绍下如何适配添加GC2053 sensor并且可以在windows上成功拉取视频流

平台背景

开发板:易百纳开发板
cpu: rv1126
sensor: gc2053 200w像素 2lanes
type:MIPI
kernel: 4.19.111
system:buildroot-2018.02

硬件连接

原理图下图所示:

管脚连接关系如下:

器件I2C总线及地址:

GC2053:I2C1—0x37(7bit address);

CSI:

GC2053--->csi2_dphy0(MIPI_CSI_RX_D0-1&MIPI_CSI_RX_CLK0);

CLK:

GC2053:CLK_OUT0(GPIO2_A3-------CAM_CLKOUT0);

GPIO:

GC2053 reset-gpios---GPIO1_D5;
GC2053 pwdn-gpios---GPIO1_D4;

RV1126的链路举例

结合RK的VICAP和ISP的链路,来看看下面RK356X的一种摄像头链路。注:rv1126的VICAP和ISP是独立的两个图像处理IP

链接关系:

sensor->csi2 dphy0-> mipi csi2 -> cif_mipi_lvds -> rkcif_mipi_lvds -> rkisp_vir0

添加GC2053的DTS

&i2c1 {
        status = "okay";
        clock-frequency = <400000>;
        
        gc2053: gc2053@37 {
                        compatible = "galaxycore,gc2053";
                        reg = <0x37>;

                        clocks = <&cru CLK_MIPICSI_OUT>;
                        clock-names = "xvclk";

                        power-domains = <&power RV1126_PD_VI>;
                        pinctrl-names = "rockchip,camera_default";
                        pinctrl-0 = <&mipicsi_clk0>;
        //              power-gpios = <&gpio3 RK_PA6 GPIO_ACTIVE_HIGH>;
        //              pwdn-gpios = <&gpio1 RK_PD4 GPIO_ACTIVE_LOW>;
        //              reset-gpios = <&gpio1 RK_PD5 GPIO_ACTIVE_HIGH>;

                        rockchip,camera-module-index = <0>;
                        rockchip,camera-module-facing = "front";//前置摄像头
                        rockchip,camera-module-name = "YT-RV1109-2-V1";//IQ文件
                        rockchip,camera-module-lens-name = "40IR-2MP-F20";//IQ文件
                        port {
                                ucam_out0: endpoint {
                                        remote-endpoint = <&mipi_in_ucam0>;
                                        data-lanes = <1 2>;
                                };
                        };
        };
};

&csi_dphy0 {
        status = "okay";

        ports {
                #address-cells = <1>;
                #size-cells = <0>;
                port@0 {
                        reg = <0>;
                        #address-cells = <1>;
                        #size-cells = <0>;

                        mipi_in_ucam0: endpoint@1 {
                                reg = <1>;
                                remote-endpoint = <&ucam_out0>;
                                data-lanes = <1 2>;
                        };
                };
                port@1 {
                        reg = <1>;
                        #address-cells = <1>;
                        #size-cells = <0>;

                        csidphy0_out: endpoint@0 {
                                reg = <0>;
                                remote-endpoint = <&mipi_csi2_input>;
                                // remote-endpoint = <&isp_in>;
                                data-lanes = <1 2>;
                        };
                };
        };
};

&rkcif_mipi_lvds {
        status = "okay";

        port {
                /* MIPI CSI-2 endpoint */
                cif_mipi_in: endpoint {
                        remote-endpoint = <&mipi_csi2_output>;
                        data-lanes = <1 2>;
                };
        };
};

&rkcif_mipi_lvds_sditf {
        status = "okay";

        port {
                /* MIPI CSI-2 endpoint */
                mipi_lvds_sditf: endpoint {
                        remote-endpoint = <&isp_in>;
                        data-lanes = <1 2>;
                };
        };
};

&rkisp_vir0 {
        status = "okay";

        ports {
                port@0 {
                        reg = <0>;
                        #address-cells = <1>;
                        #size-cells = <0>;

                        isp_in: endpoint@0 {
                                reg = <0>;
                                remote-endpoint = <&mipi_lvds_sditf>;
                                // remote-endpoint = <&csidphy0_out>;
                        };
                };
        };
};


VLC进行拉取视频流

VLC 是一款自由、开源的跨平台多媒体播放器及框架,可播放大多数多媒体文件,有需要的同学可以在公众号后台进行回复"vlc"进行获取。

识别出gc2053 sensor

保证windows和设备IP能ping通

保证windows的IP和板端IP要可以Ping通。

可以都是在同一个路由器下动态分配IP,也可以是都是静态分配的IP

设备端执行视频流可执行文件rkmedia_vi_venc_rtsp_test

./app/camera/2093_2053/rkmedia_vi_venc_rtsp_test -a /o
em/etc/iqfiles/ 

VLC软件进行拉流

媒体->打开网络串流

设置好网络URL点击播放

(rtsp://[板端 ip]/live0/main_stream)

VLC效果图显示

gc2053黑白效果图

注意:如果拉流失败要看下设备端的IP和WINDOWS ip是否在同一网段,其次要看网络URL是否写对

结语

我们学会了如何用VLC进行拉取视频流,下期我们来做下拉取GC2093图像的视频流。vlc软件可以在公众号后台进行回复"vlc"进行获取。


作者潘小帅, 是一名Linux底层爱好者,平时写写技术原创文章,徒步,旅游,看电影的爱好,喜欢我的文章可以点赞收藏+关注,感谢你的支持,微信公众号【Linux随笔录】

在这里插入图片描述

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值