S32G274 デュアルコア起動後のCAN通信のデバッグ 現在、M コアと A コアの両方が同時に起動された場合の CAN 通信をデバッグしています。CAN ピンは PC_11 と PC_12 です。M7コアのAPPプロジェクトでFLEXCANを適用する必要があるため、AコアのLinuxのBSP35.0でllce_can0の設定を無効にしました(図を参照)。しかし、現象は、A コアが Uboot にあるときは M7 コアの flexcan は正常に通信しているのに、A コアが Linux に入ると M7 コアの flexcan が正常に動作しなくなるというものです。A コアの他にどこを変更する必要があるか教えてください。 Re: S32G274 Debugging CAN Communication After Dual-Core Boot-up 上記の指示に従って変更を加えました。しかし、A コアが Linux システムに入った後も、M コアの CAN0 通信は依然として異常です。 s32g274ardb2 ログイン: root root@s32g274ardb2:~# ls /sys/firmware/devicetree/base/soc/siul2@4009c000/siul2-pinctrl@4009c240/llce_can0_pins ls: '/sys/firmware/devicetree/base/soc/siul2@4009c000/siul2-pinctrl@4009c240/llce_can0_pins' にアクセスできません: そのようなファイルまたはディレクトリはありません root@s32g274ardb2:~# ls /sys/firmware/devicetree/base/soc/llce@43a00000/llce_can0/ ls: '/sys/firmware/devicetree/base/soc/llce@43a00000/llce_can0/' にアクセスできません: そのようなファイルまたはディレクトリはありません Re: S32G274 Debugging CAN Communication After Dual-Core Boot-up こんにちは@sdx111さん、
Linux で LLCE can0 ピンの使用を削除するには、次の変更を適用してください。
diff --git a/arch/arm64/boot/dts/freescale/s32g.dtsi b/arch/arm64/boot/dts/freescale/s32g.dtsi
index de9caffb3ca1..ff02f046676b 100644
--- a/arch/arm64/boot/dts/freescale/s32g.dtsi
+++ b/arch/arm64/boot/dts/freescale/s32g.dtsi
@@ -379,18 +379,18 @@ llce_can_logger15: llce_can_logger15 {
status = "okay";
};
- llce_can0: llce_can0 {
- compatible = "nxp,s32g-llce-can";
- mboxes = <&llce_mb S32G_LLCE_CAN_CONF_MB 0>,
- <&llce_mb S32G_LLCE_CAN_RX_MB 0>,
- <&llce_mb S32G_LLCE_CAN_TX_MB 0>;
- mbox-names = "config", "rx", "tx";
- clocks = <&clks S32G_SCMI_CLK_LLCE_CAN_PE>;
- clock-names = "can_pe";
- pinctrl-names = "default";
- pinctrl-0 = <&llce_can0_pins>;
- status = "disabled";
- };
+// llce_can0: llce_can0 {
+// compatible = "nxp,s32g-llce-can";
+// mboxes = <&llce_mb S32G_LLCE_CAN_CONF_MB 0>,
+// <&llce_mb S32G_LLCE_CAN_RX_MB 0>,
+// <&llce_mb S32G_LLCE_CAN_TX_MB 0>;
+// mbox-names = "config", "rx", "tx";
+// clocks = <&clks S32G_SCMI_CLK_LLCE_CAN_PE>;
+// clock-names = "can_pe";
+// pinctrl-names = "default";
+// pinctrl-0 = <&llce_can0_pins>;
+// status = "disabled";
+// };
llce_can1: llce_can1 {
compatible = "nxp,s32g-llce-can";
@@ -615,23 +615,23 @@ usbotg: usb@44064000 {
};
&pinctrl {
- llce_can0_pins: llce_can0_pins {
- llce_can0_grp0 {
- pinmux = ;
- input-enable;
- slew-rate = ;
- };
-
- llce_can0_grp1 {
- pinmux = ;
- output-enable;
- slew-rate = ;
- };
-
- llce_can0_grp2 {
- pinmux = ;
- };
- };
+// llce_can0_pins: llce_can0_pins {
+// llce_can0_grp0 {
+// pinmux = ;
+// input-enable;
+// slew-rate = ;
+// };
+//
+// llce_can0_grp1 {
+// pinmux = ;
+// output-enable;
+// slew-rate = ;
+// };
+//
+// llce_can0_grp2 {
+// pinmux = ;
+// };
+// };
llce_can1_pins: llce_can1_pins {
llce_can1_grp0 {
diff --git a/arch/arm64/boot/dts/freescale/s32g274a-bluebox3.dts b/arch/arm64/boot/dts/freescale/s32g274a-bluebox3.dts
index 0247b542f98b..fe93303e8ca9 100644
--- a/arch/arm64/boot/dts/freescale/s32g274a-bluebox3.dts
+++ b/arch/arm64/boot/dts/freescale/s32g274a-bluebox3.dts
@@ -91,9 +91,9 @@ &llce_boot_status {
status = "okay";
};
-&llce_can0 {
- status = "okay";
-};
+//&llce_can0 {
+// status = "okay";
+//};
&llce_can1 {
status = "okay";
diff --git a/arch/arm64/boot/dts/freescale/s32gxxxa-rdb.dtsi b/arch/arm64/boot/dts/freescale/s32gxxxa-rdb.dtsi
index afe8a5cea3e1..ada20f67f2d7 100644
--- a/arch/arm64/boot/dts/freescale/s32gxxxa-rdb.dtsi
+++ b/arch/arm64/boot/dts/freescale/s32gxxxa-rdb.dtsi
@@ -168,9 +168,9 @@ &llce_boot_status {
status = "okay";
};
-&llce_can0 {
- status = "okay";
-};
+//&llce_can0 {
+// status = "okay";
+//};
&llce_can1 {
status = "okay";
その後、以下のように llce can0 ノードとピンを一覧表示すると、llce_can0 は表示されないはずです。
root@s32g274ardb2:~# ls /sys/firmware/devicetree/base/soc/siul2@4009c000/siul2-pinctrl@4009c240/llce_can0_pins
ls: cannot access '/sys/firmware/devicetree/base/soc/siul2@4009c000/siul2-pinctrl@4009c240/llce_can0_pins': No such file or directory
root@s32g274ardb2:~# ls /sys/firmware/devicetree/base/soc/llce@43a00000/llce_can0/
ls: cannot access '/sys/firmware/devicetree/base/soc/llce@43a00000/llce_can0/': No such file or directory
対照的に、これらのノードがある場合、上記のようにリストすると、デバイス ツリーのサブノードが表示されます。
変更後に M7 で CAN0 を使用できるかどうかをお知らせください。 Re: S32G274 Debugging CAN Communication After Dual-Core Boot-up こんにちは@sdx111さん、
わかりました。設定をテストして、またご連絡します。
よろしくお願いします。 Re: S32G274 Debugging CAN Communication After Dual-Core Boot-up こんにちは@sdx111さん、
あなたが言及したような動作は見たことがありません。PFE と CAN が相互に干渉しているのです。ただし、 pinctrl-s32g.c#L430で、問題を解決できるかもしれない変更をいくつか行いました。問題のあるピンのある行を削除しました。あなたの場合は次の 2 つの行になります。
S32CC_PINCTRL_PIN(S32G_MSCR_PC_11),
S32CC_PINCTRL_PIN(S32G_MSCR_PC_12),
私は RDB2 の RGB LED に対応するピンでこのテストを実行しました。リストからそれぞれのピンを削除すると、ピンは「浮いた」状態のままになり、Linux の起動時に通常オフになる LED ではなく、わずかにオンになっている LED を確認できます。
そのテストを実行して、M7 コアで CAN0 ピンが正しく動作するかどうかを教えてください。
よろしくお願いします。 Re: S32G274 Debugging CAN Communication After Dual-Core Boot-up A の BSP35.0 の can0 と llcecan0 の両方の初期化コードを削除した後、M コアが PFE をロードしていないときに、M コアの can0 は正常に通信できるようになりました。しかし、/fsl-auto-yocto-bsp35.0/build_s32g274ardb2/conf/local.confに「DISTRO_FEATURES_append += 'pfe'」と「NXP_FIRMWARE_LOCAL_DIR = '/home/hhkj/linux3/fsl-auto-yocto-bsp35.0/firmware_bin/'」を追加した場合、つまり、PFE が A コアにロードされた後、M コアがクラッシュしたようです。CAN0 と SGMII モードを使用する M コアでは PFEMAC0 と pfemca1 を適用し、PFEMAC2 の RGMII モードを使用する A コアでは PFEMAC2 を適用する必要があるため、M コアで CAN0 通信のみが実行されている場合、M コアに PFE のファームウェアをロードすると A コアの CAN0 通信に影響する理由を知りたいです。 Re: S32G274 Debugging CAN Communication After Dual-Core Boot-up 内部的に調査したところ、LLCE および PFE の使用時に制限は見つかりませんでした。Linux の起動前と起動後に次のレジスタが変化するかどうか確認できますか?
よろしくお願いします。 Re: S32G274 Debugging CAN Communication After Dual-Core Boot-up pinctrl-s32g.cに必要な変更を加えました指示に従ってファイルしてください。しかし、問題は依然として残っています。PFE ファームウェア (添付画像を参照) をロードするたびに、A コアが Linux システムに入った後、M7 コアの CAN0 が異常になります。PFE ファームウェアをロードしないと、A コアが Linux システムに入った後、M7 コアの CAN0 は正常に機能します。問題はどこで探せばいいのでしょうか?または、PFE ファームウェアをロードした後にテストしていただけますか? Re: S32G274 Debugging CAN Communication After Dual-Core Boot-up 1.私が観察した現象は、A コアが PFE をロードして起動した後、M7 の flexcan0 が正常に通信できないことです。具体的な状況としては、現時点では、cantest 上位コンピュータを使用して CAN メッセージを flexcan0 に送信すると、メッセージは正常に送信できますが、M7 の flexcan0 はまったく応答せず、外部に何も送信しません。したがって、この時点でM7がクラッシュしたと推測します。したがって、あなたが言及した 2 つのレジスターは間違いなく正常です。 2. Linuxを起動した後、関連するレジスタの値を読み取る方法を知りたいです。それは何のコマンドですか? 3.PFE ファームウェアのロードを有効にした後、プログラム内のどのファイルと機能が特定のロード プロセスになりますか?HIL1 を HIL0 に変更する必要がある場合、どうすればいいでしょうか? Re: S32G274 Debugging CAN Communication After Dual-Core Boot-up こんにちは@sdx111さん、
更新が遅くなって申し訳ありません。ここ数週間はオフィスを離れていました。まだ問題は解決していませんか?もしそうなら、最新情報を教えてください。
トピックを続けるために新しい投稿を作成されたことに気付きました。同僚が問題を解決した場合は、私にもお知らせください。
ありがとうございます。 Re: S32G274 Debugging CAN Communication After Dual-Core Boot-up こんにちは@sdx111さん、
分かりました。これについて新しい投稿を作成していただけますか?非アクティブ時間のため、投稿のステータスを追跡するために使用しているツールがこの投稿を閉じました。このトピックの続きであることを説明する新しい投稿を作成し、必要に応じて私にタグを付けて引き続き協力してもらうこともできます。
ご不便をおかけして申し訳ございません。 Re: S32G274 Debugging CAN Communication After Dual-Core Boot-up 今も変わりません。問題は解決されていません。
View full article