为什么不能调试链接器文件编译(ld:200不能向后移动位置计数器)

时间:2017-06-27 20:51:04

标签: c linker embedded

在你告诉我我的程序使用太多内存之前......

我知道"无法向后移动位置计数器意味着" ... 这是真正的问题......  我有一个编译器没有问题的链接器文件。

调用此链接器文件发布版本....

toggle = (user) => this.setState({DropdownOpen: !this.state.DropdownOpen});

注意占用的整个空间是64k ......这个编译 但是当我尝试使用以下链接器文件(debug)时;我得到了位置计数器错误

MEMORY
{
/* SOFTCONSOLE FLASH USE: microsemi-smartfusion2-envm */
rom (rx)  : ORIGIN = 0x20000000, LENGTH = 35k

/* SmartFusion2 internal eSRAM */
ram (rwx) : ORIGIN = 0x20008C00, LENGTH = 29k
}

RAM_START_ADDRESS   = 0x20008C00;           /* Must be the same value MEMORY region ram ORIGIN above. */
RAM_SIZE            = 29k;                  /* Must be the same value MEMORY region ram LENGTH above. */
MAIN_STACK_SIZE     = 11k;                  /* Cortex main stack size. */
MIN_SIZE_HEAP       = 512;                  /* needs to be calculated for your application */

两个链接器文件之间的唯一区别是show plus在发布版本中有任何> rom或> ram AT> rom指令,它在调试版本中被> ram替换......

我正在使用相同的优化和调试标志 当我尝试链接调试版本时,我收到以下错误

MEMORY
{

/* SmartFusion2 internal eSRAM */
ram (rwx) : ORIGIN = 0x20000000, LENGTH = 64k
}

RAM_START_ADDRESS   = 0x20000000;       /* Must be the same value MEMORY region ram ORIGIN above. */
RAM_SIZE            = 64k;              /* Must be the same value MEMORY region ram LENGTH above. */
MAIN_STACK_SIZE     = 11k;               /* Cortex main stack size. */
MIN_SIZE_HEAP       = 512;              /* needs to be calculated for your application */

任何人有任何想法???

0 个答案:

没有答案