工具与软件:
我按如下方式修改了 SPI 的器件树、发现 m core 在启动后未启动。 请问原因是什么? 它是否与 DMA 相冲突? 我该如何修改它

启用 SPI 器件节点后的结果:

禁用 SPI 器件节点后的结果:

This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具与软件:
我按如下方式修改了 SPI 的器件树、发现 m core 在启动后未启动。 请问原因是什么? 它是否与 DMA 相冲突? 我该如何修改它

启用 SPI 器件节点后的结果:

禁用 SPI 器件节点后的结果:

我尝试重新创建这一点,通过继续 main_spi0 将器件树中的相关更改关联到标准 SDK v8.6器件树中 k3-am625-sk.dts 并且未看到您报告的问题、则 M4仍可启动并运行。 但是、未在下找到 SPI 器件 /dev/spidev * ,甚至驱动程序在那里,我修复了几个问题与您的设备树。 我也尝试了非 RT 8.6版,但有同样的结果。 v8.6 SDK 和 spidev 似乎有一些一般问题。
但是、一旦我切换到 SDK v9.3、同样的器件树更改便顺利进行、也不会有任何问题。 以下是更新/修复的更改、供您查看:
$ git show
commit 6224a7f594d872adc7c3306f93027953d47910c1 (HEAD)
Author: Andreas Dannenberg <dannenberg@ti.com>
Date: Sun Jan 5 23:09:44 2025 -0600
dts: sk-am62: Enable dual spidev slaves
diff --git a/arch/arm64/boot/dts/ti/k3-am625-sk.dts b/arch/arm64/boot/dts/ti/k3-am625-sk.dts
index f9b7fa2e8156..c40d241da4c0 100644
--- a/arch/arm64/boot/dts/ti/k3-am625-sk.dts
+++ b/arch/arm64/boot/dts/ti/k3-am625-sk.dts
@@ -366,3 +366,45 @@ K3_TS_OFFSET(12, 17)
>;
};
};
+
+&main_pmx0 {
+ main_spi0_clk_data_pins_default: main-spi0-clk-data-pins-default {
+ pinctrl-single,pins = <
+ AM62X_IOPAD(0x01bc, PIN_INPUT, 0) /* (A14) SPI0_CLK */
+ AM62X_IOPAD(0x01c0, PIN_INPUT, 0) /* (B13) SPI0_D0 */
+ AM62X_IOPAD(0x01c4, PIN_INPUT, 0) /* (B14) SPI0_D1 */
+ >;
+ };
+
+ main_spi0_cs0_pins_default: main-spi0-cs0-pins-default {
+ pinctrl-single,pins = <
+ AM62X_IOPAD(0x01b4, PIN_INPUT, 0) /* (A13) SPI0_CS0 */
+ >;
+ };
+
+ main_spi0_cs1_pins_default: main-spi0-cs1-pins-default {
+ pinctrl-single,pins = <
+ AM62X_IOPAD(0x01b8, PIN_INPUT, 0) /* (C13) SPI0_CS1 */
+ >;
+ };
+};
+
+&main_spi0 {
+ status = "okay";
+ pinctrl-names = "default";
+ pinctrl-0 = <&main_spi0_clk_data_pins_default &main_spi0_cs0_pins_default &main_spi0_cs1_pins_default>;
+ ti,spi-num-cs = <2>;
+ ti,pindir-d0-out-d1-in = <0>;
+
+ spidev@0 {
+ compatible = "rohm,dh2228fv";
+ spi-max-frequency = <500000000>;
+ reg = <0>;
+ };
+
+ spidev@1 {
+ compatible = "rohm,dh2228fv";
+ spi-max-frequency = <500000000>;
+ reg = <1>;
+ };
+};
由此、您可以看到一切都按预期运行:
root@am62xx-evm:~# uname -a Linux am62xx-evm 6.1.83-rt28-ti-rt-g96b0ebd82722 #1 SMP PREEMPT_RT Mon May 13 23:06:24 UTC 2024 aarch64 aarch64 aarch64 GNU/Linux root@am62xx-evm:~# dmesg | grep -i m4 [ 0.000000] OF: reserved mem: initialized node m4f-dma-memory@9cb00000, compatible id shared-dma-pool [ 0.000000] OF: reserved mem: initialized node m4f-memory@9cc00000, compatible id shared-dma-pool [ 4.083703] k3-m4-rproc 5000000.m4fss: assigned reserved memory node m4f-dma-memory@9cb00000 [ 4.090004] k3-m4-rproc 5000000.m4fss: configured M4 for remoteproc mode [ 4.090455] k3-m4-rproc 5000000.m4fss: local reset is deasserted for device [ 4.094554] remoteproc remoteproc0: 5000000.m4fss is available [ 4.099444] remoteproc remoteproc0: powering up 5000000.m4fss [ 4.099478] remoteproc remoteproc0: Booting fw image am62-mcu-m4f0_0-fw, size 55016 [ 4.170538] rproc-virtio rproc-virtio.1.auto: assigned reserved memory node m4f-dma-memory@9cb00000 [ 4.201675] remoteproc remoteproc0: remote processor 5000000.m4fss is now up root@am62xx-evm:~# cat /sys/kernel/debug/remoteproc/remoteproc0/trace0 [m4f0-0] 0.000783s : [IPC RPMSG ECHO] Version: REL.MCUSDK.09.02.01.01+ (May 12 2024 22:05:58): [m4f0-0] 0.052424s : [IPC RPMSG ECHO] Remote Core waiting for messages at end point 13 ... !!! [m4f0-0] 0.056004s : [IPC RPMSG ECHO] Remote Core waiting for messages at end point 14 ... !!! root@am62xx-evm:~# ls -al /dev/spi* crw------- 1 root root 153, 0 Jan 1 00:00 /dev/spidev1.0 crw------- 1 root root 153, 1 Jan 1 00:00 /dev/spidev1.1 root@am62xx-evm:~#
您应该看到以下内容:
此致、Andreas