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:.const 段的存储器分配更改

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

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1381252/tms320f28388d-memory-allocation-changes-for-const-section

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

工具与软件:

尊敬的 TI 专家:

我遇到为.const该段分配的内存不足的问题。 要解决此问题、我.const : > RAMLS5.const : >> RAMLS5 | RAMLS6在 RAM 命令文件中将更改为、然后更.const : > FLASH5, ALIGN(4)改为、从而对其进行了扩展.const : >> FLASH4 | FLASH5, ALIGN(4)。 它现在可以运行、但我想确认以这种方式修改命令文件是可以接受的。 此外、 RAMLS5和 FLASH5等内存块似乎可以用于多个参数、而不是仅专用于.const该部分、我对吗?

此致、

Eric

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

    更新:修改现在不再有效、因此我认为这种方法不适合、原因不明。

    我曾尝试更改内存地址、但 CCS 返回错误、我不确定如何解决。

    此致、

    Eric

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

    您好!

    正如您在第一篇文章中提到的、您可以将该段放置在多个 RAM 之间。

    MEMORY 部分反映了器件中可用的实际存储器。 如果进行更新、请确保提及的存储器范围是有效的存储器范围并且没有重叠。 您可以将多个块合并成一个更大的块、并保持起始地址和结束地址不变。

    例如-

    // RAMLS0      :origin = 0x008000、length = 0x000800
    // RAMLS1      :origin = 0x008800、length = 0x000800
      RAMLS01      :origin = 0x008000、length = 0x001000

    我还建议您尝试使用链接器 cmd 文件生成工具、这是 SysConfig 的一部分

    此致、

    Veena.

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

    尊敬的 Veena:

    感谢您的答复。 不过、如果我按照您的建议将存储器块组合在一起、我需要将存储器段名称从 RAMLS5更改为 RAMLS5_6。 这不方便、因为它会影响后续参数配置。

    更重要的是、您能否帮助我解决前面提到的两个问题?

    1. 为什么我不能.const通过将"更.const : > RAMLS5"改为"来扩展空间.const : >> RAMLS5 | RAMLS6"
    2. 为什么我不能.const通过将"RAMLS5: origin = 0x00A800, length = 0x000800和更RAMLS6 : origin = 0x00B000, length = 0x000800"改为"RAMLS5: origin = 0x00A800, length = 0x001000和"来扩展空间RAMLS6 : origin = 0x00B200, length = 0x000600"

    此致、

    Eric

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

    这应该是可能的。 您在使用此工具时会遇到什么错误?

    如果未设置编译器标志 gen_data_subsection。 尝试将其设置为"ON"。

    RAMLS5: origin = 0x00A800, length = 0x001000和?
    RAMLS6 : origin = 0x00B200, length = 0x000600"

    此处、您将 LS5存储器范围定义为 A800-B800和 B200-B800中的 LS6。 存储器 重叠、不允许使用。

     如果不想更改名称、您可以删除 LS6和 LS5范围 A800-B800、并将其用于 const

    此致、

    Veena.

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

    尊敬的 Veena:

    我也感到困惑的是、为何这种修改不起作用。 以下是详细信息、我希望这些信息可以帮助您解决此问题。

    当我将 cmd 修改为.const :>> RAMLS5 | RAMLS6时,没有警告或错误;然而,代码无法在闪存和 RAM 上运行。

    RAM: 我进入调试模式、运行 CPU1、然后运行 CPU2、然后代码意外进入未知中断。

    闪存 :我进入调试模式,运行 CPU1,代码立即遇到未知中断。

    注意:我只需要在 CPU1上扩展.const 的存储器分配、因此我只更改了 CPU1的.cmd。

    此致、

    Eric

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

    修改后会出现同样的问题:RAMLS5:origin = 0x00A800、length = 0x000B00、RAMLS6:origin = 0x00B300、length = 0x000500。 另一个奇怪的地方是、当我保留前面数目的变量时、即使使用扩展的内存、一切都正常运行。 但是、增加具有扩展存储器的变量数量会导致此问题。 我完全感到困惑、因为没有错误或警告、但它显然与内存分配相关。

    Eric

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

    请注意、在闪存配置中、.const 段应加载到闪存中。

    当 CPU 尝试执行一些无效指令 或尝试 从未编程的存储器执行指令时、调用 illegaloperation 处理程序。 请确认编程的是否正确加载到内存中。

    此致、

    Veena.

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

    请关闭该主题、我已经暂时解决了。