1964408_ja-JP

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

1964408_ja-JP

1964408_ja-JP

SDIからCSIへのシンプルなブリッジからi.mx8mpへ

Debian Bookworm を実行するカスタムボードがあり、FPGA を使用して SDI ビデオを CSI2 にブリッジします。FPGA i2cインターフェースは、SDI信号がビデオフォーマット(さまざまなフレームレートで720pまたは1080p)を制御するため、非常にシンプルです。すべてのフレーム レートは、300MHz の CSI クロックと 4 レーンで 600MHz のデータ レートを使用します。

私は CSI2-SAM を使用する (と思う) サブデバイス ドライバーを作成しました。720p 50Hz入力では、次のように表示されます。


$ media-ctl -d /dev/media0 -p                                                   Media controller API version 6.1.36

Media device information
------------------------
driver          mxc-md
model           FSL Capture Media Device
serial
bus info        platform:32c00000.bus:camera
hw revision     0x0
driver version  6.1.36

Device topology
- entity 1: mxc_isi.0 (16 pads, 2 links)
            type V4L2 subdev subtype Unknown flags 0
        pad0: Sink
                <- "mxc-mipi-csi2.0":4 [ENABLED]
        pad1: Sink
        pad2: Sink
        pad3: Sink
        pad4: Sink
        pad5: Sink
        pad6: Sink
        pad7: Sink
        pad8: Sink
        pad9: Sink
        pad10: Sink
        pad11: Sink
        pad12: Source
                -> "mxc_isi.0.capture":0 [ENABLED]
        pad13: Source
        pad14: Source
        pad15: Sink

- entity 18: mxc_isi.0.capture (1 pad, 1 link)
             type Node subtype V4L flags 0
             device node name /dev/video3
        pad0: Sink
                <- "mxc_isi.0":12 [ENABLED]

- entity 22: mxc-mipi-csi2.0 (8 pads, 2 links)
             type Node subtype V4L flags 0
             device node name /dev/v4l-subdev0
        pad0: Sink
                <- "mc_camera_mipi 3-003c":0 [ENABLED,IMMUTABLE]
        pad1: Sink
        pad2: Sink
        pad3: Sink
        pad4: Source
                -> "mxc_isi.0":0 [ENABLED]
        pad5: Source
        pad6: Source
        pad7: Source

- entity 31: mc_camera_mipi 3-003c (1 pad, 1 link)
             type V4L2 subdev subtype Sensor flags 0
             device node name /dev/v4l-subdev1
        pad0: Source
                [fmt:UYVY8_2X8/1280x720 field:none colorspace:rec709 xfer:709 ycbcr:601 quantization:lim-range]
                -> "mxc-mipi-csi2.0":0 [ENABLED,IMMUTABLE]

これは私には正しいように思えます。

最初に私は気づきます:


/sys/devices/platform/soc@0/32c00000.bus/32c00000.bus:camera/32e40000.csi$ cat ./power/runtime_status
suspended

キャプチャを開始していないため、問題ありません。

次に、実行します。


$ v4l2-ctl --set-fmt-video=width=1280,height=720,pixelformat="NV12" --device=/dev/video3 --stream-count=10 --stream-mmap

ランタイムステータスが「アクティブ」に変わります。'スコープを使用すると、FPGAはサブデバイスの要求に応じてCSIビデオデータの出力を開始することがわかります。


[326921.869991] mc_camera_mipi 3-003c: s_stream: 1

get_fmt は、ドキュメントに記載されている UYVY8 の出力形式に一致する 0x2006 (MEDIA_BUFS_FMT_UYVY8_2x8) のコードを返します。また、FPGAによって検出された解像度とフレームレートも出力します。

これはすべて私には問題ないように見えますが、v4l2キャプチャは最初のフレームを待って停止します。


ioctl(3, VIDIOC_G_FMT, {type=V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE, fmt.pix_mp={width=1280, height=720, pixelformat=v4l2_fourcc('N', 'V', '1', '2') /* V4L2_PIX_FMT_NV12 */, field=V4L2_FIELD_NONE, colorspace=V4L2_COLORSPACE_SRGB, plane_fmt=[{sizeimage=1382400, bytesperline=1280}], num_planes=1}}) = 0
ioctl(3, VIDIOC_STREAMON, [V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE]) = 0
ioctl(3, VIDIOC_G_FMT, {type=V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE, fmt.pix_mp={width=1280, height=720, pixelformat=v4l2_fourcc('N', 'V', '1', '2') /* V4L2_PIX_FMT_NV12 */, field=V4L2_FIELD_NONE, colorspace=V4L2_COLORSPACE_SRGB, plane_fmt=[{sizeimage=1382400, bytesperline=1280}], num_planes=1}}) = 0
pselect6(4, NULL, NULL, [3], {tv_sec=0, tv_nsec=0}, NULL) = 0 (Timeout)
ioctl(3, VIDIOC_DQBUF, {type=V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE

ですから、明らかに何かが間違っています。

私はV4L2に少し初心者ですが、同様のPCIeインターフェイスを備えたPCIeベースのビデオキャプチャ用のドライバーを作成しました。

これをデバッグするためにどのツールを適用できるかについての提案、または私が間違っていることについてのヒントは、ありがたいことに受け取られます。

ありがとうございます

P.S. デバイスツリーのスニペットが続きます


&i2c4 {
	clock-frequency = <400000>;
	pinctrl-names = "default", "gpio";
	pinctrl-0 = <&pinctrl_i2c4>;
	pinctrl-1 = <&pinctrl_i2c4_gpio>;
	scl-gpios = <&gpio5 20 GPIO_ACTIVE_HIGH>;
	sda-gpios = <&gpio5 21 GPIO_ACTIVE_HIGH>;
	status = "okay";

	mc_camera_mipi0 {
		compatible = "v4,mc_camera_mipi";
		reg = <0x3c>;
		clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>;
		clock-names = "xclk";
/* Disabled CLKO2, since DART-MX8MP camera expansion board uses
 * its own oscillator. Enable CLK02 if your desing requres it
 */
#if 0
		assigned-clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>;
		assigned-clock-parents = <&clk IMX8MP_CLK_24M>;
#endif
		assigned-clock-rates = <24000000>;
		csi_id = <0>;
/*		powerdown-gpios = <&pca6408_1 2 GPIO_ACTIVE_HIGH>;
		reset-gpios = <&pca6408_1 0 GPIO_ACTIVE_LOW>;
*/
		mclk = <24000000>;
		mclk_source = <0>;
		mipi_csi;
		status = "okay";

		port {
			mc_camera_mipi_0_ep: endpoint {
				remote-endpoint = <&mipi_csi0_ep>;
				data-lanes = <1 2 3 4>;
				clock-lanes = <0>;
			};
		};
	};
};

&mipi_csi_0 {
	#address-cells = <1>;
	#size-cells = <0>;
	status = "okay";

	port@0 {
		reg = <0>;
		mipi_csi0_ep: endpoint {
			remote-endpoint = <&mc_camera_mipi_0_ep>;
			data-lanes = <4>;
			csis-hs-settle = <6>;
			csis-clk-settle = <2>;
			csis-wclk;
		};
	};
};

    mipi_csi_0: csi@32e40000 {
     compatible = "fsl,imx8mp-mipi-csi", "fsl,imx8mn-mipi-csi";
     reg = <0x32e40000 0x10000>;
     interrupts = <0 17 4>;
     clock-frequency = <500000000>;
     clocks = <&clk 271>,
       <&clk 97>,
       <&clk 269>;
     clock-names = "mipi_clk",
            "disp_axi",
            "disp_apb";
     assigned-clocks = <&clk 170>;
     assigned-clock-parents = <&clk 65>;
     assigned-clock-rates = <500000000>;
     bus-width = <4>;
     csi-gpr = <&mediamix_gasket0>;
     gpr = <&media_blk_ctrl>;
     power-domains = <&media_blk_ctrl 1>;
     status = "disabled";
    };



i.MX 8M | i.MX 8M Mini | i.MX 8M NanoLinuxマルチメディア日時:i.mx8mpへのシンプルなSDIからCSIへのブリッジ

こんにちは、私はLinuxベースのプラットフォームでHD-SDIからMIPICIS2ブリッジソリューションに苦労しています。

あなたのチップセットソリューションを私にお勧めできますか?

日時:i.mx8mpへのシンプルなSDIからCSIへのブリッジCSI タイミングの問題
标记 (1)
无评分
版本历史
最后更新:
‎01-04-2026 11:30 PM
更新人: