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.

[参考译文] Linux/AM3352:如何在 DTS 文件中为新过程添加 EDMA 部件 OR-SDK-04.02.00.09

Guru**** 2550300 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/766563/linux-am3352-how-to-add-edma-part-in-dts-file-for-the-new-proceesor-sdk-04-02-00-09

器件型号:AM3352
Thread 中讨论的其他器件:WL1835

工具/软件:Linux

您好、TI 专家

以前的定制板在 SDK08.00.00.00上可以正常工作、现在我想使用新的 SDK04.02.00.09。 但在添加对 FPGA 的支持时会出现一些困难、FPGA 通过 GPMC 接口连接到 CPU。 我不知道如何在 DTS 文件中添加 EDMA 部件以通知内核 XDMA_EVENT_INTR2 应用作外部触发器。  我只会看到与 mmc3器件相关的一些内容。 因此、我尝试按如下方式修改该器件。  

mmc3{(&M)

/*这些位于纵横制上,并在中进行了概述
 Xbar-event-map 元素*/
 DMA =<&EDMA_Xbar 12 0 1
 EDMA_Xbar 13 0 2
 EDMA_Xbar 20 0 29
 EDMA_Xbar 21 0 30>;
 dma-names ="TX"、"Rx"、"FPGA-TX"、"FPGA-Rx"
 状态="正常";

但它似乎不起作用、我在运行代码时获得此日志。 我该怎么办?  

[145.367540] EDMA 49000000.EDMA:将 EDMA 通道23用于虚拟通道21 (SW 触发器)

顺便说一下、内核如何解析 EDMA_Xbar 语句?

此致

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

    对此主题有任何建议吗?

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


    请参阅以下 e2e 线程:

    e2e.ti.com/.../2779242
    e2e.ti.com/.../516225
    e2e.ti.com/.../579235
    e2e.ti.com/.../564850

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

    您好、Pavel

    感谢您的回复。 如果使用了 EDMA_Xbar 说明、则应使用哪个 DMA 通道分配函数? 似乎有两个类似的函数。

    DMA_Request_CHAN ()和 DMA_Request_channel ()。

    1.如果选择 dma_request_channel(),如何设置 dma_filter_fn 参数?  

    2.如果选择了 dma_request_chan (),如何获取设备参数(第一个参数)?

    DMA =<&EDMA_Xbar 12 0 1
     EDMA_Xbar 13 0 2
     EDMA_Xbar 20 0 29
     EDMA_Xbar 21 0 30>;
     dma-names ="TX"、"Rx"、 "FPGA-TX"、"FPGA-Rx";

    此致

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


    EDMA 纵横制驱动器和文档位于以下位置:

    Linux-kernel/Documentation/devicetree/bindings/Dma/ti-dma-crossbar.txt
    linux-kernel/drivers/dma/ti/dma-crossbar.c

    EDMA 驱动程序和文档位于以下位置:

    Linux-kernel/Documentation/devicetree/bindings/Dma/ti-edma.txt
    linux-kernel/drivers/dma/ti/edma.c

    对于 ti、am335x-edma-crossbar:DMA 参数对于客户端的含义:
    DMA =<&EDMA_Xbar 12 0 1>;其中<12>是 DMA 请求编号、<0>是应分配事件的 TC、<1>是交叉开关中的多路复用器选择。
    使用多路复用器0时、可直接从 EDMA 节点请求 DMA 通道。

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

    很抱歉,我不太理解你的意思。 我有两个问题

    1.以下器件树部分是否正确配置了 XDMA_EVENT_INTR2引脚作为 DMA 请求引脚。 <30>是 pi_x_dma_event_intr2事件交叉开关的多路复用器选择。

    DMA =<&EDMA_Xbar 12 0 1
    EDMA_Xbar 13 0 2
    EDMA_Xbar 20 0 29
    EDMA_Xbar 21 0 30>;
    dma-names ="TX"、"Rx"、"FPGA-TX"、"FPGA-Rx";

    2.是否有任何有关使用 dma_request_chan ()和 dma_request_channel()的示例客户端驱动程序


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

    我看到您将此线程标记为已验证。 您是否仍然需要有关最新问题的答案?

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

    大家好、Pavel

    实际上是的、仍然存在一些问题。 我发现、默认情况下、对于 am33xx.dtsi 中的 EDMA、通道20和通道21是 memcpy 通道。
    因此、我对该配置进行一些更改。 通道8和通道9如下所示。

    mmc3{(&M)
    865 /*这些位于纵横制上,并在中进行了概述
    866 Xbar-event-map 元素*/
    867 DMA =<&EDMA_Xbar 12 0 1
    868&EDMA_Xbar 13 0 2.
    869 EDMA_Xbar 8 0 29
    870 EDMA_Xbar 9 0 30>;
    871 dma-names ="TX"、"Rx"、"FPGA-TX"、"FPGA-Rx";
    872状态="正常";
    873 VMMC-SUPPLY =<&WLAN_en_reg>;
    874总线宽度=<4>;
    875 pinctrl-names ="默认值";
    876 pinctrl-0 =<&mmc3_PINS &WLAN_PINs>;
    877 ti、不可拆卸;
    878 ti、需要特殊 hs 处理;
    879 cap-power-off-card;
    880保持挂起时的电源;
    881.
    882 #address-cells =<1>;
    883 #size-cells =<0>;
    884 wlcore:wlcore@0{
    885 compatible ="ti,wl1835";
    886 reg =<2>;
    887 interrupt-parent =<&GPIO3>;
    888个中断=<17 IRQ_TYPE_LEVEL_HIGH_>;
    889};
    890};



    然后我检查了地址0x44E10F98处的 tpcc_evt_mux_8_11寄存器、该值为0x00000000。 但地址0x44E10F9C 处的 tpcc_evt_mux_12_15寄存器值是0x00000201、与此设置相关。 因此、这意味着通道8和9配置不正确。 如何将通道8和9设置为多路复用器29和多路复用器30?

    BR

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


    DMA =<&EDMA_Xbar 12 0 1
    EDMA_Xbar 13 0 2
    EDMA_Xbar 8 0 29
    EDMA_Xbar 9 0 30>;

    使用这些设置、您应该具有:

    TPCC_evt_mux_12_15[5:0] evt_mux_12 = 0x1
    TPCC_evt_mux_12_15[13:8] evt_mux_13 = 0x2

    TPCC_evt_mux_8_11[5:0] evt_mux_8 = 0x1D (29)
    TPCC_evt_mux_8_11[13:8] evt_mux_9 = 0x1E (30)

    但是、如果您使用的是旧版本的 TI PSDK、则 EDMA 交叉 abar 配置中存在错误、请参阅以下 e2e 线程以了解详细信息:

    e2e.ti.com/.../2785817

    此外、我认为 XDMA_EVENT_INTR 与 MMC3无关、因此您不应在 MMC3节点下进行配置。 您应该改为使用 GPMC/FPGA、请查看下面的 e2e 线程以了解详细信息:

    e2e.ti.com/.../564850

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

    您好、Pavel

    正如您所说、我将 EDMA 交叉开关配置移到了 GPMC/FPGA 器件。 但它没有使用、 tpcc_evt_mux_8_11[13:8] evt_mux_9 = 0x0、不是预期的0x1E (30)。 出什么问题了吗?

    FPGA@2.0{
    667兼容="FPGA";
    668 reg =<2 0 0x04000000>;/*CSn2*/
    669)
    670组宽度=<2>;// GPMC_CONFIG1_DEVICESSIZE (1)*/
    671.
    672 GPMC、突发写入;
    673 GPMC、突发读取;
    674 /*GPMC,burst-wrap;*/
    675 GPMC、同步读取;// GPMC_config1_READTYPE_SYNC *
    676 GPMC、同步写入;// GPMC_CONFIG1_WRITETYPE_SYNC *
    677 GPMC、clk-activation-ns =<20>;// GPMC_config1_CLKACTIVATIONTIME (2)*/
    678 GPMC、burst 长度=<16>;/* GPMC_CONFIG1_PAGE_LEN (2)*
    679 GPMC、mux-add-data =<0>;/* GPMC_CONFIG1_MUXTYPE (0)*
    680
    681 GPMC、sync-clk-ps =<20000>;/* CONFIG2 */
    68
    683 GPMC、cs-on-ns =<0>;
    684 GPMC、cs-rd-off-ns =<100>;
    685 GPMC、cs 断电 ns =<40>;
    686.
    687 GPMC、Adv-on-ns =<0>;/* CONFIG3 */
    688 GPMC、Adv-rd -关闭-ns =<0>;
    689 GPMC、Adv-wr-off-ns =<0>;
    690
    691 /*GPMC、Ad-rd-Off-ns =<20>;*/
    692/*GPMC、高级断电 ns =<20>;*/
    69
    694 GPMC、WE-ON-ns =<0>;/* CONFIG4 */
    695 GPMC、WE-OFF-ns =<40>;
    696 GPMC、OE-ON-ns =<0>;
    697 GPMC、OE-OFF-ns =<100>;
    69
    699 GPMC、page-burg-access-ns =<20>;/* config 5 */
    700 GPMC、ACCESS ns =<80>;
    701 GPMC、第周期-ns =<100>;
    702 GPMC、功率周期-ns =<60>;
    703 GPMC、wr 访问-ns =<20>;/*配置6 */
    704.
    705 GPMC、wr-data-mux-bus-ns =<20>;
    706
    707 /* GPMC、总线翻转-ns =<20>;*//* CONFIG6:3:0 = 4 */
    708 GPMC、cycle2cycle-samecsen;// CONFIG6:7 = 1 *
    709 GPMC、cycle2cycle-delay-ns =<40>;/* CONFIG6:11:8 = 4 */
    710
    711 /*尚未使用 DMA 引擎,但我们可以在此处获取通道编号*/
    78.
    713 DMA =<&EDMA_Xbar 9 0 30>;
    714 dma-names ="FPGA-Rx";
    715 //DMA =<&EDMA 20.
    716 // EDMA 21>;
    717/dma-names ="TX"、"Rx";
    718 };

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您使用的是旧版本的 TI PSDK、则 EDMA 交叉 abar 配置中存在错误、请参阅以下 e2e 线程以了解详细信息:

    e2e.ti.com/.../2785817

    此致、
    帕维尔