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.

[参考译文] TMS320C6657:高速缓存、MSMC 等

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/671064/tms320c6657-cache-msmc-and-so-on

器件型号:TMS320C6657

您好论坛、  

我在获取应用程序中的正确数据时遇到一些困难。

在我的应用程序 Core 1中、仅使用 uPP Datatransfers。 缓冲区按以下方式进行全局定义:

#pragma DATA_SECTION (rcvBuffer_0、".far:uPPrcv_0");
#pragma DATA_ALIGN (rcvBuffer_0、cache_L2_LINESIZE);
int16_t rcvBuffer_0[DATASIZE]; 

app.cfg 中的段是定义的:

Program.sectMap[".far:uPPrcv_0"]="MSMCSRAM"; 

在内核0上、我有缓冲器  

extern far Int16_t rcvBuffer_0[DATASIZE]; 

内核0还通过以太网将这些缓冲器传输到 PC (UDP)。

为此、我有另一个用于报头、校验和、数据等的缓冲器。

至少将该缓冲区复制到描述符中、如给定的 Benchmarc 示例中所示。

问题1:我是否还必须在内核0上使用用于 upp-DMA 的全局地址来实现 MSMC-RAM?

Q2:在 Core_1上:在写入 uppDescriptor 之前、我使 L2和 L1D 无效、当数据传输完成时、我执行 CacheWbL2和 L1、对吧?

Q3:在 Core_0上:在复制数据之前(始终使用 memcpy ())、我必须先执行 CacheWbL2和 L1、对吧?

Q4:在 Core_0上:在发送描述符之前、我必须先 CacheWbL2和 L1、对吧?

总计、我有3个缓冲器。 Core_1写入 Buf0、此时 Core_0从 Buf2读取、依此类推。

行为是数据会在一段时间后冻结、但不会定期冻结。

非常感谢您的回答。

此致

Martin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    团队将收到通知。 他们将直接在此处发布反馈。

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

    非常感谢 茨韦托林。

    我的问题仍然存在,我期待得到任何答案。

    BR

    Martin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我有一些进一步的信息:
    在 Platform Manager (平台管理器)中、我将缓存编辑为大小:
    L1D 16k
    L1P 16k
    L2 512K

    在 ROV 中、我在内核0上看到该值。
    如果我连接到 Core_1并查看 ROV、我会看到:
    L1P 32k
    L1D 32k
    L2 0k
    如何解释这种行为?

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

    为每个内核配置 L1D、L1P 和 L2高速缓存大小。 最好的方法是检查它的值、您可以从寄存器中读取它们。 请查看 corepac 用户指南 www.ti.com/.../sprugw0c.pdf L1PCFG、L1DCFG、L2CFG。

    此致、Eric