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.

[参考译文] MSP430FR5994:增加链接器文件中的代码大小

Guru**** 2587365 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/836771/msp430fr5994-increasing-code-size-in-linker-file

器件型号:MSP430FR5994

大家好、我将使用下面的链接器文件和 MSP430命令行工具来构建代码。 我的代码大小溢出了3KB。 是否有方法将矢量表移动到 HIFRAM 以扩展代码位置?

是否有其他方法适合大代码大小?  

错误:

/opt/ti/mspgcc/bin/../lib/gcc/msp430-elf/7.3.2/../../../../msp430-elf/bin/ld:adnn.out section `.text'将不适用于`rom'区域

/opt/ti/mspgcc/bin/../lib/gcc/msp430-elf/7.3.2/../../../../msp430-elf/bin/ld:在[000000000000fffe、000000000000FFF]加载的__reset_vector 段与在[000000005bc0、000000010ce7]加载的.text 段重叠

/opt/ti/mspgcc/bin/../lib/gcc/msp430-elf/7.3.2/../../../../msp430-elf/bin/ld:区域`ROM"溢出3432个字节

链接器脚本: https://github.com/CMUAbstract/maker/blob/5d58fdd629ef68e544dc0b1d2bd59d24df722163/linker-scripts/gcc-7/msp430fr5994.ld

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

    您好!

    通常、矢量表的地址是固定的、不得移动。 此外、中断函数必须位于较低的存储器中(地址0x10000以下)、因为矢量表中的条目大小仅为16位。

    该错误消息只是意味着位于地址0x5BC0和0x10CE7之间的.text 段与矢量表重叠、矢量表通常介于0xFF80和0xFFFF 之间。

    因此、我们需要使.text 段更小、或将其拆分为更小的块。

    您可以尝试以下选项:

    • -os:告诉编译器针对 大小进行优化
    • ffunion-sections -这会将单个函数放在各自的段中、因此可以更精细地放置段(另请参阅-fdata-sections)
    • -mlarger 和-mcode-region=要么-"-mlarg"将启用大型存储器模型、允许将函数和数据放置在地址0x10000或更高的上部存储器区域中。 mcode-region=将启用上部和下部存储器之间的段"切换"、以便程序适合。

    借助最新的 MSP430-GCC 8.2.0.52版本、您可以获得更小的整体代码大小。 如果您要使用此版本、我还建议使用最新的链接器脚本(来自 MSP430-gcc-support-files.zip)。 两者均可从以下网址获得: http://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/MSPGCC/latest/index_FDS.html

    有关  减少代码大小的更多详细信息、另请参阅 MSP430-GCC 用户指南(slau646)的第4.9节。