当您自行编写或自定义连接器脚本时,请谨记以下要点:
- 确保按 MicroBlaze 硬件中定义的方式将不同矢量节分配到相应的存储器中。
- 在
.bss
节中,为堆和栈分配空间。将_stack
变量设置为位于此区域的_STACK_SIZE
位置之后的区域,并将_heap_start
变量设置为位于_STACK_SIZE
位置之后的下一个位置。由于无需为硬件和仿真初始化堆和栈,请先确定.bss
和COMMON
的定义,再定义_bss_end
变量。注释:.bss
节边界不包含堆或栈。 - 请确保
_SDATA_START__
、_SDATA_END__
、SDATA2_START
、_SDATA2_END__
、_SBSS2_START__
、_SBSS2_END__
、_bss_start
、_bss_end
、_sbss_start
和_sbss_end
变量分别定义为sdata
、sdata2
、sbss2
、bss
和sbss
节的开始和结束。 - ANSI C 语言要求所有未初始化的存储器都初始化至启动(对于堆和栈则不需要执行此操作)。提供的标准 CRT 假定仅有一个
.bss
节,并且此节初始化为 0。如有多个.bss
节,则此 CRT 无效。您应自行编写 CRT 以初始化所有.bss
节。