当前位置:首页 > 厂商动态 > IAR
[导读]随着嵌入式系统开发的复杂度不断提升,开发人员参与的项目随时可以超越Cortex-M系列,这对集成开发环境(IDE)也提出了更高的要求,最好能够用一套IDE来管理、开发和保护日益多样化的工程项目。Keil MDK和IAR EWARM是市面上最常见的两款用于Arm Cortex-M MCU开发的集成开发环境。目前Keil MDK主要支持Arm Cortex-M,对于Arm Cortex-A和Cortex-R的开发,则需要借助Arm Development Studio的支持。

随着嵌入式系统开发的复杂度不断提升,开发人员参与的项目随时可以超越Cortex-M系列,这对集成开发环境(IDE)也提出了更高的要求,最好能够用一套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处理器的支持。对于需要统一开发环境或涉及多核架构(如Cortex-A/R)的项目,越来越多的用户选择使用一套IDE——IAR EWARM。这样比同时使用两套工具要方便得多,同时它能减少开发过程中的环境切换成本,避免因工具差异导致的兼容性问题,提高开发效率。同时,统一的开发环境更便于管理工程资产,降低学习成本,让开发者专注于项目开发本身。

要实现这种统一的IDE首先要做的准备工作是请确保已经安装了IAR EWARM集成开发环境。同时,也需要获取对应Arm Cortex-M MCU的IAR EWARM支持包:如果对应MCU已经在IAR EWARM的官方支持列表内,则对应MCU的支持包也会在IAR EWARM的安装包内;如果不在支持列表中,则需要联系对应MCU厂家提供IAR EWARM支持包(绝大多数厂家都会同时提供Keil MDK和IAR EWARM的支持包)。

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:

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

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

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

在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开始下载调试:

至此将Keil MDK工程成功迁移到IAR EWARM并进行编译、下载调试。

注意事项

上文介绍了如何开始IAR EWARM并进行编译、下载调试,并建立可以支持主要Arm工程资产的IDE。实际项目要复杂得多,在过程可能会遇到其他一些问题,下面列举了一些注意事项:

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支持多级目录,可以将上面的一级目录工程转换成下面多级目录工程:

总结

本文详细介绍了利用IAR EWARM对Arm产品的多元化支持,通过IAR EWARM,帮助用户快速把工程资产迁移到可支持Cortex-M、Cortex-A和Cortex-R的IAR平台上,借助IAR Project Converter工具可以很方便地将Keil MDK工程转换成IAR EWARM工程,同时列举了一些注意事项。尽管过程中可能需手动调整部分配置,但IAR的多核支持与灵活性能为后续开发带来显著便利。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭