Keil与GCC的ARM7开发相比如何?我正在为一个中等规模的项目选择hw顾问,有些人使用keil,有些人使用gcc。我想知道参与任何一个选项的问题......
答案 0 :(得分:8)
从编码/开发的角度来看,两者之间的差别很小。我认为您应该考虑的唯一事情并不是特定于这些编译器。 <强>维护强>:
除非你对成本非常敏感,否则我认为真正的问题是谁会做得最好,因为编译器将是一个小问题。
答案 1 :(得分:5)
应该可以构造代码以使用两个编译器。像&#34; packed&#34;等属性可以是宏观的,所以代码在两者之下都很开心。将硬件详细信息下推到较低级别,并在运行时配置硬件映射而不是编译时。如果您必须具有单独的Kiel和GCC版本的代码,请将它们放在单独的文件中并配置与gcc make或Kiel项目文件一起使用的文件。
我还没有解决的一个问题是汇编程序代码。基尔使用armasm,而gcc使用as。它们似乎有非常不同的源代码格式。如果可以的话,避免汇编程序的另一个原因。
使用GCC的优势在于您可以针对非ARM平台 - 非常适合在具有更好开发工具的平台上模拟您的应用程序(即x86 linux下的valgrind)。实际上,这是每个 ARM目标应用程序应该采用的方法。首先在x86上开发,然后移植到ARM。
还有与基尔保持同步的成本。一旦我认识的地方停留在RVDK 2.1(2002?)上,因为升级到三位开发人员的最新成本是令人望而却步的。
我还要添加gcc&amp;迂腐将会比我们的(基本上古老的)基尔版本更好地消除你的代码中的警告和错误。
基尔可能会提供更严格的ARM代码,因此请保留它以进行目标构建。否则使用GCC。
答案 2 :(得分:4)
如果我没记错,基尔现在归ARM所有。为了生成优秀的代码,ARM编译器比gcc更好。我似乎记得Keil包括减少或免费或任何版本的rvct。所以我的问题是,当gcc在那里并且使用得当时,使用商业解决方案的速度更快,更清晰,代码更好吗?我会选择gcc,除非你遇到性能紧张的情况,并愿意在网上免费提供的所有基于gcc的信息之间进行心理转换,然后再回到商业工具。总的来说,使用gcc可能是更好的途径,因为基尔谷歌搜索框背后可能有大量信息,但基于gcc的解决方案的知识和信息量会影响到这一点。
如果顾问使用一个工具为您完成项目的初始工作,然后最后他们交出工作,您可能会想要一个基于gcc的解决方案(这并不意味着说vxworks gcc,或者甚至代码源代码gcc,但是一个通用的gcc解决方案),因为毫无疑问你或你雇用的其他人将不得不选择这个大规模并运行它与gcc你更有可能找到愿意和能力的人。
答案 3 :(得分:1)
如果您遇到编译器或库的问题,商业解决方案的主要好处是支持我 使用主流硬件时(在gcc = x86的情况下),开源很好。编译器或库的大多数问题通常很快就会被社区修复 如果您正在开发一个(可能是异国情调的)嵌入式平台,如果您对工具链有任何问题,很快就会感到很孤独。
答案 4 :(得分:1)
我们使用Keil平台,对它的性能和优化非常满意。几年前我运行了一些标准基准,它们非常好。另一个考虑因素是支持,到目前为止,Keil在一些棘手的问题上有非常好的响应时间和相对良好的反馈。
仅供参考,如果您的项目将使用Keil RTOS并且您对此有任何疑问,可以购买源代码。