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/TMS320C6678:多核 ENV 中的 EDMA 初始化问题

Guru**** 2589245 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/638081/rtos-tms320c6678-edma-initialization-issue-in-multicore-env

器件型号:TMS320C6678

工具/软件:TI-RTOS

您好!

我正在尝试使用 EDMA3传输数据。 对于单核、我能够发送数据、而不会出现任何问题。

而当在多核环境中尝试时,情况并非如此。 我可以看到、EDMA 句柄(hedma)为 NULL、即、Edma3Init 返回 NULL (在内核1中)。

请查看以下详细信息:

->EDMA3_LLD_02_11_05_02、c6678正在使用中。

->最初只将 Core2用于 EDMA 传输,传输成功完成。

->尝试在2个内核(core1和 core2)上运行。 酷睿2句柄已正确初始化、传输正常。 内核1不工作、edma3Init 返回 NULL。

->目前为两个内核单独执行 Edma3Init,并将句柄存储在全局范围内。

您能否提供多核初始化示例?

EDMA#3 Init 句柄返回 NULL 的潜在原因是什么?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已将您的疑问转发给软件专家。 他们的反馈应发布在此处。

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

    我认为只有 DSP 内核0在多核环境中进行全局初始化。 edma3Init()在 EDMA LLD 的 sample_init.c 中实现。 您可能需要进入该步骤以查看错误/null 的返回位置。

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

    感谢您的回答。 我尝试了以下操作:
    如果 edma3Init()仅从核心#0调用,并且处理程序值(hEdma)存储在全局缓冲区中,则处理程序返回 NULL。
    2.尝试从所有内核调用 edma3Init(),然后 hEdma 除内核#1外有效。
    由于我们不使用 EVM (它是基于 Linux 的主机环境)、因此在当前环境中无法进行步进
    4.您能否提供一个在全部8个内核上运行 EDMA 的示例代码。
    5.我们的问题陈述是为什么 edma3Init 特别在核心1上失败?

    感谢你的帮助。

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

    "in the Linux env"===>如何在 DSP 上运行 EDMA 代码? 您是否意味着在某些 C6678内核上运行 Linux 并使用 Linux 主机将 EDMA 代码下载到其他内核? 是否有方法可以通过 JTAG 在 DSP 上直接运行 EDMA 来隔离 Linux、从而更轻松地进行调试?

    此致、Eric