環境
- ボード:FRDM-IMX93(i.MX93 11x11)
- BSP:Yocto Scarthgap、linux-imx-6.6.36-2.1.0(カーネルコミット 20d9F5efABDD),
MACHINE=imx93frdm, DISTRO=fsl-imx-xwayland
- センサ:Raspberry Pi カメラモジュールv2(Sony IMX219)、P6 MIPI-CSIコネクタに搭載
- デバイスツリー:純正のarch/arm64/boot/dts/freescale/imx93-11x11-frdm-imx219.dtso
概要
BSPはこのボード用にIMX219デバイスツリーオーバーレイとセンサを同梱しています
電源が入り、I2Cで正しく検出されます(チップIDは0x10読み0x0219)。しかし、
V4L2キャプチャパイプラインはフレームを一切出力しません。たどってみると、どうやら
下流のステージングカメラドライバーには3つの独立した問題があります。本線
ソニーのIMX219ドライバーは現代のV4L2サブ開発モデルに従っていますが、NXPのステージングは
CSI/ISIスタックは依然として古いov5640スタイルモデルを前提としています。
問題1 — メディアグラフの分解(「センサーレジスタが失敗」)。
drivers/staging/media/imx/imx8-media-dev.c: mxc_md_create_links()呼び出し
media_entity_call(センサ、link_setupなど)。メインラインのIMX219ドライバーは対応していません
実装.link_setup、したがって、呼び出しは-ENOIOCTLCMD (-515)を返し、次のように扱われます
致命的だ。センサー>CSIリンクは一度も作成されず、メディア機器全体が解体されます:
mx8-img-md: 登録センサーサブデバイス: imx219 2-0010 (1)
mx8-img-md: created link [mxc_isi.0]=> [mxc_isi.0.capture]
mx8-img-md: リンク [mxc-mipi-csi2.0] を作成しました=> [mxc_isi.0]
mx8-img-md: subdev_notifier_complete エラー終了
mxc-md 42800000.bus:camera:センサーレジスタが故障しました
MXC-MD:42800000のプローブ。バス:カメラエラー -515 で失敗しました
(ov5640 は ov5640.c のおかげで動作します)(何もしない.link_setupを提供します。)
問題2 — streamonが中止(「サブ開発者に失敗s_power呼べ!」)
ドライバ/ステージング/プレスリリース、製品ニュース/IMX/IMX8-ISI-cap.C: mxc_isi_cap_streamon() が呼び出します
v4l2_subdev_call(src_sd, core, s_power, 1) は、失敗を致命的として扱います。imx219は
ランタイム PM であり、非推奨の .s_power を実装していません。そうするとコールが戻ってきます
-ENOIOCTLCMDとストリーミング中止:
mxc_isi.0:サブデバイスs_powerの呼び出しに失敗しました!
(ov5640 は ov5640.c のおかげで動作します).s_power を提供します。
問題3 — CSIがYUV422にハードコードされているが、RAW10を解析できない(リンクはあるがフレームは0)
ドライバ/staging/media/imx/dwc-mipi-csi2.c は実質的に YUV422 専用です:
- dwc_csi2h_formats[]はSBGGRのバイヤーコードのみを記載しており、SRGGBは含まれていません(IMX219はSRGGB10です)。
したがってfind_csi2h_format()は失敗し、フォーマットは静かにYUYVに戻ります。
- dwc_mipi_csi2_set_fmt() は CSI2H-> フォーマットを保存しないため、disp_mix_gasket_config()
デフォルトのYUYVコードが表示されます。
- dwc_mipi_csi2_param_init() ハードコード ipi_cfg->data_type = DT_YUV422_8。
CSI は誤ったデータタイプを報告し、すべてのフレームがキャプチャされるにもかかわらず、フレームはキャプチャされません。
リンクが有効で、VIDIOC_STREAMONが0を返します。
mxc-mipi-csi2.0: フォーマット: 0x2008 <- YUYV; 期待値: 0x300f (SRGGB10)
私たちが成功した理由(ご検証のため)
(a) imx8-media-dev / imx8-isi-cap に欠落したオプション操作を処理した後
(-ENOIOCTLCMD、link_setup / s_power)非致死的であり、(b)教えること
dwc-mipi-csi2 について SRGGB8/10/12(交渉されたフォーマットを保存し、IPIを設定する)
data_typeから)パイプラインは正しく表示されます:- MXC-mipi-csi2.0:フォーマット: 0x300f
imx219 -> mxc-mipi-csi2.0 -> mxc_isi.0-> /dev/video0
約27fps、ライブフレームをキャプチャ。
修正(a)はセンサーに依存しず、このスタック上の現代的なメインラインセンサーにも役立ちます。
修正(b)はCSIにRAWバイヤーサポートを追加します。
副次的な注意点 — モジュールのロードオーダー
新規起動時にも、imx8_media_dev が実行されることによりグラフの登録に失敗します。
imx219モジュールがロードされる前に非同期通知器がロードされます。ビデオノードが登録され、
その後、登録が解除された。マニュアル「modprobe -r imx8_media_dev imx219; modprobe imx219;」
「modprobe imx8_media_dev」を実行すると、それが再構築されます。ソフト依存関係/ロード順序のヒントがあれば、
既成概念にとらわれずに仕事をする。
質問
1.IMX219 はこの BSP の FRDM-IMX93 で公式にサポート/検証されたカメラですか、
意図された/検証済みのパスは、AP1302 ISPモジュールですか?出荷されたimx219.dtso
bare-IMX219は動作するはずだと示唆している。
2. 上記の3つの動作は、修正を受け入れるバグとみなされますか、それとも
推奨される構成や、動作確認済みの構成で、私たちが見落としているものはありますか?
3.もしお役に立てるようでしたら、パッチをクリーンなコミットとして共有させていただきます。
ありがとう!
FRDM-i.MX93 #IMX219 RPI-CAM-MIPI
こんにちは、
ご連絡ありがとうございます。ソフトウェアチームに確認し、後のBSPで修正があるか再度確認します。できるだけ早く更新します。
よろしくお願いいたします。
アルド。