Linux 如何在iMX8QXP上运行OV5647_mipi
您好,我有iMX8QXP工具包,我想从ov5647相机获取流 DISTRO=fsl imx wayland 我的ov5647相机的pin连接到: MIPI\U CSI0\U ACM\U MCLK\U OUT MIPI\U CSI0\U MCLK\U OUT ALT0 MIPI_CSI0_CKN MIPI_CSI0_CLK_N ALT0 MIPI_CSI0_CKP MIPI_CSI0_CLK_P ALT0 MIPI_CSI0_DN0 MIPI_CSI0_数据0_N ALT0 MIPI_CSI0_DN1 MIPI_CSI0_数据1_N ALT0 MIPI_CSI0_DN2 MIPI_CSI0_数据2_N ALT0 MIPI_CSI0_DN3 MIPI_CSI0_数据3_N ALT0 MIPI_CSI0_DP0 MIPI_CSI0_数据0_P ALT0 MIPI_CSI0_DP1 MIPI_CSI0_数据1_P ALT0 MIPI_CSI0_DP2 MIPI_CSI0_数据2_P ALT0 MIPI_CSI0_DP3 MIPI_CSI0_数据3_P ALT0 但I2C引脚未连接。有问题吗?我可以通过i2c在没有初始化的情况下从相机获取数据吗 因此,我在./include/dt bindings/pinctrl/pads-imx8qxp.h中找不到这些管脚(带有焊盘信号名称),如果我将这些管脚写入焊盘格式,我将得到错误,而不是写入MIPI_CSI0_ACM_MCLK_OUT。我想这个别针是专用的,我不能多路复用。我可以直接使用,无需更改scfw 因此,我的关于mipi csi摄像头的dts文件:Linux 如何在iMX8QXP上运行OV5647_mipi,linux,linux-kernel,yocto,imx6,imx7,Linux,Linux Kernel,Yocto,Imx6,Imx7,您好,我有iMX8QXP工具包,我想从ov5647相机获取流 DISTRO=fsl imx wayland 我的ov5647相机的pin连接到: MIPI\U CSI0\U ACM\U MCLK\U OUT MIPI\U CSI0\U MCLK\U OUT ALT0 MIPI_CSI0_CKN MIPI_CSI0_CLK_N ALT0 MIPI_CSI0_CKP MIPI_CSI0_CLK_P ALT0 MIPI_CSI0_DN0 MIPI_CSI0_数据0_N ALT0 MIPI_CSI0_D
我尝试了video12和video13通过lvds用以下命令打开摄像头: 命令: gst-launch-1.0-v videotestsrc pattern=ball\!视频/x-raw,宽度=320,高度=240\!视频转换\!发球!v4l2sink设备=/dev/video12 输出: root@imx8qxpmek:/home#gst-launch-1.0-v videotestsrc pattern=ball\ !!视频/x-raw,宽度=320,高度=240\ ! 视频转换\ ! 发球台\ ! v4l2sink设备=/dev/video12 正在将管道设置为暂停。。。 错误:管道不想暂停。 错误:来自元素/GstPipeline:pipeline0/GstV4l2Sink:v4l2sink0:Device'/dev/video12'不是输出设备。 其他调试信息: ../../../git/sys/v4l2/v4l2_calls.c(687):gst_v4l2_open():/GstPipeline:pipeline0/GstV4l2Sink:v4l2sink0: 能力:0x4204000 正在将管道设置为空。。。 释放管道 root@imx8qxpmek:/home#
命令: gst-launch-1.0-v videotestsrc pattern=ball\!视频/x-raw,宽度=320,高度=240\!视频转换\!发球!v4l2sink设备=/dev/video12 输出: 正在将管道设置为暂停。。。 管道正在预滚。。。 /GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0.GstPad:src:caps=video/x-raw,格式=(字符串)NV12,宽度=(int)320,高度=(int)240,帧率=(分数)30/1,多视图模式=(字符串)单声道,隔行1 /GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src:caps=video/x-raw,格式=(string)NV12,宽度=(int)320,高度=(int)240,帧率=(分数)30/1,多视图模式=(string)mono,隔行扫描-mod1 /GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:src:caps=video/x-raw,格式=(字符串)NV12,宽度=(int)320,高度=(int)240,帧速率=(分数)30/1,多视图模式=(字符串)单声道,隔行1 /GstPipeline:pipeline0/GstTee:tee0.GstTeePad:src_0:caps=video/x-raw,格式=(string)NV12,宽度=(int)320,高度=(int)240,帧率=(分数)30/1,多视图模式=(string)mono,隔行模式=(string1 /GstPipeline:pipeline0/GstV4l2Sink:v4l2sink0.GstPad:sink:caps=video/x-raw,格式=(string)NV12,宽度=(int)320,高度=(int)240,帧率=(分数)30/1,多视图模式=(string)mono,隔行模式=(1 /GstPipeline:pipeline0/GstTee:tee0.GstPad:sink:caps=video/x-raw,格式=(string)NV12,宽度=(int)320,高度=(int)240,帧率=(分数)30/1,多视图模式=(string)mono,隔行模式=(string)pro1 /GstPipeline:pipeline0/gstvideoconvert0.GstPad:sink:caps=video/x-raw,格式=(string)NV12,宽度=(int)320,高度=(int)240,帧率=(分数)30/1,多视图模式=(string)mono,interlac1 /GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink:caps=video/x-raw,格式=(string)NV12,宽度=(int)320,高度=(int)240,帧率=(分数)30/1,多视图模式=(string)mono,隔行扫描-mo1 管道已预卷。。。 正在将管道设置为播放。。。 新时钟:GstSystemClock ^钱德林中断。------------------------------------->CTRL+C 中断:正在停止管道。。。 执行在0:01:03.000609625后结束 正在将管道设置为暂停。。。 正在将管道设置为就绪。。。 正在将管道设置为空。。。 释放管道
命令:
root@imx8qxpmek:/# gst-launch-1.0 v4l2src device=/dev/video12 glimagesink
Setting pipeline to PAUSED ...
ERROR: Pipeline doesn't want to pause.
Got context from element 'sink': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayWayland\)\ gldisplaywayland0";
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Device '/dev/video12' is not a capture device.
Additional debug info:
../../../git/sys/v4l2/v4l2_calls.c(679): gst_v4l2_open (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
Capabilities: 0x4204000
Setting pipeline to NULL ...
Freeing pipeline ...
root@imx8qxpmek:/#
gst-launch-1.0-e glvideomixer name=mix background=3 sink_0::xpos=192 sink_0::ypos=0 sink_0::width=640 sink_0::height=480 sink_0::zorder=1!“video/x-raw,width=1024,height=768”!glimagesink rotate方法=水平翻转v4l2src设备=/dev/video13!video/x-raw,width=640,height=480!mix.sink\0&
输出:
正在将管道设置为暂停。。。
管道是带电的,不需要预滚。。。
已从元素“接收器”获取上下文:gst.gl.GLDisplay=context,gst.gl.GLDisplay=(GstGLDisplay)”(GstGLDisplayWayland)\gldisplaywayland0”;
正在将管道设置为播放。。。
新时钟:GstSystemClock
错误:来自元素/GstPipeline:pipeline0/GstV4l2Src:v4l2src0:内部数据流错误。
其他调试信息:
../../../git/libs/gst/base/gstbasesrc.c(3072):gst_base_src_loop():/GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
流停止,原因未协商(-4)
关闭时启用EOS--错误后等待EOS
等待EOS
命令:
root@imx8qxpmek:/# gst-launch-1.0 v4l2src device=/dev/video12 glimagesink
Setting pipeline to PAUSED ...
ERROR: Pipeline doesn't want to pause.
Got context from element 'sink': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayWayland\)\ gldisplaywayland0";
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Device '/dev/video12' is not a capture device.
Additional debug info:
../../../git/sys/v4l2/v4l2_calls.c(679): gst_v4l2_open (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
Capabilities: 0x4204000
Setting pipeline to NULL ...
Freeing pipeline ...
root@imx8qxpmek:/#
gst-launch-1.0-e glvideomixer name=mix background=3 sink_0::xpos=192 sink_0::ypos=0 sink_0::width=640 sink_0::height=480 sink_0::zorder=1!“视频/x-raw,宽度=1024,高度=768”!glimagesink旋转方法=水平翻转v4l2src设备=/dev/video12!
&iomuxc {
imx8qxp-mek {
pinctrl_mipi_csi0: mipicsi0grp{
fsl,pins = <
SC_P_MIPI_CSI0_MCLK_OUT_MIPI_CSI0_ACM_MCLK_OUT 0xC0000041
SC_P_MIPI_CSI0_GPIO0_01_LSIO_GPIO3_IO07 0xC0000041
SC_P_MIPI_CSI0_GPIO0_00_LSIO_GPIO3_IO08 0xC0000041
>;
};
pinctrl_parallel_csi: parallelcsigrp {
fsl,pins = <
SC_P_CSI_D00_CI_PI_D02 0xC0000041
SC_P_CSI_D01_CI_PI_D03 0xC0000041
SC_P_CSI_D02_CI_PI_D04 0xC0000041
SC_P_CSI_D03_CI_PI_D05 0xC0000041
SC_P_CSI_D04_CI_PI_D06 0xC0000041
SC_P_CSI_D05_CI_PI_D07 0xC0000041
SC_P_CSI_D06_CI_PI_D08 0xC0000041
SC_P_CSI_D07_CI_PI_D09 0xC0000041
SC_P_CSI_MCLK_CI_PI_MCLK 0xC0000041
SC_P_CSI_PCLK_CI_PI_PCLK 0xC0000041
SC_P_CSI_HSYNC_CI_PI_HSYNC 0xC0000041
SC_P_CSI_VSYNC_CI_PI_VSYNC 0xC0000041
SC_P_CSI_EN_LSIO_GPIO3_IO02 0xC0000041
SC_P_CSI_RESET_LSIO_GPIO3_IO03 0xC0000041
>;
};
};
};
&isi_0 {
interface = <6 0 2>; /* INPUT: 6-PARALLEL CSI */
parallel_csi;
status = "disable";
};
&cameradev {
mipi_csi_0;
status = "okay";
};
¶llel_csi {
#address-cells = <1>;
#size-cells = <0>;
status = "disable";
port@0 {
reg = <0>;
parallel_csi_ep: endpoint {
remote-endpoint = <&ov5647_ep>;
};
};
};
&isi_2 {
interface = <2 0 2>;
status = "okay";
};
&isi_1 {
status = "disabled";
};
&isi_3 {
status = "disabled";
};
&isi_4 {
status = "disabled";
};
&isi_5 {
status = "disabled";
};
&isi_6 {
status = "disabled";
};
&isi_7 {
status = "disabled";
};
&i2c0_csi0 {
clock-frequency = <100000>;
status = "okay";
#address-cells = <1>;
#size-cells = <0>;
ov5647_mipi: ov5647_mipi@36 {
compatible = "ovti,ov5647_mipi";
reg = <0x36>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_mipi_csi0>;
clocks = <&clk IMX8QXP_24MHZ>;
clock-names = "csi_mclk";
csi_id = <0>;
pwn-gpios = <&gpio3 7 GPIO_ACTIVE_LOW>;
rst-gpios = <&gpio3 8 GPIO_ACTIVE_HIGH>;
mclk = <24000000>;
mclk_source = <0>;
mipi_csi;
status = "okay";
port {
ov5647_mipi_ep: endpoint {
remote-endpoint = <&mipi_csi0_ep>;
};
};
};
/delete-node/max9286_mipi@6A;
};
&mipi_csi_0 {
virtual-channel;
status = "okay";
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
mipi_csi0_ep: endpoint {
remote-endpoint = <&ov5647_mipi_ep>;
data-lanes = <1 2>;
};
};
};
&i2c0_cm40 {
#address-cells = <1>;
#size-cells = <0>;
ov5647: ov5647@36 {
compatible = "ovti,ov5647";
reg = <0x36>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_parallel_csi>;
clocks = <&clk IMX8QXP_PARALLEL_CSI_MISC0_CLK>;
clock-names = "csi_mclk";
pwn-gpios = <&gpio3 2 GPIO_ACTIVE_LOW>;
rst-gpios = <&gpio3 3 GPIO_ACTIVE_HIGH>;
csi_id = <0>;
mclk = <24000000>;
mclk_source = <0>;
status = "disabled";
port {
ov5647_ep: endpoint {
remote-endpoint = <¶llel_csi_ep>;
};
};
};
};
SC_P_MIPI_CSI0_GPIO0_01_LSIO_GPIO3_IO07 0xC0000041
SC_P_MIPI_CSI0_GPIO0_00_LSIO_GPIO3_IO08 0xC0000041
root@imx8qxpmek:/# dmesg | grep ov5
[ 3.641815] ov5647_mipi 16-0036: 16-0036 supply DOVDD not found, using dummy regulator
[ 3.649866] ov5647_mipi 16-0036: Linked as a consumer to regulator.0
[ 3.656255] ov5647_mipi 16-0036: 16-0036 supply DVDD not found, using dummy regulator
[ 3.664175] ov5647_mipi 16-0036: 16-0036 supply AVDD not found, using dummy regulator
[ 4.751720] ov5647_read_reg:write reg error:reg=300a
[ 4.756696] camera ov5647_mipi is not found
root@imx8qxpmek:/#
root@imx8qxpmek:/# gst-launch-1.0 v4l2src device=/dev/video12 glimagesink
Setting pipeline to PAUSED ...
ERROR: Pipeline doesn't want to pause.
Got context from element 'sink': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayWayland\)\ gldisplaywayland0";
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Device '/dev/video12' is not a capture device.
Additional debug info:
../../../git/sys/v4l2/v4l2_calls.c(679): gst_v4l2_open (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
Capabilities: 0x4204000
Setting pipeline to NULL ...
Freeing pipeline ...
root@imx8qxpmek:/#
root@imx8qxpmek:/# gst-launch-1.0 v4l2src device=/dev/video13 glimagesink
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Got context from element 'sink': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayWayland\)\ gldisplaywayland0";
Caught SIGSEGV
Setting pipeline to PLAYING ...
New clock: GstSystemClock
#0 0x0000ffffbce2a1a0 in __GI___poll (fds=0x13944c50, nfds=2,
#1 0x0000ffffbcf4b22c in ?? () from /usr/lib/libglib-2.0.so.0
#2 0x0000ffffbcf4b640 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
#3 0x0000ffffbd0da5bc in gst_bus_poll () from /usr/lib/libgstreamer-1.0.so.0
#4 0x0000000000404828 in ?? ()
#5 0x00000000004036a8 in ?? ()
#6 0x0000ffffbcd89264 in __libc_start_main (main=0x4032c0, argc=4,
#7 0x0000000000403d44 in ?? ()
Spinning. Please run 'gdb gst-launch-1.0 4434' to continue debugging, Ctrl-C to quit, or Ctrl-\ to dump core.