如题 ,查找资料 说是在cmd 文件中 .bss :fill = 0x00 .ebss : fill = 0x00
就可以初始化该段 但是使用后发现没有效果 内存里的变量并不是零。
然后还有问题就是 bss 和 ebss 段的差别是什么 貌似都是未初始化段 并且程序里面这两个段里面都是有数据
请高人解答
Qing Zhao:
会不会是这个原因:
CMD在初始化的时候已经清零了,但是在程序里面,有使用这几个区,比如声明变量之类的操作,然后其值就不为零了?
意思是,在程序运行时候,CMD初始化和划分部分最早被执行,程序中的变量声明啊,初始化数据之类的随后被加载进来?
如题 ,查找资料 说是在cmd 文件中 .bss :fill = 0x00 .ebss : fill = 0x00
就可以初始化该段 但是使用后发现没有效果 内存里的变量并不是零。
然后还有问题就是 bss 和 ebss 段的差别是什么 貌似都是未初始化段 并且程序里面这两个段里面都是有数据
请高人解答
Eric Ma:
.bss Global and static variables Low 64K.ebss Far global/static variables Anywhere in data
现在TI提供的例程中CMD基本都是用ebss.
没有初始化的变量,确实不会自动初始化为0,你可以在定义变量的时候定义初始值啊,这是一个好的习惯。
Eric
如题 ,查找资料 说是在cmd 文件中 .bss :fill = 0x00 .ebss : fill = 0x00
就可以初始化该段 但是使用后发现没有效果 内存里的变量并不是零。
然后还有问题就是 bss 和 ebss 段的差别是什么 貌似都是未初始化段 并且程序里面这两个段里面都是有数据
请高人解答
Eric Ma:
回复 Eric Ma:
如果你想在段中定义变量初始值为0, 可以用以下方式
cmd:
.ebss : > RAML2 PAGE = 1 fill = 0x00
源文件中:
Uint32 test;
Eric