SECTIONS中的BSS段初始化分析
发布时间
阅读量:
阅读量
SECTIONS bss段初始化分析
都知道bss段需要初始化,但是这是为什么呢?
通过浏览资料,都会发现,bss段是不会出现在程序下载文件(*.bin .hex)中的,因为全都是0。如果把出现在程序下载文件中,会增加程序下载文件的大小。实际应用中,通常只需要把bss段的起始地址和结束地址保存起来,而不需要将程序下载文件中出现bss段(一堆0)将来真正运行程序的时候,再根据这两个数据进行bss段的初始化就行了。
以上这段文字是网上的资料说的。但是,可不可以让bss段出现在程序下载文件中呢?如果这样可以的话,当程序由存储器(例如nandflash)拷贝到内存中时,捎带着会把bss段像data段那样初始化。
实际上是可以这样做的。看下边的两个链接脚本。
链接脚本一:
SECTIONS {
. = 0x00000000;
.init : AT(0){ head.o init.o nand.o}
. = 0x30000000;
.text : AT(4096) { (.text) }
.rodata ALIGN(4) : AT((LOADADDR(.text)+SIZEOF(.text)+3)&~(0x03)) {(.rodata)}
.data ALIGN(4) : AT((LOADADDR(.rodata)+SIZEOF(.rod
全部评论 (0)
还没有任何评论哟~
