Keil vs GCC for ARM7?

c0m*_*0m4 14 embedded gcc arm keil arm7

Keil与GCC的ARM7开发相比如何?我正在为一个中等规模的项目选择hw顾问,有些人使用keil,有些人使用gcc.我想知道参与任何一个选项的陷阱......

Ger*_*ard 8

从编码/开发的角度来看,两者之间的差别很小.我认为您应该考虑的唯一事情并不是特定于这些编译器.维护:

  • 如果您无法访问Keil编译器,您是否能够维护该软件,或者是否需要支付少量费用?
  • 还支持debughardware/JTAG,如果需要获得一些成本,会有什么成本?
  • 如果由于不得不在以后切换开发人员而必须从一个编译器转移到另一个编译器,那么成本是多少?

除非你对成本非常敏感,否则我认为真正的问题是谁将会做得最好,因为编译器将是一个小问题.


小智 6

应该可以构造代码以使用两个编译器.像"打包"这样的属性可以是宏观的,因此代码在两者之下都很开心.将硬件详细信息下推到较低级别,并在运行时配置硬件映射而不是编译时.如果您必须具有单独的Kiel和GCC版本的代码,请将它们放在单独的文件中并配置与gcc make或Kiel项目文件一起使用的文件.

我还没有解决的一个问题是汇编代码.基尔使用armasm,而gcc使用as.它们似乎有非常不同的源代码格式.如果可以,避免汇编程序的另一个原因.

使用GCC的优势在于您可以针对非ARM平台 - 非常适合在具有更好开发工具的平台上模拟您的应用程序(即x86 linux下的valgrind).实际上,这是每个 ARM目标应用程序应采用的方法.首先在x86上开发,然后移植到ARM.

还有与基尔保持同步的成本.一旦我认识的地方停留在RVDK 2.1(2002?)上,因为升级到三个开发人员的最新成本是令人望而却步的.

我还要补充一点,gcc和pedantic会比我们的(基本上古老的)基尔版本更好地消除代码中的警告和错误.

基尔可能会提供更严格的ARM代码,因此请保留它以进行目标构建.否则使用GCC.