从Keil MDK到IAR EWARM:通过工程迁移实现项目资产的更好管理
发布时间:
2025-09-10 14:30:40
【导语】随着嵌入式开发复杂度攀升,开发者对IDE需求日益多样。Keil MDK与IAR EWARM是Arm Cortex-M MCU开发的常见IDE,其中IAR EWARM对多核架构支持更优,吸引不少用户从Keil MDK迁移。本文将详述如何借助IAR Project Converter工具高效完成迁移,并列出迁移中需注意的关键事项,助力开发者快速适应新环境。
作者:夏青
随着嵌入式系统开发的复杂度不断提升,开发人员对集成开发环境(IDE)的需求也日益多样化。Keil MDK和IAR EWARM是市面上最常见的两款用于Arm Cortex-M MCU开发的集成开发环境。目前Keil MDK主要支持Arm Cortex-M,对于Arm Cortex-A和Cortex-R的开发,则需要借助Arm Development Studio的支持。而IAR EWARM作为一款功能强大的IDE,不仅支持Arm Cortex-M系列MCU,还扩展了对Cortex-A和Cortex-R处理器的支持。
随着行业发展和竞争加剧,一方面越来越多的芯片公司已经不满足仅提供竞争异常激烈的MCU产品,所以他们开始打造高性能的应用处理器或者MPU,或者高实时性的满足功能安全要求的芯片,他们的客户同样也可能在进行着技术升级。所以,越来越多的工程师希望把不同的工程建在同一套IDE上,以实现资产的最优管理和实现复用开发。对于需要统一开发环境或涉及多核架构(如Cortex-A/R)的项目,越来越多的用户选择从Keil MDK迁移到IAR EWARM。这就会面临着需要将之前的Keil MDK工程迁移到IAR EWARM的问题。本文将介绍如何高效完成这一迁移,帮助开发者快速适应新环境。
准备工作
- IAR EWARM集成开发环境
- 对应Arm Cortex-M MCU的IAR EWARM支持包:如果对应(yīng)MCU已(yǐ)经(jīng)在(zài)IAR EWARM的(de)官(guān)方(fāng)支(zhī)持(chí)列(liè)表(biǎo)内(nèi),则(zé)对(duì)应(yīng)MCU的(de)支(zhī)持(chí)包(bāo)也(yě)会(huì)在(zài)IAR EWARM的(de)安(ān)装(zhuāng)包(bāo)内(nèi);若(ruò)未(wèi)在(zài),则(zé)需(xū)要(yào)联(lián)系(xì)对(duì)应(yīng)MCU厂(chǎng)家(jiā)提(tí)供(gōng)IAR EWARM支(zhī)持(chí)包(bāo)(绝(jué)大(dà)多(duō)数厂家都会同时提供Keil MDK和IAR EWARM的支持包)
将Keil MDK工程迁移到IAR EWARM
下面介绍将Keil MDK工程迁移到IAR EWARM的具体步骤:
安装IAR EWARM:安装时参考对应的安装说明进行操作即可。
转换工程:利用IAR Project Converter工具将Keil MDK工程转换成IAR EWARM工程
打开IAR EWARM,Help > Migration > Keil μVision Migration Guide打开对应的说明文档:
Tools > Project Converter打开IAR Project Converter,对应的Project type选择Keil μVision5 for Arm,本文以STM32F405的GPIO示例工程为例,点击Execute:
在弹出的对话框中选择目标工程路径,以GPIO示例工程下面的EWARM为例,点击OK:

对应Report会提示转换的IAR工程信息,点击OK:

在对话框中点击Close完成工程转换:

编译调试:在IAR EWARM中编译调试转换的工程
File > Open Workspace…打开转换的工程:
选择前面转换好的工程,点击Open:

出现下面的提示对话框,点击Yes:

右击工程选择Options(或者Project > Options)打开工程选项配置:

在General Options > Target > Device选择对应的MCU型号(以STM32F405RG为例):

在General Options > Target > 32-bit选择对应的FPU配置(以STM32F405RG包含的VFPv4 single precision为例):

在General Options > Linker > Output > Out filename中将对应的输出文件名字改为$PROJ_FNAME$($PROJ_FNAME$代表工程名):

此时如果编译(右击工程选择Make或者Project > Make):

正常情况下汇编启动文件会报错:
因为Keil MDK和IAR EWARM的汇编启动代码格式不一样,需要将Keil MDK中的汇编启动代码换成IAR EWARM的汇编启动代码(绝大多数MCU厂家会同时提供Keil MDK和IAR EWARM的汇编启动代码)。如果没有现成的IAR EWARM汇编启动代码,可以参考IAR EWARM中相同Cortex-M MCU的汇编启动代码,然后将Keil MDK汇编启动代码中对应的中断处理函数适配到IAR EWARM当中。
修改汇编启动代码之后,重新编译(右击工程选择Rebuild All或者Project > Rebuild All):

正常情况下工程编译成功(Build窗口显示Total number of errors: 0, Build succeeded说明编译成功):

编译成功之后就可以进行下载调试了,右击工程选择Options(或者Project > Options)打开工程选项配置,Debugger > Setup > Driver选择对应的硬件仿真器(以I-jet为例):

点击Download and Debug按钮或者Project > Download and Debug开始下载调试:

正常情况下应用程序会下载到目标系统,然后停在main函数入口:

至此将Keil MDK工程成功迁移到IAR EWARM并进行编译、下载调试。
注意事项
上文以一个简单的GPIO示例工程介绍了如何将Keil MDK工程成功迁移到IAR EWARM并进行编译、下载调试。实际项目比GPIO示例工程要复杂得多,迁移过程可能会遇到其他一些问题,下面列举了一些注意事项:
printf函数重定向
Keil MDK里面printf函数通过fputc函数进行重定向,而新版本的IAR EWARM里面printf函数通过__write函数进行重定向。
汇编代码
Keil MDK和IAR EWARM的汇编代码格式不一样,虽然目前Cortex-M MCU的大部分代码是C/C++,但是如果代码中使用了相关的汇编代码,在迁移过程中需要进行转换(前面提到的启动代码就是一个示例)。更多关于Keil MDK和IAR EWARM的汇编代码格式,需要参考对应工具的汇编代码使用文档。
intrinsic函数
intrinsic函数是编译器提供的内部函数,通常来说不同编译器提供的intrinsic函数名字不一样。Arm Cortex-M MCU开发大部分会采用满足CMSIS标准的函数,如果使用了编译器的intrinsic函数,在迁移过程中需要适配(比如Keil MDK对应NOP指令的intrinsic函数是__nop,而IAR EWARM对应NOP指令的intrinsic函数是__no_operation)。更多关于intrinsic函数的信息,需要参考对应编译器的使用文档。
#pragma命令
#pragma命令用于控制编译器的特定行为,通常来说不同的编译器支持的#pragma命令不同,如果代码里面使用了#pragma命令,在迁移过程中需要适配。更多关于#pragma命令的信息,需要参考对应编译器的使用文档。
链接脚本文件
Keil MDK里面的链接脚本文件采用的是分散加载文件(scatter-loading file, .sct)。IAR EWARM的链接脚本文件采用的是链接器配置文件(ilinker configuration file, .icf)。绝大多数MCU厂家会同时提供Keil MDK和IAR EWARM的链接脚本文件。但是如果有一些定制化的需求,那么需要用户修改对应的链接脚本文件。更多关于链接脚本文件的信息,需要参考对应编译器的使用文档。
工程目录
目前Keil MDK只支持一级目录,之前转换过来的IAR过程显示如下:

IAR EWARM支持多级目录,可以将上面的一级目录工程转换成下(xià)面(miàn)多(duō)级(jí)目(mù)录(lù)工(gōng)程(chéng):
总结
本文详细介绍了如何将Keil MDK工程迁移到IAR EWARM,帮助用户快速实现迁移,借助IAR Project Converter工具可以很方便地将Keil MDK工程转换成IAR EWARM工程,同时列举了在迁移过程中的一些注意事项。尽管过程中可能需手动调整部分配置,但IAR的多核支持与灵活性能为后续开发带来显著便利。若遇到问题,建议参考官方文档或社区论坛获取进一步支持。
相关新闻
当你在机场看到国产大飞机C919优雅起降时,可能想不到它的“诞生过程”有多硬核——这架拥有6万多个🔻零件、翼展35.8米的“钢铁巨兽”,其装配精度要控制在头发丝直径级别。更让人惊叹的是,沈阳中航沈飞民机工厂的自动化生产线,仅用6个关键零件就能创造年产值3亿元的奇迹。今天咱们就唠唠,C919在自动化装配路上啃下的五大“硬骨头”。第一块硬骨头:百万级制孔(kǒng)的(de)“针(zhēn)尖
想(xiǎng)象(xiàng)一(yī)下(xià),过(guò)去(qù)一(yī)条(tiáo)电(diàn)机(jī)装(zhuāng)配(pèi)线(xiàn)需(xū)要(yào)20名工(gōng)人(rén)轮(lún)班(bān)操(cāo)作(zuò),每(měi)天(tiān)最(zuì)多(duō)生(shēng)产(chǎn)500台(tái)电(diàn)机(jī);而
深圳市物联网产业协会成功举办《24小时自助图书馆通用规范》团体标准评审会
【导语】2019 年深圳市物联网产业协会发布的《24 小时自助图书馆通用规范》部分指标落后且引用文件有更新,不利行业发展。为此协(xié)会(huì)于(yú) 2024 年(nián) 11 月(yuè)启(qǐ)动(dòng)修(xiū)订(dìng)立(lì)项(xiàng),2025 年(nián) 10 月(yuè) 30 日(rì)召(zhào)开(kāi)评(píng)审(shěn)
全球智能视觉处理芯片龙头冲刺港交所:光环之下,何以冲破增长枷锁?
【导语】近日,智能视觉处理芯片龙头富瀚微递交港交所招股书,吹响“A+H”双上市号角。其虽在全球市场占据领先地位,但2022 - 2025年上半年营收、净利、毛利率均逐年下滑。不过,富瀚微注重研发创新,积极拓展AI新业务版图。此次赴港上市,能否助力其突破瓶颈、续写传奇,值得期待(dài)。 近(jìn)日(rì),智(zhì)能视觉处理芯片龙头富瀚微正式向港交所递交了招股书,吹响“
国家发改委等五部门:探索推动具身智能机器人进社区、进家庭,到 2027 年底建成 50 个以上全域数字化转型城市
【导语】10月31日,国家发展改革委等五部门发布《深化智慧城市发展推进全域数字化转型行动计划》,提出到2027年底建成50个以上全域数(shù)字(zì)化(huà)转(zhuǎn)型(xíng)城(chéng)市(shì),2035年(nián)涌(yǒng)现(xiàn)一(yī)批(pī)具(jù)有(yǒu)国(guó)际(jì)竞(jìng)争(zhēng)力(lì)的(de)现(xià
2025深圳安博会:大公博创揽三奖 低空安防技术引国内外媒体聚焦
【导语】2025年10月28日至31日,第二十届中国国际社会公共安全博览会在深圳启幕。成都大公博创信息技术有限(xiàn)公(gōng)司(sī)携(xié)全系(xì)列(liè)低(dī)空(kōng)安(ān)防(fáng)设(shè)备(bèi)参(cān)展(zhǎn),凭(píng)借(jiè)三(sān)项(xiàng)权(quán)威(wēi)大(dà)奖(jiǎng)、全栈(zh
【导语】中国电信率先公开展示业内首个“北斗语音消息”服务,首创 AI 算法实现语音极速传输;与此同时,华为也在第四届北斗峰会上发布相关功能,其手(shǒu)表(biǎo)成(chéng)首(shǒu)款(kuǎn)支(zhī)持(chí)终(zhōng)端(duān),北(běi)斗(dòu)应(yīng)用(yòng)再(zài)掀(xiān)新(xīn)篇(piān)。 据(jù