0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

互联网资讯 来源:夏青 作者:夏青 2025-05-08 09:03 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

作者:夏青

随着嵌入式系统开发的复杂度不断提升,开发人员对集成开发环境( 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 支持包:如果对应 MCU 已经在 IAR EWARM 的官方支持列表内,则对应 MCU 的支持包也会在 IAR EWARM 的安装包内;若未在,则需要联系对应 MCU 厂家提供 IAR EWARM 支持包(绝大多数厂家都会同时提供 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 打开对应的说明文档:

wKgZO2gcAFCAYCZjAAlnZVvXhJk738.png

Tools > Project Converter 打开 IAR Project Converter ,对应的 Project type 选择 Keil μVision5 for Arm ,本文 以STM32F405 的 GPIO 示例工程为例,点击 Execute:

wKgZO2gcAGCAAyFWABu5l4ZzEJo028.png

在弹出的对话框中选择目标工程路径,以GPIO 示例工程下面的 EWARM 为例,点击 OK :

wKgZPGgcAHaASu-kAAdR738qIn0807.png

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

wKgZPGgcAImAZMiIAA0buhjVxCY413.png

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

wKgZPGgcAKmADNo7ABu5l9sfkIU083.png

编译调试 : 在IAR EWARM 中编译调试转换的工程

File > Open Workspace… 打开转换的工程:

wKgZPGgcALqAXIfjAAKFbUQDNUk508.png

选择前面转换好的工程,点击Open:

wKgZPGgcAMeAZjxhAAu--gFebHI980.png

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

wKgZPGgcANyAPNphAATvUDDm3mA944.png

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

wKgZO2gcAOyAICk2AAgrznwPfy8791.png

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

wKgZO2gcAPeATWG_AAl2oMSkI_s374.png

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

wKgZPGgcAQyAKNSjAAy3fOQwsSw542.png

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

wKgZPGgcASqAEpHsAAzHt6mJywk873.png

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

wKgZPGgcAUiAK_EyAAOnPBa6v4o272.png

正常情况下汇编启动文件会报错 :

wKgZPGgcAWaABQYLAAsVVxQL-BE370.png

因为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 ):

wKgZPGgcAYiAAzHvAAjFxQWPoKo642.png

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

wKgZO2gcAZKAMCkQAAsewK32pQM880.png

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

wKgZO2i_896AStkwABKhhwPXJN0006.png

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

wKgZO2gcAcCAeiuPAAJoNYenmf8873.pngwKgZO2gcAdCAXS8dAAKRTV7qQSQ457.png

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

wKgZO2gcAe6AUVgGAAsCebtjRzo641.png

至此将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 过程显示如下:

wKgZPGgcAjCATMQUAA4GAZXBJRg682.png

IAR EWARM 支持多级目录,可以将上面的一级目录工程转换成下面多级目录工程:

wKgZO2i_9BGAKNBAABMQc-OcqIk041.png

总结

本文详细介绍了如何将Keil MDK 工程迁移到 IAR EWARM , 帮助用户快速 实现 迁移,借助IAR Project Converter 工具可以很方便地将 Keil MDK 工程转换成 IAR EWARM 工程,同时列举了在迁移过程中的一些注意事项。 尽管过程中可能需手动调整部分配置,但 IAR 的多核支持与灵活性能为后续开发带来显著便利。若遇到问题,建议参考官方文档或社区论坛获取进一步支持。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • IAR
    IAR
    +关注

    关注

    5

    文章

    400

    浏览量

    38333
  • IDE
    IDE
    +关注

    关注

    0

    文章

    363

    浏览量

    48727
  • keil
    +关注

    关注

    69

    文章

    1224

    浏览量

    171778
  • MDK
    MDK
    +关注

    关注

    4

    文章

    211

    浏览量

    33455
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    转:STM32 IAR工程->Keil MDK转换详解

    工程文件夹内。 第三步、为ADC_MDK工程添加使用到的库函数文件,然后进行编译。 最后的工程目录: 只需以上三步,不用改动任何代码就能搞定
    发表于 02-03 10:41

    【XNUCLEO-F030R8试用体验】之二-MDK & IAR工程搭建

    ,进入工程目录管理对话框,使用这个对话框,可以分类管理工程的文件,在这里插一句,mdk工程
    发表于 04-27 15:48

    KEIL RVMDK IARADSRealView MDK各种开发手册收集整理下载

    分享mdk等手册供大家下载KEIL UV3 MDK快速入门.pdf Keil用户手册.chm RVMDK介绍.pdf STM32-IAR
    发表于 07-02 06:39

    KEIL RVMDK IARADSRealView MDK各种开发手册收集整理下载

    分享mdk等手册供大家下载KEIL UV3 MDK快速入门.pdf Keil用户手册.chm RVMDK介绍.pdf STM32-IAR
    发表于 07-06 05:49

    是否可以将STM32 FOC SDK与IAR EWARMKeil MDK-ARM之外的编译器一起使用

    我想知道我是否可以将STM32 FOC SDK与IAR EWARMKeil MDK-ARM之外的编译器一起使用。 我已经查阅了一份名为“STM32 PMSM FOC SDK 4.2
    发表于 07-04 06:15

    基于Keil MDK-ARM 和 IAR EWARM进行仿真打印的配置

    基于Keil MDK-ARM 和 IAR EWARM进行仿真打印的配置
    发表于 12-02 06:38

    如何将Keil μVision工程迁移到SEGEGR Embedded Studio?

    和GCC,也支持外部工具链,如Clang/LLVM、IAR或ARM/KEIL编译器。我们以一个基于Keil μVision 5.32的项目为例,介绍如何将其
    发表于 01-31 14:00

    IAR工程怎么移植keil

    IAR工程怎么移植keil
    发表于 09-21 07:48

    IAR EWARM安装、使用说明

    IAR EmbeddedWorkbench for ARM(下面简称IAR EWARM)是一个针对ARM 处理器的集成开发环境,它包含项目管理
    发表于 08-29 09:11 170次下载

    ADS工程IAR EWARM上的uCOSII移植的代码分析

    本文档的主要内容详细介绍的是ADS工程IAR EWARM上的uCOSII移植的代码分析免费下载
    发表于 11-28 17:43 13次下载
    ADS<b class='flag-5'>工程</b>在<b class='flag-5'>IAR</b> <b class='flag-5'>EWARM</b>上的uCOSII移植的代码分析

    Keil MDKIAR EWARM新版本问题方案

    Keil MDKIAR EWARM新版本,及不同版本兼容性问题
    的头像 发表于 01-10 14:47 6067次阅读

    Keil MDKIAR EARM的发展历程及历史版本下载

    KeilIAR算是一代经典的IDE工具,之所以这么多人使用,除了工具比较好之外,他们的发展历史比较长也是一个原因。 下面来描述一下Keil MDK
    的头像 发表于 12-31 10:01 6181次阅读

    IAR EWARM的一个函数拷贝Keil里后编译出错了?

    有读者问了这样一个问题:我将IAR EWARM中的一个函数,拷贝Keil MDK-ARM中之后,编译出错了? 为什么在
    的头像 发表于 04-02 10:56 2863次阅读
    将<b class='flag-5'>IAR</b> <b class='flag-5'>EWARM</b>的一个函数拷贝<b class='flag-5'>到</b><b class='flag-5'>Keil</b>里后编译出错了?

    MDK_KEIL5范例转换IAR7.8范例可以通过IAR自带的工具(tool----工程转换)

    Hi all:关于MDK范例版本转换为IAR范例版本,可以使用IAR自带的转换工具(或可以重新建立一个工程),工具使用步骤如下:1.打开IAR
    发表于 12-03 10:51 10次下载
    <b class='flag-5'>MDK_KEIL</b>5范例转换<b class='flag-5'>IAR</b>7.8范例可以<b class='flag-5'>通过</b><b class='flag-5'>IAR</b>自带的工具(tool----<b class='flag-5'>工程</b>转换)

    如何将项目IAR迁移到Embedded Studio

    本文描述如何将IAR EWARM项目迁移到SEGGER Embedded Studio(简称SES)中。
    的头像 发表于 02-25 17:11 1050次阅读
    如何将<b class='flag-5'>项目</b><b class='flag-5'>从</b><b class='flag-5'>IAR</b><b class='flag-5'>迁移</b>到Embedded Studio