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.

[参考译文] TMS320F28388D:双核应用的 RAM 问题。

Guru**** 2390755 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1441947/tms320f28388d-ram-questions-of-dual-core-application

器件型号:TMS320F28388D
主题中讨论的其他器件:SysConfig

工具与软件:

大家好、我目前使用的是 F28388芯片用于双核应用。 以下是.cmd CPU2文件的片段:

RAMM0M1       : origin = 0x000002, length = 0x0007F6     /* on-chip RAM block M1 */
RAMM1_RSVD    : origin = 0x0007F8, length = 0x000008     /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */
RAMD0D1       : origin = 0x00C000, length = 0x001000
// This section is set to owned by CPU1 for data
CPU1RAMGS0GS6   : origin = 0x00D000, length = 0x007000
// This section is set to owned by CPU1 for Ramfunc
CPU1RAMGS7GS9   : origin = 0x014000, length = 0x003000
// This section is set to owned by CPU2 for data
CPU2RAMGS10GS12  : origin = 0x017000, length = 0x003000
// This section is set to owned by CPU2 for Ramfunc
CPU2RAMGS13GS15  : origin = 0x01A000, length = 0x003000
 
如果内存块RAMD0D1后面紧跟CPU1RAMGS0GS6、分配给 CPU1的数据、那么是否应该RAMD0D1保留 CPU2块的最后8 x 16个字、以避免预取到无效的内存区域?

跟进问题:根据.cmd上面的文件、如果 CPU2预取进入 CPU1拥有的存储器区域、会发生什么情况? 是否有任何可以观察到此行为的寄存器?

目前,我们遇到了一个问题,当执行一个位于最末RAMD0D1(占用最后8个字)的函数时,有跳到illegal_isr()的机会,但这并不总是发生。 我们想要确认此行为是否是由于预取到无效的存储器区域而导致的。

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

    尊敬的 Yen:

    您能否共享完整的链接器 cmd 文件用于进一步分析(CPU1和 CPU2)。

    您是否曾尝试在 SysConfig 中使用链接器 cmd 工具来配置存储器区域、也请看一下它们。

    请查看双核链接器 cmd 线程- (+) TMS320F28388D:TMS320F28388D - C2000微控制器论坛- C2000 ︎ 微控制器- TI E2E 支持论坛

    谢谢

    Aswin

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

    尊敬的 Aswin:

    我相信我已经找到了解决方案。 在中 TMS320F2838x 实时 MCU 器件勘误表 文档中提到、预取到合法存储器区域的末尾和交叉到非法存储器区域可能会导致错误。


    从我们的实验结果来看ILLIGAL_ISR、当输入时、AccessProtectionRegs.NMAVFLG.CPUFETCHCPU2上的标志确实被提高、而NMCPUFAVADDR表示非法访问地址为0xD000。 (CPU1RAMGS0GS6从 0xD000开始配置为仅可由 CPU1访问、对 CPU2无效)


    通过修改.cmd文件以避免使用 RAM D1的最后8个字、便不再出现问题。

    谢谢

    日元