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.

[参考译文] CCS/66AK2H12:66ak2h12

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/878215/ccs-66ak2h12-66ak2h12

器件型号:66AK2H12

工具/软件:Code Composer Studio

你(们)好

我 要配置共享内存(MSMCRAM)。

我正在使用多核处理器 i.e、我想使用两个内核 我有两个不同的项目、 一个在 core_0中、另一个在 core_1中、  在 CORE_0中、有一些 数据应该在 CORE_1中使用、同样、数据被 CORE_0使用 、因为我使用 MSM RAM 从两个处理器访问数据。

2.在数据表中为从 0XC000000到 C5FFFFF 的 MSMRAM 定义了地址是否可以 使用指针来使用该内存? 或者我应该 配置任何其他寄存器吗?

3.我 正在直接使用地址、但 两个内核中的该地址未提取数据、我是否应该在.cfg 文件中配置 MSM 的任何存储器? 和.c 自拍?

如果 您必须参考,是否有人可以建议我如何配置 MSMRAM 和共享任何示例项目?

谢谢、此致

KAVYA M U

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

    您好!

    MSMC 可由多个内核共享。 您可以使用指向地址的指针。 我们有一个多核演示:  

    " 3. 我 正在直接使用该地址、但 两个内核中的该地址未提取数据、我是否应该在.cfg 文件中配置 MSM 的任何存储器? 和.c fie?"=== >我不明白您的意思,最简单的方法是:

    *(unsigned int*) 0x0c00_0000 =值;//用于写入

    a = *(unsigned int*) 0x0c00_0000;//用于读取  

    此致、Eric

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

    你(们)好

    感谢您的回答、

    我正在对 CORE0 和 Core1 分配的地址值以及 在两个内核中配置的两个地址执行上述操作。

     例如:

    A=(unsigned int*) 0x0c00_0004;A=10;// CORE0

    B=(unsigned int*) 0x0c00_0008;// Core1

    *b=a+10;

    b 应该是正确的更改吗? 两个内核都应使用共享存储器的地址。

     0x0c00_0008此地址不变,我同时运行两个内核,我希望  再次在 CORE0中使用 b 数据。 数据在我的实际 情况下很大,这只是一个示例。

    如果我配置了错误、 请告诉我。

    谢谢、此致

    KAVYA M U

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

    您好!

    DSP 不会在不同主器件之间保持高速缓存一致性。 MSMC 缓存到 L1D。

    • 当您使用内核0写入值时、它会到达 L1D 高速缓存、而不是真正的 MSMC。 您需要为此执行缓存写回失效。
    • 对于内核1、如果您要使用 MSMC 地址中的值(读取它)、它会从其 L1D 高速缓存中读取。 您需要先使用缓存无效。

    此致、Eric  

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

    你(们)好

    感谢您的回答

      我附加了程序文件 Go 抛出、无法直接访问 MSM 存储器。如果我做了任何错误、或者必须配置 MPAX 寄存 器或任何高速缓存无效、请告知我必须执行写回使能操作。

    我使用 的是 core0和 core1,这两个内核都必须访问 MSM 内存并行,还有其他方法可以访问数据吗?

                                                                                          或

    我能否像 这样直接访问程序中使用的内存、从而帮助我解决这个问题?

    谢谢、此致

    KAVYA M U

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

    您好!

    0x0bc0、、、、、 区不是 MSMC 存储器、而是 MSMC 配置寄存器。 请将0x0c00_0000用于 MSMC 存储器。

    此致、Eric

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

    您好!

     很抱歉、我发送了不同的程序 、但 使用了相同的程序 0x0c00_0000该地址仅限 MSMC 存储器未配置、请告诉我必须在 Corepac C66xx 器件中配置任何 MPAX 寄存器吗?  

    这是一项即时要求,让我知道…

    谢谢、此致

    KAVYA M U

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

    您好!

    您可以在此处上传 CCS 项目吗? 然后描述您运行它的内核? 您期望的结果是什么?您看到了什么? 然后我可以查看它。

    此致、Eric  

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

    你(们)好

    感谢您的回答

    1) 1)这是我在这个 core0中调试的程序、我在程序 pic 中显示的存储器中被赋予了一个值 datatx = 5。

    2)  我在 core1中使用的相同数据 datatx 是 dataarx=datatx+5; 但  我无法从 core1访问的数据。 另请参见内存位置...

    这是一个程序、现在您能告诉我哪里出错了...

    谢谢、此致

    Kavya

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

    您好!

    CCS 存储器视图的框中选中了 L1D 高速缓存和 L2高速缓存。 您看到的是高速缓存中、而不是 MSMC 存储器中。 您可以取消选中这两个复选框以了解缓存内存和未缓存内存之间的区别。

    在内核 A 中、当您执行写入操作时、您需要执行以下操作:

    • *datatx=值;
    • 通过调用 CSL 函数:cache_wbInvL1d、缓存无效和写回

    在内核 B 中、当您想要读取数据(由内核 A 写入)时、您需要执行以下操作:

    • 通过调用 CSL 函数: cache_invL1d、缓存无效
    • a =*标志(此处的标志由内核 A 写入、缓存已失效和写回)

    有关 这些函数、请参阅 pdk_k2hk _4_0_xx\packages/ti\CSL\csl_cacheAux.h。

    此致、Eric