Waveshare製の東芝製IC TC358743をベースにしたHDMI-CSI2変換モジュールを、インターフェースしようとしています。
私はYoctoプロジェクトを使用してイメージをビルドしています
$ DISTRO=fsl-imx-wayland MACHINE=imx8mp-lpddr4-frdm source imx-setup-release.sh -b frdm_sources_whinlatter
そして、このコマンドを使用してドライバを選択しました
bitbake -c menuconfig /virtual/kernel
そしてそれは.configファイルに反映されていますファイルも
CONFIG_VIDEO_TC358743=y
CONFIG_VIDEO_TC358743_CEC=y
それに応じてdtsファイルを修正しました。参考のためにdtsファイルを添付します。
しかし、ICと通信できませんでした
i2cdetect -y 1 の場合でも、0x0F アドレスにロックされません (UU)。しかし、i2c1でデバイスアドレスを確認することはできます。
DTSファイルまたはドライバ選択で何が不足しているのでしょうか?
これに関する公式に検証済みのコードはありません。お送りしたリンクにはdts設定が共有されていますので、ご自身の設定と比較して、何か見落としている点がないか確認してください。
正しく設定されているかどうかを確認するには、以下のリンクを参照してください。
この問題は解決しましたが、Gstremer を使用した CSI2 から HDMI へのビデオパイプラインに関して別の問題に直面しています。これが DTS の問題なのか、それとも別の問題なのかがわかりません。
参考までに、デバイスからの応答ログを添付します。そしてdtsファイル、
root@imx8mp-lpddr4-frdm:~# i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 abcdef
00: -- -- -- -- -- -- -- UU
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- うう -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
root@imx8mp-lpddr4-frdm:~# v4l2-ctl --list-devices
():
/dev/v4l-subdev0
FSLキャプチャメディアデバイス(プラットフォーム:32c00000.bus:camera):
/dev/media0
mxc-isi_v1 (プラットフォーム:32e00000.isi:cap_devic):
/dev/video3
mxc-isi-m2m_v1 (プラットフォーム:32e00000.isi:m2m_devic):
/dev/video2
vsi_v4l2dec (プラットフォーム:vsi_v4l2dec):
/dev/video1
vsi_v4l2enc (プラットフォーム:vsi_v4l2enc):
/dev/video0
root@imx8mp-lpddr4-frdm:~# v4l2-ctl -d /dev/v4l-subdev1 --query-dv-timings
有効幅: 1280
アクティブ高さ:720
全幅:1650
全高:750
フレーム形式: プログレッシブ
極性: -vsync -hsync
ピクセルクロック:74250000 Hz(毎秒60.00フレーム)
水平方向の玄関ポーチ:0
水平同期: 370
水平方向の裏ポーチ:0
垂直型フロントポーチ:0
垂直同期: 30
垂直バックポーチ:0
基準:
旗:
root@imx8mp-lpddr4-frdm:~# v4l2-ctl -d /dev/v4l-subdev1 --set-dv-bt-timings query
BTのタイミングが設定されました
root@imx8mp-lpddr4-frdm:~# media-ctl -p
メディアコントローラーAPIバージョン6.18.2
メディアデバイス情報
------------------------
ドライバ mxc-md
モデルFSLキャプチャメディアデバイス
シリアル
バス情報プラットフォーム:32c00000.バス:カメラ
ハードウェアリビジョン 0x0
ドライバーバージョン 6.18.2
デバイストポロジー
- エンティティ 1: mxc_isi.0(パッド16個、リンク2個、ルート0個)
タイプ V4L2 サブデバイス サブタイプ 不明 フラグ 0
pad0: シンク
<- "mxc-mipi-csi2.0":4 [有効]
pad1: シンク
pad2: シンク
pad3: シンク
pad4: シンク
pad5: シンク
pad6: シンク
pad7: シンク
pad8: シンク
pad9: シンク
pad10: 沈む
pad11: シンク
pad12: ソース
-> "mxc_isi.0.capture":0 [有効]
pad13: ソース
pad14: ソース
pad15: シンク
- エンティティ 18: mxc_isi.0.capture (1 パッド、1 リンク)
タイプ ノード サブタイプ V4L フラグ 0
デバイスノード名 /dev/video3
pad0: シンク
<- "mxc_isi.0":12[有効]
- エンティティ22: mxc-mipi-csi2.0 (8パッド、2リンク)
タイプ ノード サブタイプ V4L フラグ 0
デバイスノード名 /dev/v4l-subdev0
pad0: シンク
<- "tc358743 1-000f":0 [有効、不変]
pad1: シンク
pad2: シンク
pad3: シンク
pad4: ソース
-> "mxc_isi.0":0[有効]
pad5: ソース
pad6: ソース
pad7: ソース
- エンティティ 31: tc358743 1-000f (パッド 1、リンク 1、ルート 0)
タイプ V4L2 サブデバイス サブタイプ 不明 フラグ 0
デバイスノード名 /dev/v4l-subdev1
pad0: ソース
[stream:0 fmt:RGB888_1X24/1280x720 field:none colorspace:srgb]
[dv.caps:BT.656/1120最小:640x350@13000000 最大:1920x1200@165000000 標準:CEA-861、DMT、CVT、GTF キャップ:プログレッシブ、リデュースド-
ブランキング、カスタム]
[dv.detect:BT.656/11201280x720p60 (1650x750) stds: flags:]
[dv.current:BT.656/11201280x720p60 (1650x750) stds: flags:]
-> "mxc-mipi-csi2.0":0 [有効、不変]
root@imx8mp-lpddr4-frdm:~# gst-launch-1.0v4l2src デバイス=/dev/video3 num-buffers=10 !\
> video/x-raw,format=YUY2,width=1920,height=1080,framerate=60/1 !\
偽シンク
パイプラインを一時停止状態に設定しています...
パイプラインは稼働中で、事前登録は不要です。
パイプラインは事前登録済みです...
パイプラインを再生中に設定します...
新しい時計: GstSystemClock
エラー: 要素 /GstPipeline:pipeline0/GstV4l2Src:v4l2src0 から: 必要なメモリの割り当てに失敗しました。
追加のデバッグ情報:
/usr/src/debug/gstreamer1.0-plugins-good/1.26.6.imx/sys/v4l2/gstv4l2src.c(957): gst_v4l2src_decide_allocation (): /GstPipeline:pipel
ine0/GstV4l2Src:v4l2src0:
バッファプールのアクティベーションに失敗しました
実行は0:00:00.025120625で終了しました。
パイプラインをNULLに設定中...
エラー: 要素 /GstPipeline:pipeline0/GstV4l2Src:v4l2src0 から: 内部データストリームエラー。
追加のデバッグ情報:
/usr/src/debug/gstreamer1.0/1.26.6.imx/libs/gst/base/gstbasesrc.c(3187):gst_base_src_loop (): /GstPipeline:pipeline0/GstV4l2Src:v4l
2src0:
ストリーミングが停止しました。理由は交渉不能です(-4)
パイプラインを解放する...
外部ディスプレイ(HDMI接続)にも何も表示されません。
第7.3.9章を参照してください。Linuxユーザーガイドのカメラプレビューでは、media-ctlを使用して接続を作成する必要があります。