【发布时间】:2023-03-18 17:55:01
【问题描述】:
我在 ARM 上进行 c 编程,其中内存占用和速度都有非常严格的限制。我正在使用 GSL-2.1 库,它几乎所有的功能都是双倍的,但我的硬件在硬件上没有浮点,所以它都是在软件中完成的。因此,它会产生额外的代码大小并降低执行速度。我的处理器有 180KB SRAM 和 1MB 闪存。现在我想提高速度和内存占用,所以我查看了 IDE 编译器设置并获得了以下设置。
我已阅读 some thread 关于 GCC 优化级别的内容,但这里还有一些我不太了解的设置。您能否详细说明针对 ARM Cortex-M 处理器的 GCC 的每个设置。
更新: 我随机选中/取消选中了一些框,但代码大小没有任何差异。
【问题讨论】:
-
问题是什么?您应该决定准备在速度和大小之间进行权衡。你不能同时拥有两者。
-
当您显然只是在谈论 C 时,为什么要标记为 C++?
-
还有一些用 c++ 编写的附加文件。
-
研究“数据驱动设计”和“数据缓存优化”。一个简单的技巧是将内容声明为“静态常量”,以便编译器可以直接访问数据,而不是制作本地副本。
-
在我的一个嵌入式系统上,我们使用了 4096 的定点分母(由于 ADC 计数)。这就是“内部代表”。固定点将在输出到用户或从用户输入期间转换。我们的 ARM7 喜欢完整的数据指令。我还将数据移动到一个结构中以获得更好的数据缓存行并加快速度。
标签: c gcc optimization