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

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

3天内不再提示

如何将项目从IAR迁移到Embedded Studio

麦克泰技术 来源:麦克泰技术 2025-02-25 17:11 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本文描述如何将IAR EWARM项目迁移到SEGGER Embedded Studio(简称SES)中。通过Embedded Studio内置的项目导入器,用户可以在SES中继续使用IAR工具链或使用Embedded Studio内部集成的SEGGER工具链。将项目迁移到Embedded Studio,可以直接受益于SES的强大功能,如多线程编译,快速简单的项目搜索,精准的索引等功能。如果仍然决定在Embedded Studio中使用IAR工具链,也有许多可以使用的实用功能。

项目导入说明基于SEGGER emPower评估板,使用的示例项目可以访问:https://kb.segger.com/images/6/6a/IAR_to_ES_Tutorial.zip(复制链接到浏览器)下载。

1导入步骤

1 打开Embedded Studio,选择菜单File→Import IAR EWARM Project…,选择要导入的项目文件Workspace.eww。

b78885bc-f325-11ef-9310-92fbcf53809c.png

2 接下来,设置使用的工具链:

•External Toolchain:导入项目并将其配置为使用原始的IAR工具链构建。

•Internal Toolchain:导入项目并设置使用SES工具链。

•Internal and External Toolchain:创建两组构建配置,一组使用原始的IAR工具链构建项目,另一组使用Embedded Studio工具链进行构建。

•“IAR Installation Directory”,用于设置使用的外部IAR编译器。

3 为了顺利的将项目迁移到Embedded Studio,建议基于Internal and External Toolchain创建构建配置,后续开发中,可以根据应用需求,轻松地在工具链之间切换。

b79aa026-f325-11ef-9310-92fbcf53809c.png

4 如果导入过程顺利,将弹出以下状态窗口:

b7a535e0-f325-11ef-9310-92fbcf53809c.png

5 Embedded Studio将根据使用的内部和外部编译器为debug和release版本自动创建构建配,配置将与IAR项目中已有的配置相匹配。要在不同的构建配置之间进行切换,可以使用“Project Explorer”中的下拉菜单实现。

b7bb2fda-f325-11ef-9310-92fbcf53809c.png

6 要使用IAR编译器调试示例项目,请在下拉菜单中选择“Debug_External”,然后按F7构建该项目。

7 对于大多数项目,都可以通过上述操作导入并成功运行,如果出现构建错误,请参考“故障排除”一节。

注意:虽然可以仅运行调用外部工具链的外部配置,但我们建议切换到SEGGER工具链,因为在调试外部工具链创建的代码时,某些调试功能不可用。

2如何切换到EmbeddedStudio内部编译器

为了充分利用Embedded Studio的功能,需要使用SEGGER内部编译器,该编译器基于Clang。

在提供的示例项目中,通过下拉菜单选择“Debug_Internal”,按F7后,项目将使用SEGGER内部编译器构建。如需使用其他内部编译器,如gcc,可以在项目options中启用。

使用内部编译器成功构建项目之后,Embedded Studio将自动计算应用的Flash和RAM占用情况,并在输出窗口中直观地展示。

b85c5fd6-f325-11ef-9310-92fbcf53809c.png

注意:此功能仅在使用内部编译器时可用。

如果你计划使用SEGGER工具链,我们建议跳过导入工具,直接使用项目向导创建一个新项目。如果有可用CPU的支持包,可以基于支持包和向导方式创建新项目。通过这种方式,所有与Embedded Studio及目标相关的项目设置将自动配置。用户仅需将IAR项目中的源代码文件添加到Embedded Studio文件夹中,并修正特定于IAR的编译错误,并参考故障排除一节说明,修订链接器脚本和内存映射设置,这种方法能够节省大量时间,提高项目迁移效率。

3故障排除

导入的项目可以直接使用外部工具链重新构建运行,但如果基于SEGGER内部工具链构建,可能需要对项目构建配置进行一些手动更改。

通常情况下,如果源代码按Clang兼容的标准创建,这些文件可以直接在SEGGER工具链中使用。如果项目是基于软件包或SDK创建,它可能已经包含了SEGGER工具链兼容的源文件,使用这些文件取代以前工具链兼容的文件即可。

以下列出了将项目迁移到Embedded Studio时,需要更改的要点

3.1 内部配置

内存链接器脚本

Embedded Studio项目导入器不会自动导入链接器脚本(如IAR的icf文件)。它仅为选定的目标处理器设置基本内存映射,将代码放入内部Flash,并将数据放入内部RAM中。

对于更复杂或特殊的配置,必须相应地设置内存映射文件和段放置文件。

在Embedded Studio中有两种方式可以设置内存段的放置:

1 通过项目options中的“Linker→Memory Segments”选项直接放置段。

2 创建一个内存映射.xml文件或编辑Embedded Studio提供的默认文件,并设置“Linker→Memory Map File”指向该文件。

示例如下,一个具有两个名为FLASH和RAM的内存段的设备内存映射文件:

b8c81a78-f325-11ef-9310-92fbcf53809c.png

相应的链接器文件将引用内存映射文件的内存段,并列出要放置在这些段中的节。

要添加新的段或节,只需编辑Embedded Studio提供的默认文件。使用链接的文件可以在“Linker→Linker Script File”选项中找到。

第三方软件和库

第三方软件,特别是库,可能是基于某个工具链配置,无法用其他工具链直接编译。

检查是否有Embedded Studio/SEGGER工具链的软件库移植版本,或者基于SEGGER工具链配置并重构软件库。

尽管基于其它工具链构建的库可以链接到Embedded Studio,但实际运行时,还需检查与库的接口是否按预期工作,避免系统错误。

汇编代码

汇编程序代码和控制命令的语法在不同的工具链中存在差异。尽管最终的汇编指令是相同的,但是在不同的工具链上编写的汇编代码可能不同,例如,IAR和GCC/Clang编译器中,数值常量声明方式并不相同。

编写汇编代码的控制命令也存在区别。符号、标签、函数定义等的语法需要根据编译器要求进行调整,确保代码在新的工具链中正常工作。

下表显示了一些常用的汇编指令及其在不同工具链中的指令代替:

b8d4a022-f325-11ef-9310-92fbcf53809c.png

完整的指令列表可以参考相应的汇编手册。

预处理器定义

不同的工具链使用不同的预定义来识别所使用的编译器,并允许基于core、device、endianness和其他设置进行条件编译。

在项目迁移时,必须选择正确的定义,并建议在未定义所需条件时产生警告或错误提示。

IAR定义了__ICCARM__和__IAR_SYSTEMS_ICC__用于标识自身工具链,Embedded Studio定义了__SES_ARM和__SEGGER_CC__。

对于目标设备,IAR在编译Cortex-M4时定义了__ARM7M__和__CORE__=__ARM7M__,而Embedded Studio则使用__ARM_ARCH_7M__替代。

工具链内联函数

一些特定于编译器的函数,如__disable_interrupt()或__no_operation()在Embedded Studio中并不存在。需编写相应的替换函数或避免使用类似函数。

对于SEGGER编译器,__no_operation()的替换函数可以定义为:

b8e49e64-f325-11ef-9310-92fbcf53809c.png

为了实现与IAR的向后兼容性,重定义可以嵌套在预处理器定义中。IAR EWARM使用__ICCARM__,Embedded Studio使用__SEGGER_CC__。

项目设置

大多数项目设置都是由项目导入器为外部和内部构建配置自动设置的。在一些更复杂的项目中,需要手动添加某些项目设置。

例如,默认情况下,内部构建配置中不会排除任何文件,所以如果存在编译器不兼容的文件,编译器将尝试编译它并显示错误(例如GCC/Clang不兼容的汇编文件)。

可以Project Explorer右键单击项目,并选择“Edit options”修改。

用户包含目录

许多复杂项目的源代码分布在不同路径的多个文件夹中。确保所有需要的文件夹都包含在“Preprocessor→User Include Directories”下的构建配置中。

Pre/Post Build命令

Embedded Studio提供了类似IAR EWARM中的pre/post构建命令。然而,由于IAR和Embedded Studio之间的语法存在差异,项目导入器不会自动导入这些命令。

如果在IAR中使用这些命令,请确保在Embedded Studio的内部和外部构建配置中相应地模拟这些指令。要一次执行多个命令,也可以使用批处理脚本。

例如,要启用post-link批处理脚本,可以打开项目options中的构建配置,在“User build Step”下编辑post-link Command命令。在该条目中,输入bat文件的相对或绝对路径以及可选参数,格式如下:路径/ Example.bat Param1 Param2…。

3.2 外部配置

由于Embedded Studio只是通过命令行调用IAR工具链,因此只需以与EWARM相同的方式调用它即可使外部构建工作。导入工具将尝试从IAR项目设置中检测尽可能多的项目设置。但是,由于IAR IDE可能会随着更新而变化,因此可能无法正确检测到某些选项。

要解决这个问题,最简单的方法是从IAR导出build命令行,并将其与Embedded Studio中的设置进行匹配,操作步骤如下:

在EWARM中打开IAR项目

在Build窗口中右键单击并选择Filter Level:All

重新构建项目

将构建日志复制到编辑器中

关闭EWARM并打开Embedded Studio

在项目资源管理器中右键单击项目并选择Export Build

比较EWARM和Embedded Studio的构建命令行,查看Embedded Studio缺少的选项并修正。

修正构建配置

要修正IAR构建命令行和Embedded Studio之间的差异,只需在Embedded Studio打开项目options。在大多数情况下必须纠正针对编译器(iccarm)、汇编器(iasmarm)和链接器(ilinkarm)的命令行调用。用户可以自己设置构建命令行的相应项目选项,或者直接转到项目选项中的外部构建选项并直接编辑命令行。

完成上述步骤后,如果成功地匹配了EWARM和Embedded Studio的构建命令,那么应用程序可以基于Embedded Studio成功构建了。

麦克泰技术提供SEGGER Embedded Studio商业授权,具有丰富的软件开发与调试工具使用方面的知识和经验,欢迎咨询info@bmrtech.com。

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

    关注

    5

    文章

    400

    浏览量

    38344
  • Embedded
    +关注

    关注

    0

    文章

    51

    浏览量

    23456
  • 编译器
    +关注

    关注

    1

    文章

    1669

    浏览量

    51083
  • Studio
    +关注

    关注

    2

    文章

    221

    浏览量

    30561
  • 评估板
    +关注

    关注

    1

    文章

    890

    浏览量

    30914

原文标题:如何将项目从IAR迁移到Embedded Studio

文章出处:【微信号:麦克泰技术,微信公众号:麦克泰技术】欢迎添加关注!文章转载请注明出处。

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何将PC Vivado项目迁移到Linux?

    大家好,我需要将Vivado项目PC迁移到Linux工作站。我应该为此目的做些什么?PC上的Vivado版本:2015.4PC:Win7 x64谢谢!以上来自于谷歌翻译以下为原文Hi All, I
    发表于 12-21 11:01

    如何将项目开发板迁移到实际板

    所以,我有一个全歌舞的应用程序,我想从PIC32 MZ EF DEV Boad迁移到我自己的自定义板。(其使用PIC32 MZ2048 EFM100与144)。它的设置是在Harmony 1.08中,当然,引脚和材料设置不同……迁移项目的最佳方法是什么?MHC似乎很快就破
    发表于 10-22 13:52

    如何将EDK planAhead项目迁移到vivado

    大家好,我正在EDK planAhead项目迁移到vivado。在迁移我的一个pcoreblock时,我收到了该错误,并且迁移根本没有发生
    发表于 05-05 16:59

    如何将CCSv3.3迁移到CCSv4?

    如何将CCSv3.3迁移到CCSv4
    发表于 02-25 07:15

    如何将SES工程GNU工具链迁移到Segger工具链上?

    的STM32F401RE的GNU工具链项目为例,介绍如何将迁移到Segger自己的工具链上。#迁移过程1、链接器改成Segger选中
    发表于 04-21 14:34

    如何将项目STM32F746G-disco迁移到STM32H735-DK?

    您好, touchGFX 项目 STM32F746G-disco 迁移到 STM32H735-DK 的最快方法是什么?实际上在touchGFX应用模板上我无法选择STM32H735
    发表于 01-11 06:56

    如何将CubeMX项目从一系列MCU迁移到新系列的MCU?

    如何将 CubeMX 项目从一系列 MCU 迁移到新系列的 MCU?
    发表于 01-16 07:02

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

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

    如何将应用程序项目S32DS for ARM和SDK3.0.0迁移到S32DS 3.4和SDK4.0.1?

    我正在尝试应用程序项目 S32DS for ARM 和 SDK3.0.0 迁移到 S32DS 3.4 和 SDK4.0.1。S32DS 3.4 中有 3 个
    发表于 03-21 08:02

    如何将项目Arm Compiler 5迁移到Arm Compiler 6

    按照本教程中的步骤,现有的Arm Compiler 5裸机项目迁移到Arm Compiler 6裸机项目。完成迁移后,就可以重新构建您的可
    发表于 08-02 14:42

    如何将项目VDK迁移到µC/OS-III中

    本培训模块一步一步地说明如何将一个项目VDK (VisualDSP++ Kernel)迁移到µC/OS-III™
    的头像 发表于 07-12 06:10 2793次阅读

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

    和GCC,也支持外部工具链,如Clang/LLVM、IAR或ARM/KEIL编译器。我们以一个基于Keil μVision 5.32的项目为例,介绍如何将迁移到SES 中。
    的头像 发表于 01-13 11:24 3620次阅读

    如何将LPC84x迁移到LPC86x

    电子发烧友网站提供《如何将LPC84x迁移到LPC86x.pdf》资料免费下载
    发表于 08-16 16:56 0次下载
    <b class='flag-5'>如何将</b>LPC84x<b class='flag-5'>迁移到</b>LPC86x

    如何将数据MySQL迁移到Influxdb中

    如果以前是时序数据存放在MySQL,现在为了获取更好的性能和使用可视化工具,我们需要将数据MySQL迁移到Influxdb中。 这看起来是一个常见场景,经过一番查阅,发现了
    的头像 发表于 11-02 10:54 1945次阅读

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

    对于需要统一开发环境或涉及多核架构(如Cortex-A/R)的项目,越来越多的用户选择Keil MDK迁移到IAR EWARM。这就会面临着需要将之前的Keil MDK工程
    的头像 发表于 05-08 09:03 1002次阅读
    <b class='flag-5'>从</b>Keil MDK到<b class='flag-5'>IAR</b> EWARM:通过工程<b class='flag-5'>迁移</b>实现<b class='flag-5'>项目</b>资产的更好管理