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

使用哪种类型定义的变量会占用.ebss空间

我使用的2808,目前RAM空间已经几乎全部占用,没有办法将.ebss空间长度重新设置,但是现在程序在编译时报出.ebss空间需求已经超出定义的空间长度,我想请问一下:

既然是.cinit是初始化段,.ebss是未初始化段,而目前我的.cinit还有足够的空间,有没有什么办法,通过改变变量的定义方式,使变量去占用.cinit段或其他段,而使.ebss段的长度需求变小????

虽然对于段的定义有描述性的说明,.cinit:全局变量和静态变量的C初始化记录;

.ebss:为使用大寄存器模式时的全局变量和静态变量预留的空间,在程序上电时,cinit空间中的数据复制出来并存储在.ebss中。

但是能否举例说明,到底具体是什么变量或者什么函数会对.cinit段或.ebss段有空间需求,需求长度如何计算???

Hank Zhao:

ebss段主要是存放全局变量。cinit段存放全局变量和静态变量的初始化代码。可以通过查看map文件来确定其具体的长度。ebss段放的是数据,需要分配在RAM中。cinit段放的是代码,可以分配在Flash中。两者是两块独立的存储单元,ebss段无法占用cinit的存储空间。

赞(0)
未经允许不得转载:TI中文支持网 » 使用哪种类型定义的变量会占用.ebss空间
分享到: 更多 (0)