【全志V821_FoxPi】6-3 GC2083 MIPI摄像头适配

【全志V821_FoxPi】6-3 GC2083 MIPI摄像头适配

  • 一、背景
  • [二、GC2083 MIPI摄像头介绍](#二、GC2083 MIPI摄像头介绍)
    • [2-1 概述](#2-1 概述)
    • [2-2 主要技术参数](#2-2 主要技术参数)
    • [2-3 模组接口图](#2-3 模组接口图)
  • 三、SDK配置
  • 四、测试
    • [4-1 启动信息](#4-1 启动信息)
    • [4-2 iic节点](#4-2 iic节点)
    • [4-3 rtsp推流](#4-3 rtsp推流)
    • [4-3 rtsp拉流](#4-3 rtsp拉流)
      • [4-3-1 ch1](#4-3-1 ch1)
      • [4-3-1 ch0](#4-3-1 ch0)

一、背景

全志V821芯片,主打的就是一个IPC,现在我们将SDK支持的GC2083接上去,测试一下

参考 :MPP 视频类功能

二、GC2083 MIPI摄像头介绍

2-1 概述

GC2083是一款高性能的MIPI接口摄像头模组,通常用于嵌入式系统和移动设备中。该模组支持高分辨率图像采集,具备低功耗特性,适合对图像质量和能效有较高要求的应用场景。

2-2 主要技术参数

传感器类型:CMOS图像传感器

分辨率:支持1920x1080(1080P)@2M @200万像素

接口类型:MIPI CSI-2

像素尺寸:典型值为1.4μm x 1.4μm

帧率:30fps@1080p

输出格式:支持RAW RGB、YUV等格式

工作电压:3.3V

数字电压(DVDD):1.2V

模拟电压(AVDD):2.8V

IO电压(IIC):1.8V

2-3 模组接口图

三、SDK配置

source build/envsetup.shlunch 之后可以使用 quick_configone_gc2083_sensor 来启用摄像头GC2083,也可以参考以下设备树配置

c 复制代码
&vind0 {
	csi_top = <200000000>;
	status = "okay";

	csi0: csi@45820000 {
		pinctrl-names = "csi_sm-default","csi_sm-sleep";
		pinctrl-0 = <>;
		pinctrl-1 = <>;
	};

	csi1: csi@45821000 {
		pinctrl-names = "default","sleep";
		pinctrl-0 = <&ncsi_bt656_pins_a>;
		pinctrl-1 = <&ncsi_bt656_pins_b>;
		status = "disabled";
	};

	tdm0: tdm@45908000 {
		work_mode = <0x0>;
	};

	isp00:isp@45900000 {
		work_mode = <0x0>;
		ldci_select = <0x1>;
	};

	isp01:isp@458ffffc {
		status = "disabled";
		ldci_select = <0x1>;
	};

	isp10:isp@4 {
		status = "disabled";
	};

	scaler00:scaler@45910000 {
		work_mode = <0x0>;
		status = "okay";
	};

	scaler01:scaler@4590fffc {
		work_mode = <0xff>;
		status = "disabled";
	};

	scaler10:scaler@45910400 {
		work_mode = <0x0>;
		status = "okay";
	};

	scaler11:scaler@459103fc {
		work_mode = <0xff>;
		status = "disabled";
	};

	actuator0: actuator@2108180 {
		device_type = "actuator0";
		actuator0_slave = <0x18>;
		actuator0_af_pwdn = <>;
		actuator0_afvdd = "afvcc-csi";
		actuator0_afvdd_vol = <2800000>;
		status = "disabled";
		actuator0_name;
	};

	flash0: flash@2108190 {
		device_type = "flash0";
		flash0_type = <2>;
		flash0_en = <>;
		flash0_mode = <>;
		flash0_flvdd = "";
		flash0_flvdd_vol = <>;
		device_id = <0>;
		status = "disabled";
	};

	sensor0: sensor@5812000 {
		device_type = "sensor0";
		sensor0_mname = "gc2083_mipi";
		sensor0_twi_cci_id = <0>;
		sensor0_twi_addr = <0x6e>;
		sensor0_mclk_id = <0>;
		sensor0_pos = "rear";
		sensor0_isp_used = <1>;
		sensor0_fmt = <1>;
		sensor0_stby_mode = <0>;
		sensor0_vflip = <0>;
		sensor0_hflip = <0>;
		sensor0_iovdd-supply = <>;
		sensor0_iovdd_vol = <>;
		sensor0_avdd-supply = <>;
		sensor0_avdd_vol = <>;
		sensor0_dvdd-supply = <>;
		sensor0_dvdd_vol = <>;
		sensor0_power_en = <>;
		sensor0_reset = <&pio PA 2 GPIO_ACTIVE_LOW>;
		sensor0_pwdn = <>;
		status = "okay";
		act_handle = <>;
	};

	sensor1: sensor@5812010 {
		device_type = "sensor1";
		sensor1_mname = "gc1084_mipi_2";
		sensor1_twi_cci_id = <0>;
		sensor1_twi_addr = <0x7e>;
		sensor1_mclk_id = <1>;
		sensor1_pos = "front";
		sensor1_isp_used = <1>;
		sensor1_fmt = <1>;
		sensor1_stby_mode = <0>;
		sensor1_vflip = <0>;
		sensor1_hflip = <0>;
		sensor1_iovdd-supply = <>;
		sensor1_iovdd_vol = <>;
		sensor1_avdd-supply = <>;
		sensor1_avdd_vol = <>;
		sensor1_dvdd-supply = <>;
		sensor1_dvdd_vol = <>;
		sensor1_power_en = <>;
		sensor1_reset = <&pio PD 13 GPIO_ACTIVE_LOW>;
		status = "disabled";
	};

	sensor_list0:sensor_list@200b820 {
		sensor00_mname = "gc5035_mipi";
		sensor00_twi_addr = <0x6c>;
		sensor00_type = <1>;
		sensor00_hflip = <0>;
		sensor00_vflip = <0>;
		sensor00_act_used = <1>;
		sensor00_act_name = "dw9714_act";
		sensor00_act_twi_addr = <0x18>;
		sensor01_mname = "ov5675_mipi";
		sensor01_twi_addr = <0x6c>;
		sensor01_type = <1>;
		sensor01_hflip = <0>;
		sensor01_vflip = <0>;
		sensor01_act_used = <1>;
		sensor01_act_name = "dw9714_act";
		sensor01_act_twi_addr = <0x18>;
		sensor02_mname = "sp5409_mipi";
		sensor02_twi_addr = <0x78>;
		sensor02_type = <1>;
		sensor02_hflip = <0>;
		sensor02_vflip = <0>;
		sensor02_act_used = <1>;
		sensor02_act_name = "dw9714_act";
		sensor02_act_twi_addr = <0x18>;
		status = "disabled";
	};

	sensor_list1:sensor_list@200b830 {
		sensor10_mname = "gc02m2_mipi";
		sensor10_twi_addr = <0x20>;
		sensor10_type = <1>;
		sensor10_hflip = <0>;
		sensor10_vflip = <0>;
		sensor10_act_used = <0>;
		sensor10_act_name = "";
		sensor10_act_twi_addr = <>;
		sensor11_mname = "ov02a10_mipi";
		sensor11_twi_addr = <0x7a>;
		sensor11_type = <1>;
		sensor11_hflip = <1>;
		sensor11_vflip = <0>;
		sensor11_act_used = <0>;
		sensor11_act_name = "";
		sensor11_act_twi_addr = <>;
		sensor12_mname = "gc030a_mipi";
		sensor12_twi_addr = <0x42>;
		sensor12_type = <1>;
		sensor12_hflip = <0>;
		sensor12_vflip = <0>;
		sensor12_act_used = <0>;
		sensor12_act_name = "";
		sensor12_act_twi_addr = <>;
		status = "disabled";
	};

	vinc00:vinc@45830000 {
		vinc0_csi_sel = <0>;
		vinc0_mipi_sel = <0>;
		vinc0_isp_sel = <0>;
		vinc0_isp_tx_ch = <0>;
		vinc0_tdm_rx_sel = <0>;
		vinc0_rear_sensor_sel = <0>;
		vinc0_front_sensor_sel = <0>;
		vinc0_sensor_list = <0>;
		work_mode = <0x0>;
		status = "okay";
	};

	vinc01:vinc@4582fffc {
		vinc1_csi_sel = <1>;
		vinc1_mipi_sel = <1>;
		vinc1_isp_sel = <1>;
		vinc1_isp_tx_ch = <0>;
		vinc1_tdm_rx_sel = <1>;
		vinc1_rear_sensor_sel = <0>;
		vinc1_front_sensor_sel = <0>;
		vinc1_sensor_list = <0>;
		status = "disabled";
	};

	vinc10:vinc@45831000 {
		vinc4_csi_sel = <0>;
		vinc4_mipi_sel = <0>;
		vinc4_isp_sel = <0>;
		vinc4_isp_tx_ch = <0>;
		vinc4_tdm_rx_sel = <0>;
		vinc4_rear_sensor_sel = <0>;
		vinc4_front_sensor_sel = <0>;
		vinc4_sensor_list = <0>;
		work_mode = <0x0>;
		status = "okay";
	};

	vinc11:vinc@45830ffc {
		vinc5_csi_sel = <1>;
		vinc5_mipi_sel = <1>;
		vinc5_isp_sel = <1>;
		vinc5_isp_tx_ch = <0>;
		vinc5_tdm_rx_sel = <1>;
		vinc5_rear_sensor_sel = <0>;
		vinc5_front_sensor_sel = <0>;
		vinc5_sensor_list = <0>;
		status = "disabled";
	};

};

然后在mpp启动rtsp,拷贝执行文件和配置文件到sd卡上

四、测试

4-1 启动信息

4-2 iic节点

c 复制代码
root@TinaLinux:~# i2cdetect -y 0
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- UU -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

4-3 rtsp推流

在 /mnt/extsd 目录下

c 复制代码
./sample_rtsp -path ./sample_rtsp.conf

如果使用wlan0的话要先把配置改一下

c 复制代码
########### paramter (ref to tulip_cedarx.conf)############
[parameter]

rtsp_net_type = 3                      #RTSP Network type, 0: "lo", 1: "eth0", 2: "br0", 3: "wlan0"

程序正常运行,出现rtsp链接

4-3 rtsp拉流

winddows下安装 VLC media player

然后就可以看到设备的视频流

4-3-1 ch1

在这里我打开的是ch1,分辨率较低,只有 640x360

4-3-1 ch0

然后我们使用ch0,很明显已经清晰很多,分辨率为1280x720

相关推荐
liulilittle2 小时前
Linux 内核网络调优:单连接大带宽吞吐配置
linux·运维·服务器·网络·信息与通信·通信
玩机达人883 小时前
三星S25Ultra/S24安卓16系统Oneui8成功获取完美root权限+LSP框架
android·linux·里氏替换原则
愚润求学3 小时前
【Linux】数据链路层 and 其他知识
linux·运维·网络
刀法孜然3 小时前
vim 编辑中,临时挂起编辑器进程,返回到终端命令行
linux·编辑器·vim
Amelio_Ming3 小时前
systemd-journald和rsyslogd日志配置详解
linux·运维·服务器
九皇叔叔4 小时前
Linux Shell 中的 $():命令替换的核心用法
linux·运维·chrome
半桔4 小时前
【网络编程】详解 IP 协议:报头字段、路由器功能、网段划分和分片传输
linux·网络·网络协议·tcp/ip
大聪明-PLUS4 小时前
TCP/IP 协议族—理论与实践(二)
linux·嵌入式·arm·smarc
liulilittle4 小时前
Linux内核网络优化:两个网络调优解决方案
linux·运维·服务器·网络·内核·信息与通信·通信