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.

[参考译文] RTOS/TDA2:DSP:使用 EDMA 的 DDR 和 L2SRAM 通信

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/759819/rtos-tda2-dsp-ddr-and-l2sram-communication-using-edma

器件型号:TDA2

工具/软件:TI-RTOS

您好!

我使用的是 Processor SDK 3.0。

我想使用 DSP 上的 EDMA 将数据从 DDR 传输到 L2SRAM、反之亦然。 要配置 EDMA、我将引用 framecopy 链接(frameCopyAlgoLocalDMA.c 文件)

从 DDR 传输数据时,dst 地址将是 L2SRAM (即0x40800000),因此我已将 EDMA 配置为:

----

#define DSP1_L2SRAM_ADDR   0x40800000

//将数据写入 l2sram 的配置

      pAlgHandle->pParamSet->destAddr  = DSP1_L2SRAM_ADDR;
       pAlgHandle->pParamSet->srcAddr   =(uint32) inPtr[0];
       pAlgHandle->pParamSet->srcBIdx   = inPit[0];
       pAlgHandle->pParamSet->destBIdx  = inPit[0];
       pAlgHandle->pParamSet->srcCIdx   = 0;
       pAlgHandle->pParamSet->destCIdx  = 0;
       pAlgHandle->pParamSet->aCnt      = lineSizeInBytes;
       pAlgHandle->pParamSet->bCnt      =身高/NUM_OF_SLICE;
       pAlgHandle->pParamSet->ccnt      = 1;//否 帧数
       pAlgHandle->pParamSet->bCntReload =身高/NUM_OF_SLICE;
       pAlgHandle->pParamSet->opt       = opt;
       pAlgHandle->pParamSet->linkAddr  = 0xFFFF;

//将数据写回 DDR 的配置
        pAlgHandle->pParamSet->destAddr  =(uint32) outPtr[0];
        pAlgHandle->pParamSet->srcAddr   = DSP1_L2SRAM_ADDR;
        pAlgHandle->pParamSet->srcBIdx   = outPit[0];
        pAlgHandle->pParamSet->destBIdx  = outPit[0];
        pAlgHandle->pParamSet->srcCIdx   = 0;
        pAlgHandle->pParamSet->destCIdx  = 0;
        pAlgHandle->pParamSet->aCnt      = lineSizeInBytes;
        pAlgHandle->pParamSet->bCnt      =身高/NUM_OF_SLICE;
        pAlgHandle->pParamSet->ccnt      = 1;
        pAlgHandle->pParamSet->bCntReload =身高/NUM_OF_SLICE;
        pAlgHandle->pParamSet->opt       = opt;
        pAlgHandle->pParamSet->linkAddr  = 0xFFFF;

------

问题是、

DDR 和 L2SRAM 之间没有传输(输出屏幕上没有数据显示)。 在 RUM 时间、我也不会遇到任何编译时间错误。 我检查了统计信息、SCI_DSP1_EDMA 不消耗、甚至使用了 L2SRAM。

我还需要做什么才能使其正常工作?

这是什么>> SCI_DSP1_EDMA

此致、

Kajal

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

    SCI_DSP1_EDMA 是指 DSP 的 EDMA。 每个 DSP 都有自己的 EDMA、也可以使用它来代替 EDMA。
    有关 DSP EDMA 的更多详细信息、请参阅 TRM。
    L2存储器可以拆分为 L2 RAM (正常的可寻址片上存储器)和 L2高速缓存。
    您能否检查什么是 L2CFG 以查看是否确实将 L2MODE 设置为0?

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

    您好 Rishabh、

    我将从何处获得 DSP EDMA 的 TRM?

    您能否检查什么是 L2CFG 以查看是否确实将 L2MODE 设置为0?

    >>在哪个文件中定义了 L2CFG 或 L2MODE?

    我在  >> vision_sdk/build/rtos/tda2xx/config_C66.Bld:78中获得了"L2MODE"一词:   l2Mode: "32K",您是指此文件吗?

    此致、

    Kajal

     

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

    您可以看到 TDA2 TRM。
    L2CFG 是 DSP 寄存器。
    请参阅 CorePac DSP 规范(TDA2 TRM DSP 章节中提供了链接)。

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

    您好 Rishabh、

    您能给我指出 DSP EDMA 的特定 TRM 吗?

    关于,

    >>在哪个文件中定义了 L2CFG 或 L2MODE?

    我在  >> vision_sdk/build/rtos/tda2xx/config_C66.Bld:78中获得了"L2MODE"一词:   l2Mode: "32K",您是指此文件吗?

    在哪里检查 L2MODE 是否设置为0?

    此致、

    Kajal

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

    TDA2 TRM 现已推出 :www.ti.com/.../sprui29f.pdf
    您应该阅读第5章以找到 MRs。

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

    设置 l2Mode:"0",不会得到任何数据传输。
    注意:-我已更改 DSP1的 VISION_SDK/build/rtos/tda2xx/config_C66.Bld 文件。
    您能否提出更多建议、需要做什么?

    此致、
    Kajal
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在 VISION SDK 级别,我能看到 L2CFG 寄存器的值吗? (通过 CCS 进行输出调试)
    此致、
    Kajal
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是否有更新??
    此致、
    Kajal
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Kajal、

    您使用什么 API 来进行传输?
    系统 EDMA 和本地 EDMA 都集成在 Vision SDK 中。
    请参阅 processor_sdk_vision_03_05_00_00\vision_sdk\links_fw\src\rtos\utils_common\src\utils_dma.c 和 processor_sdk_vision_03_05_00\vision_sdk\links_fw\src\rtos\utils_common\src\cfg_dma_cfg\utils_dma_c.dma_dma_c.1

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

    我想将 EDMA API 用于 DSP。
    我正在参考帧副本链接进行传输。
    该 API 与您建议的 API 有何区别?
    我应该使用哪一个?

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

    我建议您使用 Utils API。

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

    您好、Rishabh、

    utils API 是包装程序,内部 IT 调用 EDMA3LLD API。 ( 如果我错了、请更正我)

    您是否有任何关于建议 utils API 的问题?

    在本例中、我将直接调用 EDMA API、但仍不会进行数据传输。

    --------

    我在调试时注意到的另一件事是、

    1.当我使用 DST 地址作为 DSP2的 L2SRAM (即0x41000000)时、会发生数据传输(仅在 DSP1上执行)。

    2.反之亦然。

    这是怎么可能的?

    此致、

    Kajal

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

    似乎每个 DSP 都可以使用本地地址访问其 L2SRAM、而不是通过 L3访问。 因此、您可以使用 L3从 DSP1访问 DSP2的 SRAM、反之亦然。 一个确认这一点的简单实验是尝试使用内存浏览器从 DSP1访问 DSP1的 RAM。 您应该能够通过内部视图而不是 L3进行访问。

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

    您好、Rishabh、

    DSP1' SRAM:- 0x40800000

    DSP2的 SRAM:- 0x41000000

    上述本地地址是否正确? (我从映射文件中引用的这些地址>> mem_segure_define_BIOS.xs)

    如果不是、您可以将我指向我要获取本地地址地图的位置。

    此致、

    Kajal。

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

    0x40800000和0x41000000是 L3地址。 对于 DSP、本地地址为0x0080_0000。
    您可以在 TDA2 TRM 中看到 DSP 存储器映射一章。

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

    还有另一种方法可以执行 EDMA。 您可以使用 DSPx EDMA (每个 DSP 都有自己的)并提供本地地址(0x0080_0000)。

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

    您好 Rishabh、

    关于您的第二个帖子、

    0x40800000和0x41000000是 L3地址。 对于 DSP、本地地址为0x0080_0000。
    您可以在 TDA2 TRM 中看到 DSP 存储器映射一章。

     

    >>如果两个 DSP 都希望同时访问相同的 L2 SRAM 地址该怎么办?

    此致、

    Kajal

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

    使用本地地址、您将只能访问本地 DSP 的 L2 SRAM。
    要访问另一个 DSP 的 RAM、您需要使用 L3地址。

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

    是的、但两个 DSP 都有其本地存储器、因此会有两个不同的本地地址、对吧? (如果我错了、请更正)

    在 TRM 中、对于每个用户的本地存储器、我没有找到他们的地址。

    此致、

    Kajal

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

    两个 DSP 的本地地址相同。 如果您从 DSP1访问0x0080_0000、则将访问 DSP1的存储器、反之亦然。
    本地访问不会进入互连、因此同一地址没有问题。

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

    此问题得到解决后、请将相关帖子标记为"这已解决了我的问题"并关闭主题。

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

    您好 Rishabh,

    我还有一个疑问、

    您能否检查什么是 L2CFG 以查看是否确实将 L2MODE 设置为0?

    >>

    从何处可以获取 L1和 L2配置的这些寄存器值?

    只能看到 CCS、寄存器视图?

    如果想为它们设置位、我将如何执行此操作?

    此致、

    Kajal

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

    您能否在 CSL 文件夹中为 L2CFG 创建 grep?
    中定义了 API L2寄存器的\packages/ti\cSL\arch\c66x\dsp_icfg.h。

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

    我没有听到您的反馈、我假设您能够解决您的问题。
    如果不是、只需在下面发布回复(如果该线程由于超时而锁定、则创建新线程)。

    此致、
    Rishabh