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.

[参考译文] TMS320F28379D:错误#10099-D:程序无法装入可用内存

Guru**** 2553450 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1298638/tms320f28379d-error-10099-d-program-will-not-fit-into-available-memory

器件型号:TMS320F28379D

(这是7月就链接器错误10099-D 发出的问题的后续答复;由 Trey German8回答。 我希望他仍然有空。)

Trey 您好!

这个问题被搁置了一段时间,但已经回到了表面。 我查看了您的初始响应、并且查看了.cmd 文件以及.map 文件以查看构建成功和失败的情况。 我还浏览了您发送的链接器命令"Primer"链接。 但我对这种环境还是有点陌生。

我可以在失败的映射文件中看到发生错误的地方(设置.cinit 进行全局变量初始化)。 但我不知道如何解决它。 我打算尝试将.cmd 和两个映射文件(好和坏)拖到此编辑窗口中。 我希望这是一个2分钟修复的人谁已经在封锁. 但是,如果有更多的挖掘我做,请告诉我正确的方向。

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

    您好、Fred、

    Trey 不在 TI 工作、因此未将此主题分配给他、如果您要直接与他联系、我相信您可以发送朋友请求并秘密通知他。 在此我将尝试回答您的问题。

    我打算尝试将.cmd 和两个映射文件(好和坏)拖到此编辑窗口中。

    找到有关此错误的更多信息的一种方法是在问题窗口中双击该错误;这应该会将链接器命令文件直接打开到已满并且需要更多内存的部分。 此外、您可以通过 Memory Allocation 窗口进行检查、以查看哪些存储器单元已满:

    根据我的经验、此错误仅出现在项目中的链接器命令文件(.cmd)中、并且可以通过向段中添加更多存储器来轻松修复。

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

    您好、Omer:

    感谢您的快速响应。 我遵照你的建议(以及你朋友 Trey 的建议)和一些有经验的猜测、编辑了我的.cmd 文件、以清除.cinit 行错误。 下一次构建是成功的、这当然是目标。 但是、虽然我相信您的建议、但我的猜测可能会很聪明、或许也可能很幸运。 因此、我想在您发现任何风险行为的机会上运行我的更改。

    原始 cmd 文件在 SECTIONS 下有此文件(供参考的内存部分分配 FLASHA 到 FLASHN,每个为8192字节):

    /*分配程序区域:*/将.text 行按原样。
    .cinit:> FLASHB   PAGE = 0、ALIGN (4)
    init_array:> FLASHB、   PAGE = 0、ALIGN (4)
    .text:>> FLASHB|FLASHC|FLASHD|FLASHE  page = 0,align (4)

    为了给.cinit 提供更多空间、我将其更改如下:

    /*分配计划领域:*/
    .cinit :> FLASHB|FLASHC page = 0, align (4)
    init_array:> FLASHC、page = 0、align (4)
    .text:>> FLASHB|FLASHC|FLASHD|FLASHE page = 0,align (4)

    我将 init_array 更改为 FLASHC (受过良好教育的猜测)、因为我假设 FLASHB 已被填满。

    我没有接触.text 行、因为"Primer"链接(来自 Trey)中的说明表明此语法告诉链接器使用 FLASHB、如果 B 为完全使用 C、等等。 我的存储器分配窗口显示完全未分配 FLASHE、因此我认为连接器应根据需要留出重新分配的空间。

    您能确认我的更改是否合理吗? 或者我是否做了一些稍后会让我震惊的事情?

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

    您好、Fred、

    我个人建议使用在其他地方不使用的闪存;虽然闪存 组相当大、但如果您的程序确实在闪存 C (.text 段)之后耗尽了空间、那么可能会出现问题。 您有很多闪存组、所以这应该没问题(除非您计划以其他方式使用它们)。