こんにちは
A53コア用にカーネルを5.15から6.18に移植する際、rpmSGの問題に直面しています。
# dmesg -T |grep -Ei 'rpmsg|rproc'
[2024年10月8日火曜日 15:42:28] IMX RPMSGドライバーが登録されました。
[2024年10月8日火曜日 15:42:29] imx-rproc imx8mn-cm7: error -ENOENT: クロックを有効にしられませんでした
[2024年10月8日火曜日 15:42:29] imx-rproc imx8mn-cm7: ドライバ付きプローブ imx-rproc エラー -2 で失敗
[火曜日 2024年10月8日 15:42:29] remoteproc remoteproc0: releaseingimx-rproc
このエラーが出ます。このエラーをオンラインで検索したところ、DTSにダミークロックを追加するように求められました。
IMX8Mn-CM7 {
互換性 = "FSL,IMX8mn-CM7";
RSC-DA = <0xb8000000>;
クロック = <&CLK IMX8MN_CLK_DUMMY>;
mbox-names = "tx", "rx", "rxdb";
mbox = <μ 0 1
&ミュー 1 1
μ 3 1>;
memory-region = <&vdevbuffer>, <&vdev0vring0>, <&vdev0vring1>, <&rsc_table>;
status = "OK";
}
これが唯一の変更なのでしょうか?この変更の理由は何ですか。
よろしくお願いいたします
ヤドゥナス・R
いいえ、私は clocks = <&clk IMX8MN_CLK_DUMMY>; を唯一の必要な変更として扱うつもりはありません。これで即時の-ENOENT: Failed to Enable Clock probe failureを乗り越えられるかもしれませんが、i.MX8M Nanoの場合、重要な要件はLinuxがM7ファームウェアを読み込み/起動する際にCortex-M7のルートクロックが有効のままであるということです。
理由:
したがって、この変化には二つの意味が考えられます。
クロックラインだけでなく、remoteproc/rpmsg DTSの残りの部分も確認してください。
imx8mn-cm7 {
互換性 = "fsl,imx8mn-cm7";
rsc-da = <...>;
clocks = <&clk IMX8MN_CLK_DUMMY>; /* または、お使いのBSPで使用される正しいM7クロック */
mbox-names = "tx", "rx", "rxdb";
mboxes = <μ 0 1>, <μ 1 1>, <μ 3 1>;
memory-region = <&vdevbuffer>, <&vdev0vring0>, <&vdev0vring1>, <&rsc_table>;
status = "オーケー";
};
メモリ領域リストは重要で、AN5317ではこのプロパティがファームウェアELFで使用されるメモリセクションを含まなければならず、remoteprocがsysfsから再ロードできるとされています。
推奨されるチェックパス:
ダミークロックは即時の-ENOENTプローブ故障を説明しますが、実際の設計要件はi.MX8MN M7のルートクロックを有効にしておくことです。DTSだけで十分かどうかは、6.18 BSPクロックドライバーがすでにそのクロックを保持しているかどうかに依存します。