AIO-3588MQ视频AOS04A10摄像头模组,视频输出异常!
在调试OS04A10摄像头驱动的时,有视频流输出,但出现 这种情况。是什么原因呢?怎么解决?设备树是这样配置:
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2021 Rockchip Electronics Co., Ltd.
*
*/
/ {
cam_ircut0: cam_ircut {
status = "okay";
compatible = "rockchip,ircut";
ircut-open-gpios = <&gpio4 RK_PA6 GPIO_ACTIVE_HIGH>;
ircut-close-gpios= <&gpio4 RK_PA7 GPIO_ACTIVE_HIGH>;
rockchip,camera-module-index = <0>;
rockchip,camera-module-facing = "back";
};
vcc_mipidphy0: vcc-mipidcphy0-regulator {
status = "okay";
compatible = "regulator-fixed";
gpio = <&gpio1 RK_PB1 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&mipidphy0_pwr>;
regulator-name = "vcc_mipidphy0";
enable-active-high;
};
};
&csi2_dphy0 {
status = "okay";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
#address-cells = <1>;
#size-cells = <0>;
mipidphy0_in_ucam0: endpoint@1 {
reg = <1>;
remote-endpoint = <&os04a10_out0>;
data-lanes = <1 2>;
};
};
port@1 {
reg = <1>;
#address-cells = <1>;
#size-cells = <0>;
csidphy0_out: endpoint@0 {
reg = <0>;
remote-endpoint = <&mipi2_csi2_input>;
};
};
};
};
&csi2_dphy0_hw {
status = "okay";
};
&i2c3 {
status = "okay";
os04a10: os04a10@36 {
compatible = "ovti,os04a10";
status = "okay";
reg = <0x36>;
clocks = <&cru CLK_MIPI_CAMARAOUT_M3>;
clock-names = "xvclk";
power-domains = <&power RK3588_PD_VI>;
pinctrl-names = "rockchip,camera_default",
"rockchip,camera_sleep";
pinctrl-0 = <&mipim0_camera3_clk>;
reset-gpios = <&gpio1 RK_PB0 GPIO_ACTIVE_LOW>;
pwdn-gpios = <&gpio1 RK_PA6 GPIO_ACTIVE_HIGH>;
avdd-supply = <&vcc_mipidphy0>;
// dovdd-supply = <&vcc_dovdd>;
// dvdd-supply = <&vcc_dvdd>;
rockchip,camera-module-sync-mode = "slave";
rockchip,camera-module-index = <0>;
rockchip,camera-module-facing = "front";
rockchip,camera-module-name = "CMK-OT1607-FV1";
rockchip,camera-module-lens-name = "M12-40IRC-4MP-F16";
rockchip,camera-hdr-mode = <0>;
//os04a10hk_CMK-OT1607-FV1_M12-40IRC-4MP-F16
lens-focus = <&cam_ircut0>;
port {
os04a10_out0: endpoint {
remote-endpoint = <&mipidphy0_in_ucam0>;
data-lanes = <1 2>;
};
};
};
};
&mipi2_csi2 {
status = "okay";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
#address-cells = <1>;
#size-cells = <0>;
mipi2_csi2_input: endpoint@1 {
reg = <1>;
remote-endpoint = <&csidphy0_out>;
};
};
port@1 {
reg = <1>;
#address-cells = <1>;
#size-cells = <0>;
mipi2_csi2_output: endpoint@0 {
reg = <0>;
remote-endpoint = <&cif_mipi2_in0>;
};
};
};
};
&pinctrl {
cam {
mipidphy0_pwr: mipidphy0-pwr {
rockchip,pins =
/* camera power en */
<1 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
};
&rkcif {
status = "okay";
};
&rkcif_mipi_lvds2 {
status = "okay";
port {
cif_mipi2_in0: endpoint {
remote-endpoint = <&mipi2_csi2_output>;
};
};
};
&rkcif_mipi_lvds2_sditf {
status = "disabled";
port {
mipi_lvds2_sditf: endpoint {
remote-endpoint = <&isp0_vir0>;
};
};
};
&rkcif_mmu {
status = "okay";
};
&rkisp0 {
status = "disabled";
};
&isp0_mmu {
status = "disabled";
};
&rkisp0_vir0 {
status = "disabled";
port {
#address-cells = <1>;
#size-cells = <0>;
isp0_vir0: endpoint@0 {
reg = <0>;
remote-endpoint = <&mipi_lvds2_sditf>;
};
};
};
这是格式问题,你抓哪个节点,以什么格式来抓呢? 我们的 800 万摄像头是外置 ISP 摄像头,你的摄像头是没有 ISP 的,需要用3588 内部的 ISP。
sensor 传过来的是 bayer raw 格式不是 YUV 格式,这个要先搞清楚才能调试 用的是这个命令抓的 :
gst-launch-1.0 -v v4l2src device=/dev/video0 num-buffers=10 ! video/x-raw,format=NV12,width=1920,height=1080 ! mppjpegenc ! multifilesink location=/userdata/test%05d.jpg 我看这个芯片的架构是有ISP的 用IMX464 摄像头模组 在 buildroot 里能出现 /dev/video-camera0这个ISP节点,但在Ubuntu(官网下载的文件系统) 里面没有,用OS04A10摄像头模组在两个系统里都不能出现 ISP设备节点 有时候会出现这个错误 iqfile 文件有两个os04a10的json文件,我该填哪个? 上面 已经提醒过了,sensor 出来的数据不是 nv12 YUV 格式 ,是 bayer raw 格式 设备树没有开 ISP 当然没有 ISP 节点了,你可以参考一下其他dts 或者RK ISP 文档,改一下Sensor 链路。我们的摄像头是外置 ISP 出来的数据就是YUV 而不是 bayer raw 数据,不同场景 ,不能做参考
页:
[1]