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.

[参考译文] AM5716:AM5716 通过 EDMA3 异常进行 DSP 内核 SPI 数据传输

Guru**** 2427060 points
Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1534401/am5716-am5716-dsp-core-spi-data-transfer-via-edma3-exception

器件型号:AM5716
主题中讨论的其他器件:SYSBIOS

工具/软件:

AM5616、sdk6.3

具有以下配置的客户

/*================= 驱动程序配置================ */

Var EDMA = xdc.loadPackage(“ti.sdo.EDMA3.drv.sample")“);
var drv = xdc.loadPackage(“ti.sdo.EDMA3.drv")“);
var rm = xdc.loadPackage(“ti.sdo.EDMA3.rm")“);

/*加载 SPI 软件包*/
var SPI = xdc.loadPackage ('ti.drv.spi');//实际上有问题、这里应该使用 ti.drv.spi.dma、对吧?
spi.Settings.enableProfiling = true;
spi.Settings.socType = socType;
Spi.Settings.useDma =“true";“;

Var Hwi= xdc.useModule('ti.sysbios.family.c64p.Hwi');
Var ECM= xdc.useModule('ti.sysbios.family.c64p.EventCombiner');
/*
*在此处启用事件组,并完成特定 GEM INTC 的 ISR 注册
*使用 EventCombiner_DispatchPlug () 和 Hwi_EventMap () API
*总共 128 个事件可以绑定到 4 组、每个组 32 个事件。在这里设置每个组连接的 DSP 矢量
*/

ECM.eventGroupHwiNum[0]= 7;//event:0-31
ECM.eventGroupHwiNum[1]= 8;//event:32-63
ECM.eventGroupHwiNum[2]= 9;//event:64-95
ECM.eventGroupHwiNum[3]= 10;//event:96-127

2 makefile:
CFLAGS +=-D DISPLAY -D LINKSTATE -D SPI_DMA_ENABLE

3 rtos\dsp1\bin\release\configuro\linker.cmd

-l“a /root/ti/pdk_am57xx_1_0_17/packages/ti/drv/spi/lib/am571x/c66/release/ti.drv.spi.ae66 //相同、在这里可以使用 ti.drv.spi.dma.ae66?
-l“/root/ti/edma3_lld_2_12_05_30E/packages/ti/sdo/edma3/drv/sample/lib/tda2xx-evm/66/release/edma3_lld_drv_sample.ae66
-l“/root/ti/edma3_lld_2_12_05_30E/packages/ti/sdo/edma3/drv/lib/66/release/edma3_lld_drv.ae66
-l“/root/ti/edma3_lld_2_12_05_30E/packages/ti/sdo/edma3/rm/lib/tda2xx-evm/66/release/edma3_lld_rm.ae66

----------------------------------------

在 Makefile 中  、如果注释掉了“-D SPI_DMA_ENABLE“、SPI 读取/写入正常、但如果打开此宏、TX 正常、而 RX 全部为“0",“,则、则可能的原因是什么?
另一方面、PDK 驱动程序中还有另一个关键问题、库 ti.drv.spi.dma、如果要使用 DMA 函数、是否需要连接 DMA 库?、但当我尝试链接 spi.dma 库 、在调用 spi_transfer 后找到时、它永远不会返回、可能是由 DMA 引起或没有触发 SPI 中断、如何使其在此处工作?

请帮助检查随附的文件并给出您的建议!

谢谢

  Semon

----------------------------------------

e2e.ti.com/.../sungrow_2D00_dsp_2D00_dma.c

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

    您好、

    我正在研究这个、我会回来给您。

    此致、

    Karthik  

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

    您好、

    这个线程似乎是重复的;相关的讨论仍在这个线程 https://e2e.ti.com/support/processors-group/processors---internal/f/processors---internal-forum/1533760/am5716-am5716-dsp-core-spi-transfers-exceptions-via-edma3 上进行 ,因此我将关闭这个线程。

    此致、

    Karthik

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

    您好、

    这个线程似乎是重复的;相关的讨论仍在这个线程 https://e2e.ti.com/support/processors-group/processors---internal/f/processors---internal-forum/1533760/am5716-am5716-dsp-core-spi-transfers-exceptions-via-edma3 上进行 ,因此我将关闭这个线程。

    此致、

    Karthik

    --------------------------------------------

    嗨、karthik

       以上链接是内部链接、客户看不到、

       请在这个公共链接中提供信息、

       这个问题是否有任何进展?

    此致

      Semon

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

    尊敬的  Semon:

    请参阅  MCSPI_Basic Example_Dma_ idkAM571x_c66xTestProject  PDK   SPI 传输的 DRVIER 示例、请告诉我们这是否有帮助。

    此致、

    Karthik

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

    非常感谢您的答复

    技术状态更新和问题

    当前进度:

    1 DSP 内核固件当前正在通过 Linux 的 Remoteproc 驱动程序加载。

    2 按照中的示例使用 ti.drv.spi.dma.ae66 库并初始化 EDMA3 实例:
    pdk_am57xx_1_0_17\packages\ti\drv\spi\test\am571x\c66\bios\MCSPI_Basic Example_Dma_idkAM571x_c66xTestProject.txt

    实施:

    uint8_t txBuffer[128]__attribute__((aligned (128)));
    uint8_t rxBuffer[128]__attribute__((aligned (128)));

    edma3Id = 0;
    gEdmaHandle =(EDMA3_RM_handle) edma3init (edma3Id、&edmaResult);


    当前问题:

    spi_transfer() 无限期阻止而不返回、并且在 TI 论坛中找到、将值 0x00240023 写入寄存器 0x4A002CBC(通过 devmem2)可以解决阻塞问题

    但是、rxBuffer 中所有接收到的数据都显示 0x00

    问题:

    什么可能导致接收到的数据 (rxBuffer) 中的所有零?

    除了 128 字节对齐之外、DMA 传输地址(TX/Rx 缓冲区)是否有任何其他要求?
    当前缓冲区地址:

    Tx 缓冲区:0x952fcb80

    RX 缓冲区:0x952fcb00

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引述 userid=“637115" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1534401/am5716-am5716-dsp-core-spi-data-transfer-via-edma3-exception/5912545 #5912545“]

    当前问题:

    spi_transfer() 无限期阻止而不返回、并且在 TI 论坛中找到、将值 0x00240023 写入寄存器 0x4A002CBC(通过 devmem2)可以解决阻塞问题

    但是、rxBuffer 中所有接收到的数据都显示 0x00

    问题:

    什么可能导致接收到的数据 (rxBuffer) 中的所有零?

    除了 128 字节对齐之外、DMA 传输地址(TX/Rx 缓冲区)是否有任何其他要求?
    当前缓冲区地址:

    Tx 缓冲区:0x952fcb80

    RX 缓冲区:0x952fcb00

    [/报价]

    您好、Liying

      您是否曾在 TI EVM 中试用过此示例?

       这个演示可以在 EVM 中正常工作吗?

    您好  Karthik

      您能否就此客户问题给出任何建议?

    此致

      Semon

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

    此问题通过将 RAM 更改为 OCMC-RAM 来解决

    案例已关闭

    ------------------------

    此致

      Semon