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.

[参考译文] MSP430F2618:错误#10099-D:程序将无法放入可用内存中

Guru**** 2391415 points
Other Parts Discussed in Thread: MSP430F2618

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/971018/msp430f2618-error-10099-d-program-will-not-fit-into-available-memory

器件型号:MSP430F2618

我将 IAR IDE 项目转换为 CCS 10.1、使用适用于 MSP430的 TI v20.2.1.LTS 编译器。

IAR 项目运行良好、但当我将文件移动到 CCS 时、会出现以下链接错误:

"./lnk_msp430f2618.cmd"、第108行:错误#10099-D:程序将不能放入可用存储器、或者该段包含需要无法为此段生成的 trampoline 的调用站点。 对齐方式运行".data"大小为0x13c5的放置失败。 可用存储器范围:
RAM 大小:0x2000未使用:0xbeb 最大空洞:0xbeb。

链接器似乎正在尝试将程序移动到存储器中?   

我 不确定如何纠正此问题。  我尝试 了其他帖子中建议的不同修复。  但这个问题仍然存在。  

谢谢你

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

    消息是指 RAM 和.data、因此这不是程序代码(.text)。

    这意味着、无论出于何种原因、.bss (零初始化数据)或.data (初始化数据)在移动中都大幅增长。 IAR 和 CCS 库对 RAM 的使用有贡献(不同的量)、但这并不能解释2KB (0x13c5-0xbeb)的大小差异。

    这方面没有明显的(或可能太多)嫌疑犯。 代码模型(小与大)可能是一个、因为指针可能会增加。 IAR 项目是否使用非标准链接器文件?

    就个人而言、我将从.map 文件开始、查找大型.data/.bss 项目、然后从该文件开始向后工作。

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

    该器件具有8KB RAM (8192字节)。

    RAM 部分为:

    RAM      大小:0x2000    未使用:0xbeb     最大孔数:0xbeb  

    这意味 着0x2000 - 0xbeb = 0x1415 (5141字节)的可用 RAM。

    我的问题是:为什么 RAM 的3051 (0xbeb)字节不可用?   这似乎很多、即使对于 CCS 库而言也是如此。   

    我可以从最大孔中偷走吗?

    是否还显示大小为0x13c5、小于0x1415?  为什么说该部分太大?  运行时使用量不是编译时间使用量?

    谢谢你。

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

    您误解了这一点。 链接器报告的最大孔大小为0xbeb、这是所有剩余空间、因此大于该大小的东西将不适合。 SRAM 中必须有多个段、因此您需要检查编译器输出以了解它尝试将其放入其中的内容。 然后、您可以尝试找出占用如此多空间的内容、并查看是否可以对其执行任何操作。 (不要忘记堆栈也需要 SRAM。)