我在我的 C 文件中创建了一个名为 .co_stack 的部分,并有一个名为 pulStack 的数组来定义该区域。
#define STACK_SIZE 0x00003000 /*!< Stack size (in Words) */
__attribute__ ((section(".co_stack")))
unsigned long pulStack[STACK_SIZE];
我定义堆栈部分的 gcc 链接器脚本如下所示
.co_stack : {
_fstackptr = ORIGIN(ram) + LENGTH(ram) - 4;
_fstacksize = 0x00003000 * 4;
. = (_fstackptr - _fstacksize);
*(.co_stack .co_stack.*)
}
如您所见,我最终在 2 个位置定义了堆栈大小。一个在我的 .c 文件中作为 STACK_SIZE ,在我的 .ld 文件中作为 _fstacksize 。
我怎样才能在一个地方定义它?
例如,我想创建一个变量 pulStackSize,如下所示。
const unsigned long pulStackSize = sizeof(pulStack);
我想将 .ld 文件中的 _fstacksize 定义为
_fstacksize = STACK_SIZE * 4;
如果这样做,我会收到一条错误消息,提示堆栈溢出 48K 字节。
如何将符号从 .c 导入到我的 .ld 文件?