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:禁用高速缓存不工作

Guru**** 2604225 points
Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/648749/rtos-tms320c6678-disable-cache-not-working

器件型号:TMS320C6678
Thread 中讨论的其他器件:SYSBIOS

工具/软件:TI-RTOS

您好!

我们正在 MSMC 存储器中定义的内核之间共享数据。 为了避免出现数据一致性问题并避免使用高速缓存函数(WB、wbInv、inv)、我们在 MSMC 中定义了一个重新映射到地址0xA1000000的段。 然后、我们使用相应的 MAR 寄存器禁用此部分的高速缓存。 但是、它不适用于在存储器(core0)中加载数据的内核。 下面是一些显示问题的屏幕截图。

您可以看到、地址0xA1xxxxxx 处的共享数据缓存(绿色)。 相应的 MAR 寄存器(MAR 161)配置正确。 MPAX 也是正确配置的,因为共享数据是初始化变量,如果 MPAX 错误,它将在启动期间崩溃(在_c_int00()中调用的_auto_init_elf 函数中)。

平台定义如下:

在我的 C6678.cmd 文件中、MSMCRAM_CACHE 和 MSMCRAM_NO_CACHE 部分仅由 Core0加载:

   /*共享代码和数据*/
   sharedCode   > MSMCSRAM_cache
   .sharedVar    > MSMCSRAM_NO_cache

其他内核包括.obj 文件、其中定义了这些数据、但未加载它们:

   /*共享代码和数据*/
   .sharedCode   > MSMCSRAM_cache、   type = NoLoad
   .sharedVar    > MSMCSRAM_NO_cache、type = NoLoad

数据一致性适用于除 Core0之外的所有其他内核。 其他内核看不到来自 Core0的数据、而 Core0看不到来自其他内核的数据。

我们使用的是 SYSBIOS 6.46.05.55、XDC 工具3.32.1.22

有什么想法如何使其发挥作用?

谢谢

Hugo

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

    您好!

    如果我将平台配置为将 L2的高速缓存大小设置为0k 而不是256k、它可以正常工作...

    如何禁用地址范围0xA1000000-A12000000的 L2高速缓存?

    Hugo

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

    我已通知 RTOS 团队。 请发布您正在使用的 RTOS SDK 版本。

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

    SDK 版本为 processor_sdk_rtos_c667x_4_00_00_04和 PDK 版本 pdk_c667x_2_0_6。

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

    找到我的问题。 感谢您的帮助 TI 员工... 非常感谢!

    即使一个问题或一个答案不正确、至少它可能会帮助我更快地找到解决方案。

    在再次使用 TI 产品之前、我们会考虑两次、因为我们对一家大公司的支持不是期望的。