作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我为我公寓的供暖系统编写了一个小应用程序,在编译结束时我将得到以下输出:
'Invoking: Cross ARM GNU Print Size'
arm-none-eabi-size --format=berkeley "Phaethon_F446.elf"
text data bss dec hex filename
142935 924 77140 220999 35f47 Phaethon_F446.elf
我使用的是具有 128 KB RAM 的 STM32F446RE,如果我正确的话,bss 部分需要 75KB RAM;这意味着超过 50% 的 RAM 消失了。
杀死我的 RAM 或者编译器表示的这个值是错误的?
我应该对软件进行哪些更改?
最佳答案
是的,你是对的,根据报告,大约 50% 的 RAM 被 .bss 占用。可以肯定的是,您可以生成映射文件来找出变量的分配方式(或位置)(-Wl,-Map=output.map)。
关于解决方案,您必须优化软件(是否需要所有变量?您是否使用编译器优化作为 -O3/... options ?您可以重复使用变量吗?)我不知道您的代码/算法/等,但看起来仅仅用于加热系统就需要很多字节。
链接器脚本将向您显示 .bss 部分的边框(即当前大小)(以及您的内存如何分割),以防万一您想要修改它(您可以选择内存的分配方式) )。
关于c - 我的 BSS 部分的大小是否达到临界值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50856263/
我是一名优秀的程序员,十分优秀!