工具/软件:Code Composer Studio
我们正在尝试确定如何控制堆栈的大小。
我们正在使用CCSv7版本7.1 .0.0.0016万 ,并使用两个不同的编译器工具链来构建我们的项目: TI-CGT-ARM_CCSV.3.LTS 16.9 和 gcc-AR臂-NONE-eabi-4_9-2015q3。
很明显,我们的项目是使用512字节的默认堆栈大小创建的。 假设我们希望将其增加到4096个。
对于TI链接器,我们将设置“Set C system stack size (--stack_size,-stack)”更改为4096,如屏幕截图所示。 但是,这似乎不是故事的结尾。 我们的项目包含链接器命令文件tm4c129encpdt.cmd,它包含行“__stack_top =__stack + 512”;“CCS似乎从C:\ti\ccsv7\cmd_base\arm\include\tm4c129encpdt.css将此文件复制到我们的项目中,因为这两个文件是相同的,并且都包含这一行。 将项目的链接器设置从512更改为4096似乎不会自动更新此文件。 __stack_top用于启动c文件中矢量表的第0条目。
对于GCC链接器,堆栈大小似乎没有任何项目设置。 在这种情况下,我们有一个链接器命令文件tm4c129encpdt.lds和我们的启动文件tm4c129encpdt_startup gcc.cc. 链接程序命令文件似乎根本不处理堆栈大小,而启动c文件包含"static UINT32_t pui32Stack[128];"行,并且对于向量表,使用sizeof()计算初始堆栈指针。
因此,我们的问题是:
(1)对于TI链接器,我们是否需要在两个位置更新堆栈大小:项目设置和链接器命令文件中的__stack_top行? 是否有其他地方需要更新?
(2)对于GCC编译器/链接器,更新"static UINT32_t pui32Stack[128];"行是否足够? 是否有其他地方需要更新?
(3)无论采用哪一种方法,我们如何确定堆栈大小是否确实设置正确?