こんにちは、
imx290センサモジュールを5.10.35ディストリビューションのimx8mplusに移植しています
カメラ センサ移植ガイドに従い、それに応じて vvcam のドライバを変更しましたが、ボードを起動すると、ドライバのプローブ機能が成功してもビデオノードが作成されません。
以下は、モジュールの読み込みが開始されたときからのログ メッセージです。
[ 6.208014] imx290_vvcam: ツリー外のモジュールをロードするとカーネルが汚染されます。
[ 6.224028] func:imx290_probe に入る
[ 6.318075] eimx290_vvcam 1-0042: 電源DOVDDが見つかりません。ダミーレギュレータを使用しています。
[ 6.339949] eimx290_vvcam 1-0042: 電源DVDDが見つかりません。ダミーレギュレータを使用しています。
[ 6.349485] eimx290_vvcam 1-0042: 電源AVDDが見つかりません。ダミーレギュレータを使用しています。
[ 6.382951] imx8_media_dev: モジュールはステージングディレクトリからのものであり、品質は不明です。警告が出されました。
[ 6.443331] viv_isp_init_moduleを入力
[ 6.448757] isp_hw_probeを入力
[ 6.453073] viv_dwe_init_module を入力してください
[ 6.456791] vvcam ispドライバが登録されました
[ 6.457080] dwe_hw_probe を入力してください
[ 6.461686] imx-sdma 30e10000.dma-コントローラ:ファームウェアが見つかりました。
[ 6.466027] vvcam デワープドライバを調査
[ 6.470277] imx-sdma 30bd0000.dma-コントローラ:ファームウェアが見つかりました。
[ 6.479325] imx-sdma 30bd0000.dma-コントローラ:ファームウェア4.6をロードしました
[ 6.839512] caamアルゴリズムが/proc/cryptoに登録されました
[ 6.896947] caam 30900000.crypto:/proc/cryptoに登録されたcaam pkcアルゴリズム
[ 6.896962] caam 30900000.crypto:rng-caamの登録
[ 6.898300] デバイス caam-keygen が登録されました
[ 6.921808] ランダム: crng init 完了
[ 6.921819] ランダム: レート制限により 7 件の urandom 警告が無視されました
[ 7.309550] EXT4-fs (mmcblk2p2): 順序付きデータ モードでマウントされたファイル システム。オプション: (null)
[ 7.383698] RTL8211F ギガビットイーサネット 30be0000.ethernet-1:01:添付のPHYドライバ[RTL8211Fギガビットイーサネット](mii_bus:phy_addr=30be0000。)
[ 7.475098] imx-dwmac 30bf0000.イーサネット eth1: PHY [stmmac-1:01] ドライバ [RTL8211F ギガビットイーサネット] (irq=POLL)
[ 7.487079] imx-dwmac 30bf0000.イーサネット eth1: セーフティ機能のサポートが見つかりません
[ 7.487093] imx-dwmac 30bf0000.イーサネット eth1: IEEE 1588-2008 アドバンスドタイムスタンプをサポート
[ 7.487260] imx-dwmac 30bf0000.イーサネット eth1: 登録されたPTPクロック
[ 7.487510] imx-dwmac 30bf0000.イーサネット eth1: phy/rgmii-id リンクモードの設定
[ 7.519467] 8021q: デバイス eth1 の HW フィルターに VLAN 0 を追加する
[ 8.143730] 監査: タイプ=1006 監査(1616581522.276:2):pid=639 uid=0 old-auid=4294967295 auid=0 tty=(none) old-ses=4294967295 ses=1 res=1
[ 8.192190] カメラサブデバイスのメディアエンティティパッドを初期化した後の戻り値 = 0
[ 8.196776] カメラサブデバイスの非同期登録後の戻り値 = 0
[ 8.204482] func:imx290_retrieve_capture_properties を入力します
[ 8.211560] imx290が検出されました。
lsmod: を実行すると、次のモジュールが作成されますが、vvcam_video モジュールはロードされません。
モジュールサイズ使用
vvcam_isp 65536 0
vvcam_dwe 28672 0
imx8_media_dev 20480 0
imx290_vvcam 147456 0
imx8_media_devモジュールを削除して再度modprobeを実行しようとしたところ
imx290_vvcam 147456 1
モジュールは利用されるようになりましたが、まだビデオ ノードは作成されていません。
vvcam_videoをmodprobeするとロードされますが、再び利用されません。
vvcam_ビデオ 40960 0
この問題の解決にご協力ください。
よろしくお願いします、
ムケシュ・クマール
私たちは、imx415 カメラ センサ用の vvcam カメラ ドライバの開発に取り組んでいます。カメラセンサ用のドライバを開発できますか?
こんにちは@quercuspau 、
ISPは現在正常に動作しています。もう問題はありません。その他の情報については、残念ながら開示できません。
よろしくお願いいたします。
K.
こんにちは@khang_letruong 、
私が読んだ限りでは、カメラを ISP で動作させることができたようですが、撮影した写真はどれくらいきれいですか?また、ある投稿で、NXP カメラ支援会社と契約し、xml および drv ファイルを受け取った後でも、画像キャリブレーション パラメータにまだ問題があると読みました。解決できましたか?質問させてください。カメラのパラメータを調整するために、サポート会社にどれくらいの費用がかかりますか?
BR
こんにちは@quercuspau 、
正直に言うと、OV2775 と OS08A20 の組み合わせは、Basler カメラと比較すると 2 つの優れたオープンな例です。
カスタム センサーが接続する I2C バス/ノード (および gpio、アドレスなどのプロパティ)、mipi-csi2 ノード (およびレーン数などのプロパティ) に関して、デバイス ツリーを調整する必要がある場合があります。
BR、
K
こんにちは@mukesh_kumar 、
おそらく、isp_media_server が使用する .drv を生成するための上位層 (isp-imx の ISI 層) と、必要なカーネル モジュールとセンサ自体のキャリブレーション構成をロードするためのスクリプトを参照しているのでしょう。ただし、これはこのチケットの最初の主題とは別の主題です。つまり、imx290_vvcam であるカーネル モジュールの正常なプローブに続いて /dev/videoX が作成されることです。
あなたが言及したリンクでの説明は、imx290 の .drv を含む上位層を実装するのに十分であると思います。
BR、
K.
こんにちは@khang_letruong
返信ありがとうございます。
実行スクリプトを確認したところ、imx290のサポートを追加するには、.drvファイルが必要です。ファイルと.xmlファイル
https://community.nxp.com/t5/i-MX-Processors/ISP-working-in-i-MX8M-Plus/mp/1307705のディスカッションを参考に、imx290 用のものを生成してみました。
しかし私が命令を出すと
./build-isp-all リリース フル
部分的にビルディングされており、.drv は生成されません必要なファイルが isi/drv/ フォルダーに追加されているにもかかわらず、imx290 のファイルがありません。
よろしくお願いいたします。
ムケシュ
こんにちは@mukesh_kumarと@khang_letruong
私が正しく理解していれば、ov2775 モジュールを参照として使用し、それを imx290 ドライバ レジスタ構成に適合させたことになります。デバイス ツリー カメラ側では変更は予想されません。ov2775 の同じ xml と drv を imx290 に使用しても大丈夫ですか?
よろしくお願いします。
こんにちは@quercuspau
センサ移植ガイドによると、ISPをサポートするセンサはvvcamに存在するはずですが、vvcamにはimx290ドライバが存在しません。
よろしくお願いいたします
ムケシュ
良い!
こんにちは、
すでに利用可能なimx290用ドライバーをispで使用することはできませんか?
imx8mpとISPで同じセンサを使用する予定です。しかし、まだ始めていない
BR
こんにちは@mukesh_kumar 、
まず、vvcamカーネルドライバ(imx290_vvcam.cから生成されたmx290_vvcam.ko)がたとえば、isp-imx フレームワーク内で run.sh スクリプトを実行すると、正しくロードされます。imx290 センサを追加するように変更することもできます。
次に、 dmesgに次の行があることを確認します (つまり、パイプライン I2C センサ -> mipi-csi2 --> isp が dts で適切にリンクされています)。
[ 7.884122] mx8-img-md: created link [imx290 1-001a] => [mxc-mipi-csi2.0]ov2775 などと同様に、プローブ関数内の以下のコード スニペットで、すべての V4L2 関数が正常に返されることを確認できます。
sd = &sensor->subdev;
v4l2_i2c_subdev_init(sd, client, &ov2775_subdev_ops);
sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
sd->entity.function = MEDIA_ENT_F_CAM_SENSOR;
sensor->pads[OV2775_SENS_PAD_SOURCE].flags = MEDIA_PAD_FL_SOURCE;
retval = media_entity_pads_init(&sd->entity, OV2775_SENS_PADS_NUM,
sensor->pads);
sd->entity.ops = &ov2775_sd_media_ops;
if (retval < 0)
goto probe_err_power_down;
retval = v4l2_async_register_subdev_sensor_common(sd);
if (retval < 0) {
dev_err(&client->dev,"%s--Async register failed, ret=%d\n", __func__,retval);
goto probe_err_entity_cleanup;
}Br、
K
こんにちは@khang_letruong
ご質問にご返信いただきありがとうございます。
私はisp_0ノードを使用しており、以下に示すようにデバイスツリーソースで同じものを有効にしています。
&カメラデバイス {
ステータス = "正常";
};
&isi_0 {
ステータス = "無効";
};
&isp_0 {
ステータス = "正常";
};
歪み補正 {
ステータス = "正常";
};
以前の返信で述べたように、Basler の場合にどのモジュール/サービスが vvcam_video モジュールを呼び出し、ov2775 および imx290 ではどのモジュール/サービスが呼び出されるのか理解できません。
よろしくお願いいたします。
ムケシュ
こんにちは@mukesh_kumar 、
おそらく、dts で &isp_0 ノードまたは &isp_1 ノードを有効にすることを忘れた可能性があります。
よろしくお願いいたします
K.
こんにちは、
ov2775_mipi_v3.cを参考にしました。前述の imx290 ドライバ用の vvcam に存在するファイル。
起動中にimx8mp-evk-basler.dtbファイルをロードすると、
vvcam_isp 65536 1
vvcam_dwe 28672 1
vvcam_ビデオ 40960 1
imx8_media_dev 20480 0
basler_camera_driver_vvcam 20480 0
モジュール ----> vvcam_video、vvcam_isp、vvcam_dwe がロードされ、カメラが接続されていない場合でも利用されます。
起動時にimx8mp-evk-ov2775.dtbファイルをロードすると、
モジュールをロードしています ----> デバイスがなくても、カメラがコネクテッドでなくても
vvcam_isp 65536 0
vvcam_dwe 28672 0
imx8_media_dev 20480 0
os08a20 32768 0
カメラがなくても、basler dtb の場合に vvcam_video をロードするトリガーがどれなのか理解できません。
私の場合、起動中に vvcam_video モジュールをロードできないので、これを理解するのを手伝ってください。
また、imx290 モジュールがロードされる前でも imx8_media_dev モジュールがロードされます。モジュール プローブが成功した後に imx8_media_dev をロードするにはどうすればよいでしょうか?
/etc/ フォルダーの下にファイルモジュールを作成し、順序を imx290、imx8_media_dev のままにしてみましたが、機能しませんでした。
誰かこの2つの問題を解決するのを手伝ってくれませんか。
ありがとう、
ムケシュ・クマール。
こんにちは、 @SiddavatamVishnuさん、
その質問は私宛てのものでしょうか?はい、そうであれば、私の答えは「はい」です。IMX415 用のドライバを開発できます。
ありがとう、そしてよろしく。
カン
ああ、返信ありがとう。
ISP チューニング プロセス、要件、環境の設定方法などに関する知識を共有していただけますか。
もう一度、返信をくれた@khang_letruongさん。
ヴィシュヌS