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:为 TDA2x (C66x)编译工程时出错

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/668200/ccs-getting-error-while-building-project-for-tda2x-c66x

工具/软件:Code Composer Studio

大家好、团队、

我正在研究 TDA2x 模块、必须将外部文件数据复制到缓存中、以便在 DSP 内核上更快地执行。

但在构建项目时、我遇到了错误。

我根据" (第34页)"中提到的文档修改了.cmd 文件最初我得到的结果是"cache_CE00"和 "cache_256KCACHE 未定义函数 cache_enableCaching 和 cache_setL2Size",因此后来我得到 的结果是 cache_CE00的硬编码值为128 (0x80:MAR128),而 cache_256KCACHE (0x7d00:MAR00) 32K 字节),编译后,我得到的结果如下:  

"错误#10234-D:未解析的符号仍然存在
错误#10010:在链接期间遇到错误;"test_sobre el_kernel_dsp.out"未生成"

我还尝试配置 L1D 和 L1P、但结果相同。

我已在.c 文件中包含以下文件:

#include
#include

#include

在属性中添加了 pdk/packages 目录的路径。

上述添加的文件是否正确,或者我需要在.c 中添加更多文件?

我使用的是 PDK 版本"pdk_01_08_00_16"、

我正在 Ubuntu 系统14.4、CCS7.3、TDA2x、VISION SDK 3.1上进行测试

此外、我检查了不同的 lnk_dsp.cmd 文件、但得到的结果相同。

请帮我或给我一些指针,以便我可以继续 !!

此致、

普里塔姆

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

    您好、Prittam、

    您能否查看头文件:pdk\packages/ti\cSL\arch\c66x\dsp_icfg.h、了解用于设置 DSP 缓存的 API。

    您应该查看使用这些 API 启用 DSP 缓存的示例是 pdk\packages/ti\cSL\examples\XMC_MPU\XMC_MPU_TEST_APP\XMC_MPU_app.c

    一个示例 API 用法是  

    DSPICFGCacheEnable (SOC_DSP_ICFG_base、
    DSPICFG_MEM_L1D、
    DSPICFG_Cache_size_L1_disabled);
    DSPICFGCacheEnable (SOC_DSP_ICFG_base、
    DSPICFG_MEM_L1P、
    DSPICFG_cache_size_L1_32K);
    DSPICFGCacheEnable (SOC_DSP_ICFG_base、
    DSPICFG_MEM_L2、
    DSPICFG_cache_size_L2_64K);

    此外、请确保已正确设置 MAR 寄存器、以使地址区域可缓存。 (API: DSPICFGSetMAR)

    谢谢、此致、

    Piyali

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

    非常感谢你的更新 !!!
    我从您建议的参考文件中修改了我的源文件、但仍然得到相同的结果。
    我使用 DSPICFGSetMAR 设置 MAR 区域可缓存、并将 L2设置为256K。
    由于我要在高速缓存存储器上复制数据、我已将所有存储器段分配给 L2。
    在上述配置中是否缺少任何内容?

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

    当您访问要驻留在高速缓存中的存储器区域并且正确设置了 MAR 和 L2CFG 时、硬件会自动将高速缓存行中的数据"复制"到高速缓存中。 当您超出缓存行时、将从该存储器位置提取下一个缓存行。

    您可以通过查看 CCS 存储器窗口来验证这一点。 当高速缓存行位于 L2、L1D 或 L1P 中时、它将以不同于 DSP 视图的颜色对数据高速缓存行进行着色。 (请参阅 www.ti.com/.../sprac17b.pdf 中的4.3 Memory and Cache 视图

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

    e2e.ti.com/.../1768.FIles.zipHiPiyali、

    很抱歉耽误你的回答。

    在进行与缓存相关的更改后、CPU 不会更改周期。

    我还共享了用于工程的代码修补程序和.cmd 文件。

    您能否建议我对代码进行任何更改、以便 CPU 只需最少的周期数??

    此致、

    普里塔姆

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

    您共享的代码不会配置 MAR。 请确保您已正确设置 MAR 寄存器、以使地址区域可缓存。 (API:DSPICFGSetMAR)。

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

    e2e.ti.com/.../8231.FIles.zipHiRishabh、

    在我之前与您共享的代码补丁中、我错过了在 main.c 中添加 API 调用(DSPICFGSetMAR)

    请查找随附的更新文件。

    此致、

    普里塔姆

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

    将高速缓存设置为写入、其效果与未启用高速缓存一样好。
    您能否尝试 DSPICFG_MAR_PCX 或 DSPICFG_MAR_PFX 并检查您是否获得了性能改进。

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

    您是否能够解决此问题?

    谢谢、此致、
    Piyali