我的BSS部分是否达到临界尺寸?

时间:2018-06-14 11:16:38

标签: c arm

我在我的公寓里为我的供暖系统写了一个小应用程序,在编译结束时我正在成为以下输出:

getLocationName(){
    this.service.getLocationName(this.pos.coords.latitude, this.pos.coords.longitude)
        .subscribe(location => {
            console.log(location); //TODO: remove
        },error => {
            console.log('Error happened' + error);
        }
    )
}

我正在使用带有128 KB RAM的STM32F446RE,如果我是正确的,bss部分需要75KB的RAM;这意味着超过50%的RAM消失了。

  • 我错了吗?
  • 杀死bss我的RAM或编译器表示此值错误?

  • 我的软件应该更改什么?

1 个答案:

答案 0 :(得分:1)

是的,根据报告,你是对的,大约50%的RAM是由.bss占用的。可以肯定的是,您可以生成映射文件以找出变量的分配方式(或者在哪里)(-Wl,-Map = output.map)。

关于解决方案,你必须优化软件(需要所有变量吗?你使用编译器优化作为-O3 / ... options吗?你可以重用变量吗?)我不知道关于你的代码/算法/等,但它看起来像加热系统的很多字节。

链接器脚本将显示.bss部分的边框(即当前大小)(以及内存的分割方式),以防您想要修改它(您可以选择内存的分布方式) )。