//=====================================================================
//TITLE:
// IAR vs MDK的简单比较
//AUTHOR:
// norains
//DATE:
// Friday 11- December-2009
//Environment:
// MDK 4.0.2
// IAR 5.40
//=====================================================================
对于MDK和IAM,不少嵌入式工程师都不会陌生,估计很多人的电脑上都会有其一。但对于菜鸟而言,这两者应该如何挑选,则可能会有点迷惑。本文就打算解决这迷惑而应势而生。
在开篇之前,先说明一下,因为本文面向的是从没有摸过这两款开发工具的人群,所以仅仅从一些表面的东西进行比较,深入一点的,比如说两者的编译质量,开发效率,都不回涉及。
首先是两者的简介,其内容是从官方网站直接拷贝的。
RealView Microcontroller Development Kit (RealView MDK)
RealView MDK开发工具源自德国Keil公司,被全球超过10万的嵌入式开发工程师验证和使用,是ARM公司目前最新推出的针对各种嵌入式处理器的软件开发工具。RealView MDK集成了业内最领先的技术,包括μVision3集成开发环境与 RealView编译器。支持ARM7、ARM9和最新的Cortex-M3核处理器,自动配置启动代码,集成Flash烧写模块,强大的Simulation设备模拟,性能分析等功能,与ARM之前的工具包ADS等相比,RealView编译器的最新版本可将性能改善超过20%。
IAR Embedded Workbench
IAR Embedded Workbench是一套用于编译和调试嵌入式系统应用程序的开发工具,支持汇编、C和C++语言。它提供完整的集成开发环境,包括工程管理器、编辑器、编译链接工具和C-SPY调试器。IAR Systems以其高度优化的编译器而闻名。每个C/C++编译器不仅包含一般全局性的优化,也包含针对特定芯片的低级优化,以充分利用您所选芯片的所有特性,确保较小的代码尺寸。IAR Embedded Workbench能够支持由不同的芯片制造商生产,且种类繁多的8位、16位或32位芯片。
在做比较之前,先说明进行比较的软件版本如下:
MDK:4.02
IAR:5.40
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,只不过这样就一定要每个文件最后加上新的空行了。
分享到:
相关推荐
V6-300_FreeRTOS实验_工程移植模板(含IAR和MDK).rar
RealView MDK4.02 环境下从IAR 到MDK 的工程移植,使用使用Ulink2 仿真器调试LM3s1138
大部分的STM32示例程序都是基于IAR开发环境的,但我认为使用Keil MDK开发环境更加方便,可以利用RVMDK强大的外设仿真功能加速STM32的开发。我在以前的Blog文章里介绍过如何在RVMDK中建立STM32工程,以及如何使用...
本资源是基于STM32标准库3.50版本在IAR7.8环境中的新建工程,所以适用于IAR和Keil MDK环境下开发STM32F10x系统单片机时直接从模板新建个人工程项目,以节省新建工程所耗费的时间,更偏向于初次使用IAR的人,结合笔者...
c语言iar keil mdk arm
GD32F303RC工作模板(IAR, MDK)
1,使用iar或者mdk 在flash内调试时如果报错,应先用j-flash擦
以前都用IAR+source insight 来做STM32 开发,但是IAR 做文本编辑真是不给力,没有自动补全,看代码时也不是很好,我编辑时都是先用source insight 写好,再用iar 来编译、调试,好麻烦
FreeRTOSv9.0.0版本系列,包含IAR和MDK,支持ARM_CA09、CM0、CM3、CM4_MPU、CM4F、CM7和ARM7_LPC21xx,官方源码,有需要的可以下下来移植使用
分享两个之前保存的STM32F103ZET6开发的工程模板,分别基于MDK5和IAR开发环境,希望对STM32初学者有一定帮助。
GD32F303RC单片机工程模板,支持MDK和IAR打开
库采用3.5版本的,支持MDK4.72A和IAR6.5开发环境
EFM32例程,里面包含Keil和IAR的工程,没有全部验证过,有兴趣需要的可以下载。
本文说明了KEIL MDK和IAR两款ARM开发工具区别比较,来自米尔科技。
任务 Task1 运行的过程需要调用函数 printf,发现任务 Task3 正在调用,任务 Task1 会被挂起,等待 Task3 释放函数 printf。 在调度器的作用下,任务 Task3 得到运行,Task3 运行的过程中,由于任务 Task2 就绪,...
stm32F4XX系列FreeRTOS例程代码,稳定运行,希望帮助大家提高开发效率
如何将自己的文件打包成库函数,在 MDK 和IAR 开发环境下
在MDK和IAR环境下建立STM32F207工程
可用在 MDK 及 IAR 兩種 complier 之uCosIII,使用的硬體平台為STM32F2XX