首先要说明,没有那款开发工具是万能的,也没有那款工具在所有方面都具有绝对优势。对于keil mdk-arm和iar两款工具择,可以根据自己的习惯来选择,而不应该在使用其中的一款时贬低另外一款,或者总是赞美自己的选择。
好了,下面开始讲keil mdk-arm和iar的区别。
一、概述
keil mdk-arm(旧称realview mdk)开发工具源自德国keil公司,被全球上百万的嵌入式开发工程师验证和使用,是arm公司目前最新推出的针对各种嵌入式处理器的软件开发工具。
keil mdk集成了业内最领先的技术,包括uvision3、uvision4、uvision5集成开发环境与 arm编译器。支持arm7、arm9、cortex-m0、cortex-m0 、cortex-m3、cortex-m4、cortex-r4内核核处理器。
keil mdk可以自动配置启动代码,集成flash烧写模块,强大的simulation设备模拟,性能分析等功能,与arm之前的工具包ads等相比,arm编译器的最新版本可将性能改善超过20%以上。
iar embedded workbench是一套用于编译和调试嵌入式系统应用程序的开发工具,支持汇编、c和c 语言。它提供完整的集成开发环境,包括工程管理器、编辑器、编译链接工具和c-spy调试器。iar systems以其高度优化的编译器而闻名。每个c/c 编译器不仅包含一般全局性的优化,也包含针对特定芯片的低级优化,以充分利用您所选芯片的所有特性,确保较小的代码尺寸。iar embedded workbench能够支持由不同的芯片制造商生产,且种类繁多的8位、16位或32位芯片。
二、区别
1、mdk不支持层叠文件夹,在文件夹的下一级中必须为文件;iar支持层叠,可以比较方便管理代码,理清层次。
2、mdk连接library,直接添加到文件夹即可;iar则需要从工程中选项中设置。这应该不算什么问题,毕竟大多数ide都是这么做的,但最让人很郁闷的是,iar不能采用相对路径。比如../muf/muf.lib在编译时,就会连接到别的目录,只能采用d:/muf/muf.lib绝对路径的形式。
3、 mdk支持dynamic_cast<>运算符,而iar文档中明确表示不支持。如果在iar中强行使用该运算符,则编译会报错:
error[pe020]: identifier "dynamic_cast" is undefined
4、mdk默认只创建工程,工作区是不会直接创建。如果想多个工程聚合,则首先需要创建一个multi的工作区,然后再添加相应的工程。 iar,默认是创建工程和工作区,如果想多个工程并存,直接添加即可。 相比之下,mdk创建工程的文件比较少,而iarm创建工程生成的文件比较多。
5、mdk编译时,只有level的选择;iam有debug和release的快速选择
6、默认状态,mdk的工具栏功能比较多,有点繁杂;iam的比较简洁,但相对,也比较单薄。
7、mdk的c 有std::这个命名空间;iar下面的所有容器和算法,都不采用std命名空间
8、mdk的程序文件,最后必须要有一个新的空行,否则会有编译警告:
warning: #1-d: last line of file ends without a newline
一般来说,如果主要是采用c,并且也不会有太多的library需要连接,mdk和iar都能胜任。不过这种情形就比较推荐iar,因为其非常简洁,上手也快,代码层次也能清晰明了。
如果主要是采用c ,并且用到很多特性,或是需要有多个工程进行协作,那么注定只能选择mdk,只不过这样就一定要每个文件最后加上新的空行了。
本文来自凯发app-凯发k8官网科技,原文地址:
http://www.myir-tech.com/resource/508.asp,转载请注明出处。