【问题标题】:GCC vs Greenhills on ARMGCC 与 ARM 上的 Greenhills
【发布时间】:2023-03-31 13:25:02
【问题描述】:

我对 GCC 和 Greenhills C 编译器之间在生成代码的内存占用方面的任何比较感兴趣,特别是在 ARM 平台上。

这些编译器是否有任何基准或比较?有没有人想分享一下这里的经验?

【问题讨论】:

  • eembc.org/coremark/index.php 是一个为嵌入式开发人员创建的编译器基准测试网站。您还可以使用他们的工具对您自己的编译器进行基准测试。

标签: optimization gcc embedded memory-footprint greenhills


【解决方案1】:

我没有看到任何基准测试,但根据我的经验,这两个编译器的代码大小和生成的代码非常相似。

如果您想减少内存占用,Green Hills 有大量文档和支持,使用 GCC,一旦您离开人迹罕至的地方,它就会很快变得孤独。 Green Hills 还支持压缩的可执行映像,如果您的 FLASH 有限但 RAM 充足,这将非常有用。

我还在这两个编译器中使用了自定义运行时和 C 库(这可以为您节省更多空间),但是您需要进行一些挖掘以获取 GCC 的信息,但是在 Green hills 中,您可以通过生成构建文件的向导。

【讨论】:

  • 我同意你的说法,但想补充一点,使用 GCC 进行自定义运行时也不是很难。我认为你对两者都很好。 (但我更喜欢 GCC,因为它有许可证。您可以根据需要设置基于 Linux 的开发虚拟机或笔记本电脑。当您需要引入顾问时非常方便,启动时间短。)
【解决方案2】:

您应该注意,Green Hills EULA 明确禁止被许可方发布基准。

您可以从 Green Hills 获得评估许可证并执行您自己的基准测试。无论如何,这将更值得信赖和具有代表性,因为您可以在真实的生产代码上对其进行测试。并且在任何情况下,例如 ARM7 的基准测试可能与 Cortex-M3 的基准测试非常不同,因此任何可用的已发布结果可能无法进行同类比较,也可能无法代表您的平台。

还要注意,即使表面上来自相同的代码库版本(特别是软件浮点性能),我也经历过来自 GCC 的不同二进制发行版的差异很大的结果。所以你最好还是只相信自己的评估结果.

您可以同时考虑 Keil 和 IAR,它们也有评估版本。为什么只考虑这两个?人们通常会在预算大时选择 Green Hills,并且可以从单一来源提供的 RTOS 集成和调试器功能中受益;您可能从单独使用编译器中获得的任何好处都不太可能证明 IMO 的许可成本是合理的。

【讨论】:

  • 听,听。恕我直言,他们有点阴暗。
猜你喜欢
  • 1970-01-01
  • 2011-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-19
  • 2012-05-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多