在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 98|回复: 0

[原创] 从Keil MDK到IAR EWARM:通过工程迁移实现项目资产的更好管理

[复制链接]
发表于 11 小时前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
随着嵌入式系统开发的复杂度不断提升,开发人员对集成开发环境(IDE)的需求也日益多样化。Keil MDK和IAR EWARM是市面上最常见的两款用于ArmCortex-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支持包:如果对应MCU已经在IAR EWARM的官方支持列表内,则对应MCU的支持包也会在IAR EWARM的安装包内;若未在,则需要联系对应MCU厂家提供IAR EWARM支持包(绝大多数厂家都会同时提供Keil MDK和IAR EWARM的支持包)
KeilMDK工程迁移到IAREWARM
下面介绍将Keil MDK工程迁移到IAR EWARM的具体步骤:
安装IAR EWARM:安装时参考对应的安装说明进行操作即可。
转换工程:利用IAR Project Converter工具将Keil MDK工程转换成IAR EWARM工程
编译调试:在IAR EWARM中编译调试转换的工程
Keil MDK和IAR EWARM的汇编启动代码格式不一样,需要将Keil MDK中的汇编启动代码换成IAR EWARM的汇编启动代码(绝大多数MCU厂家会同时提供Keil MDK和IAR EWARM的汇编启动代码)。如果没有现成的IAR EWARM汇编启动代码,可以参考IAR EWARM中相同Cortex-M MCU的汇编启动代码,然后将Keil MDK汇编启动代码中对应的中断处理函数适配到IAR EWARM当中。
编译成功之后就可以进行下载调试了。至此将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 EWARM支持多级目录,可以将一级目录工程转换成多级目录工程
总结
本文详细介绍了如何将Keil MDK工程迁移到IAR EWARM,帮助用户快速实现迁移,借助IAR Project Converter工具可以很方便地将Keil MDK工程转换成IAR EWARM工程,同时列举了在迁移过程中的一些注意事项。尽管过程中可能需手动调整部分配置,但IAR的多核支持与灵活性能为后续开发带来显著便利。若遇到问题,建议参考官方文档或社区论坛获取进一步支持。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-5-6 21:44 , Processed in 0.011962 second(s), 7 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表