TI中文支持网
TI专业的中文技术问题搜集分享网站

28335 未初始化的全局变量不是自动给零 .bss : fill = 0x00 也没用

如题 ,查找资料 说是在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

赞(0)
未经允许不得转载:TI中文支持网 » 28335 未初始化的全局变量不是自动给零 .bss : fill = 0x00 也没用
分享到: 更多 (0)