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.

[参考译文] AM623:有关 AM6231 M 核程序和 DMA 冲突的问题

Guru**** 2481465 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1455897/am623-questions-about-am6231-m-nuclear-procedures-and-dma-conflicts

器件型号:AM623

工具与软件:

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

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

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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我们的域专家目前不在办公室,请预计响应时间会有所延迟。

    此致、

    Nitika

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您是否能够从原始/未修改的 TI SDK (哪个版本?)开始提供重新创建此项目的确切步骤。

    此致、Andreas

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我使用 ti-processor-sdk-linux-rt-am62xx-evm-08.06.00.42、 根据移植到 TF 卡的文档编译的图像和器件树、没有更改编译的源代码

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的、您使用的是 SDK 映像、唯一的修改与器件树相关。

    您能否以`dIFF`格式提供完整的器件树更改? 使用 插入->代码 功能、 这会使它更容易阅读和处理。

    此致、Andreas

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这是我现在正在使用的器件树

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的、让我看看我是否可以重新创建您报告的 M4远程内核执行问题 、然后再取回来。

    Andreas

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好、谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我尝试重新创建这一点,通过继续 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:~#
    

    您应该看到以下内容:

    1. 迁移到当前的 SDK v10.1、然后重新实施所做的更改。 目前我们不能再支持 SDKv8.6。 我甚至不使用我使用的 v9.3了。 这些更改将以相同的方式与 SDK v10.1一起使用。

    2. 如果要提高 SPI 性能、请考虑为两个 SPI 器件配置 DMA 的使用。 请参阅此处的 E2E 博文、它包含适用于2x SPI 从器件(具有 DMA 加速功能)的成熟解决方案:
      https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1425674/sk-am62-dma-transfer-is-not-working-with-spi0_cs1/5492317#5492317

    此致、Andreas

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的、谢谢