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.

TMS320C6678: 关于多核boot启动的配置问题

Part Number: TMS320C6678

当前我选择让五个核心启动,五个核心都是同一套代码,其区分方式为用自动获取当前核心并运行。但我发现用SPI启动时,启动时间很长,于是我想到了既然代码是相同的,可以将代码段都放到同一个地址。于是便产生了如下的问题:

1.当我将四个从核心代码都放到同一个地址时(代码放DDR,其余放L2),其data memory与stack memorey都必须要选择成全局的L2地址也就是0x1X800000才能正常启动(X为当前核心),但这明显是不正确的吧,因为全局data memory类似的地址是四个不同的地址。为什么无法使用本地地址0x00800000地址作为其存放的地址呢?

2.使用官方的固化例程时,data memory类似的地址选择是否是存储在代码段的呢?

  • 您好,

    已经收到了您的案例,调查需要些时间,感谢您的耐心等待。

  • 您好,

    参考文件链接:https://www.ti.com/lit/ds/symlink/tms320c6678.pdf 

    第5.1节:介绍与 C6678中的存储器架构相关的主要详细信息。

    在 C6678中、每个内核(8个 C66x 内核)在0x0080_0000 (本地地址)有自己的专用 L2存储器、其他内核或使用全局寻址的引导加载程序无法访问该存储器。 如果您尝试将所有内核的代码和数据都放置在0x0080_0000处、每个内核都会将其代码/数据加载到自己的本地 L2中。 但是、由于每个内核的本地 L2存储器是私有的、因此其他内核无法访问该存储器、从而可能导致冲突。

    如果您需要数据/堆栈是私有的、但对其他内核可见、建议使用全局 L2地址(例如0x1x80_0000、其中 X 表示内核编号、范围从0到7)。 本地 L2地址(0x0080_0000)只应用于每个内核专用的数据、不需要其他内核访问。

    在链接器文件和存储器初始化配置中定义了数据存储器地址的选择。