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.

[参考译文] 编译器/MSP430F5527:10099-D:程序将不可用--如何区分段放置的优先级?

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/852068/compiler-msp430f5527-10099-d-program-will-not-fit-into-available----how-to-prioritize-sections-placement

器件型号:MSP430F5527
主题中讨论的其他器件:MSP430F5529

工具/软件:TI C/C++编译器

我有一个从 CCS5.4 (编译器4.1.5)移植到 CCS9.2的项目。  我已经解决了与这项工作相关的几个问题、但这一个让我感到意外。  我的命令文件定义了两个对应于5527闪存的闪存段。

闪存 :origin = 0x4400,length = 0xBB80
FLASH2:origin = 0x10000、length = 0xC400

将.text 和.cinit 段分配给这些段、如下所示:

.cinit:{}>闪存
.text :{}>> FLASH | FLASH2

问题是、我已经到达.text 已经填充了闪存段并开始使用 FLASH2段的位置。  由于闪存段已满、链接器无法为.cinit 段分配空间。  如何告知链接器将.cinit 段置于闪存中并根据需要将.text 移至 FLASH2?  FLASH2中有足够的空间。

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

    以下是我的命令和映射 filese2e.ti.com/.../10099D.zip

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

    让 CCS 处理链接器文件吗? 标准 lnk_msp430f5529.cmd (无论如何、我没有混乱)具有:

    #ifndef __large_code_model__
    .text:{}> FLASH /* Code */
    #else
    .text:{}>> FLASH2 | FLASH /* Code */
    #endif 

    如果您将"Build Options->Build->Compiler->Processor Options->Code memory model"设置为"large (大容量)"、则优先使用上部闪存。

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

    我明白了。  这不是将哪些段划分为分段、而是将某个段划分为优先级。  不是我所期望的解决方案、但它可以正常工作。  谢谢你。