0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何將項目從IAR遷移到Embedded Studio

麥克泰技術(shù) ? 來源:麥克泰技術(shù) ? 2025-02-25 17:11 ? 次閱讀

本文描述如何將IAR EWARM項目遷移到SEGGER Embedded Studio(簡稱SES)中。通過Embedded Studio內(nèi)置的項目導(dǎo)入器,用戶可以在SES中繼續(xù)使用IAR工具鏈或使用Embedded Studio內(nèi)部集成的SEGGER工具鏈。將項目遷移到Embedded Studio,可以直接受益于SES的強(qiáng)大功能,如多線程編譯,快速簡單的項目搜索,精準(zhǔn)的索引等功能。如果仍然決定在Embedded Studio中使用IAR工具鏈,也有許多可以使用的實(shí)用功能。

項目導(dǎo)入說明基于SEGGER emPower評估板,使用的示例項目可以訪問:https://kb.segger.com/images/6/6a/IAR_to_ES_Tutorial.zip(復(fù)制鏈接到瀏覽器)下載。

1導(dǎo)入步驟

1 打開Embedded Studio,選擇菜單File→Import IAR EWARM Project…,選擇要導(dǎo)入的項目文件Workspace.eww。

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

2 接下來,設(shè)置使用的工具鏈:

?External Toolchain:導(dǎo)入項目并將其配置為使用原始的IAR工具鏈構(gòu)建。

?Internal Toolchain:導(dǎo)入項目并設(shè)置使用SES工具鏈。

?Internal and External Toolchain:創(chuàng)建兩組構(gòu)建配置,一組使用原始的IAR工具鏈構(gòu)建項目,另一組使用Embedded Studio工具鏈進(jìn)行構(gòu)建。

?“IAR Installation Directory”,用于設(shè)置使用的外部IAR編譯器。

3 為了順利的將項目遷移到Embedded Studio,建議基于Internal and External Toolchain創(chuàng)建構(gòu)建配置,后續(xù)開發(fā)中,可以根據(jù)應(yīng)用需求,輕松地在工具鏈之間切換。

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

4 如果導(dǎo)入過程順利,將彈出以下狀態(tài)窗口:

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

5 Embedded Studio將根據(jù)使用的內(nèi)部和外部編譯器為debug和release版本自動創(chuàng)建構(gòu)建配,配置將與IAR項目中已有的配置相匹配。要在不同的構(gòu)建配置之間進(jìn)行切換,可以使用“Project Explorer”中的下拉菜單實(shí)現(xiàn)。

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

6 要使用IAR編譯器調(diào)試示例項目,請在下拉菜單中選擇“Debug_External”,然后按F7構(gòu)建該項目。

7 對于大多數(shù)項目,都可以通過上述操作導(dǎo)入并成功運(yùn)行,如果出現(xiàn)構(gòu)建錯誤,請參考“故障排除”一節(jié)。

注意:雖然可以僅運(yùn)行調(diào)用外部工具鏈的外部配置,但我們建議切換到SEGGER工具鏈,因?yàn)樵谡{(diào)試外部工具鏈創(chuàng)建的代碼時,某些調(diào)試功能不可用。

2如何切換到EmbeddedStudio內(nèi)部編譯器

為了充分利用Embedded Studio的功能,需要使用SEGGER內(nèi)部編譯器,該編譯器基于Clang。

在提供的示例項目中,通過下拉菜單選擇“Debug_Internal”,按F7后,項目將使用SEGGER內(nèi)部編譯器構(gòu)建。如需使用其他內(nèi)部編譯器,如gcc,可以在項目options中啟用。

使用內(nèi)部編譯器成功構(gòu)建項目之后,Embedded Studio將自動計算應(yīng)用的Flash和RAM占用情況,并在輸出窗口中直觀地展示。

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

注意:此功能僅在使用內(nèi)部編譯器時可用。

如果你計劃使用SEGGER工具鏈,我們建議跳過導(dǎo)入工具,直接使用項目向?qū)?chuàng)建一個新項目。如果有可用CPU的支持包,可以基于支持包和向?qū)Х绞絼?chuàng)建新項目。通過這種方式,所有與Embedded Studio及目標(biāo)相關(guān)的項目設(shè)置將自動配置。用戶僅需將IAR項目中的源代碼文件添加到Embedded Studio文件夾中,并修正特定于IAR的編譯錯誤,并參考故障排除一節(jié)說明,修訂鏈接器腳本和內(nèi)存映射設(shè)置,這種方法能夠節(jié)省大量時間,提高項目遷移效率。

3故障排除

導(dǎo)入的項目可以直接使用外部工具鏈重新構(gòu)建運(yùn)行,但如果基于SEGGER內(nèi)部工具鏈構(gòu)建,可能需要對項目構(gòu)建配置進(jìn)行一些手動更改。

通常情況下,如果源代碼按Clang兼容的標(biāo)準(zhǔn)創(chuàng)建,這些文件可以直接在SEGGER工具鏈中使用。如果項目是基于軟件包或SDK創(chuàng)建,它可能已經(jīng)包含了SEGGER工具鏈兼容的源文件,使用這些文件取代以前工具鏈兼容的文件即可。

以下列出了將項目遷移到Embedded Studio時,需要更改的要點(diǎn)

3.1 內(nèi)部配置

內(nèi)存鏈接器腳本

Embedded Studio項目導(dǎo)入器不會自動導(dǎo)入鏈接器腳本(如IAR的icf文件)。它僅為選定的目標(biāo)處理器設(shè)置基本內(nèi)存映射,將代碼放入內(nèi)部Flash,并將數(shù)據(jù)放入內(nèi)部RAM中。

對于更復(fù)雜或特殊的配置,必須相應(yīng)地設(shè)置內(nèi)存映射文件和段放置文件。

在Embedded Studio中有兩種方式可以設(shè)置內(nèi)存段的放置:

1 通過項目options中的“Linker→Memory Segments”選項直接放置段。

2 創(chuàng)建一個內(nèi)存映射.xml文件或編輯Embedded Studio提供的默認(rèn)文件,并設(shè)置“Linker→Memory Map File”指向該文件。

示例如下,一個具有兩個名為FLASH和RAM的內(nèi)存段的設(shè)備內(nèi)存映射文件:

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

相應(yīng)的鏈接器文件將引用內(nèi)存映射文件的內(nèi)存段,并列出要放置在這些段中的節(jié)。

要添加新的段或節(jié),只需編輯Embedded Studio提供的默認(rèn)文件。使用鏈接的文件可以在“Linker→Linker Script File”選項中找到。

第三方軟件和庫

第三方軟件,特別是庫,可能是基于某個工具鏈配置,無法用其他工具鏈直接編譯。

檢查是否有Embedded Studio/SEGGER工具鏈的軟件庫移植版本,或者基于SEGGER工具鏈配置并重構(gòu)軟件庫。

盡管基于其它工具鏈構(gòu)建的庫可以鏈接到Embedded Studio,但實(shí)際運(yùn)行時,還需檢查與庫的接口是否按預(yù)期工作,避免系統(tǒng)錯誤。

匯編代碼

匯編程序代碼和控制命令的語法在不同的工具鏈中存在差異。盡管最終的匯編指令是相同的,但是在不同的工具鏈上編寫的匯編代碼可能不同,例如,IAR和GCC/Clang編譯器中,數(shù)值常量聲明方式并不相同。

編寫匯編代碼的控制命令也存在區(qū)別。符號、標(biāo)簽、函數(shù)定義等的語法需要根據(jù)編譯器要求進(jìn)行調(diào)整,確保代碼在新的工具鏈中正常工作。

下表顯示了一些常用的匯編指令及其在不同工具鏈中的指令代替:

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

完整的指令列表可以參考相應(yīng)的匯編手冊。

預(yù)處理器定義

不同的工具鏈?zhǔn)褂貌煌念A(yù)定義來識別所使用的編譯器,并允許基于core、device、endianness和其他設(shè)置進(jìn)行條件編譯。

在項目遷移時,必須選擇正確的定義,并建議在未定義所需條件時產(chǎn)生警告或錯誤提示。

IAR定義了__ICCARM__和__IAR_SYSTEMS_ICC__用于標(biāo)識自身工具鏈,Embedded Studio定義了__SES_ARM和__SEGGER_CC__。

對于目標(biāo)設(shè)備,IAR在編譯Cortex-M4時定義了__ARM7M__和__CORE__=__ARM7M__,而Embedded Studio則使用__ARM_ARCH_7M__替代。

工具鏈內(nèi)聯(lián)函數(shù)

一些特定于編譯器的函數(shù),如__disable_interrupt()或__no_operation()在Embedded Studio中并不存在。需編寫相應(yīng)的替換函數(shù)或避免使用類似函數(shù)。

對于SEGGER編譯器,__no_operation()的替換函數(shù)可以定義為:

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

為了實(shí)現(xiàn)與IAR的向后兼容性,重定義可以嵌套在預(yù)處理器定義中。IAR EWARM使用__ICCARM__,Embedded Studio使用__SEGGER_CC__。

項目設(shè)置

大多數(shù)項目設(shè)置都是由項目導(dǎo)入器為外部和內(nèi)部構(gòu)建配置自動設(shè)置的。在一些更復(fù)雜的項目中,需要手動添加某些項目設(shè)置。

例如,默認(rèn)情況下,內(nèi)部構(gòu)建配置中不會排除任何文件,所以如果存在編譯器不兼容的文件,編譯器將嘗試編譯它并顯示錯誤(例如GCC/Clang不兼容的匯編文件)。

可以Project Explorer右鍵單擊項目,并選擇“Edit options”修改。

用戶包含目錄

許多復(fù)雜項目的源代碼分布在不同路徑的多個文件夾中。確保所有需要的文件夾都包含在“Preprocessor→User Include Directories”下的構(gòu)建配置中。

Pre/Post Build命令

Embedded Studio提供了類似IAR EWARM中的pre/post構(gòu)建命令。然而,由于IAR和Embedded Studio之間的語法存在差異,項目導(dǎo)入器不會自動導(dǎo)入這些命令。

如果在IAR中使用這些命令,請確保在Embedded Studio的內(nèi)部和外部構(gòu)建配置中相應(yīng)地模擬這些指令。要一次執(zhí)行多個命令,也可以使用批處理腳本。

例如,要啟用post-link批處理腳本,可以打開項目options中的構(gòu)建配置,在“User build Step”下編輯post-link Command命令。在該條目中,輸入bat文件的相對或絕對路徑以及可選參數(shù),格式如下:路徑/ Example.bat Param1 Param2…。

3.2 外部配置

由于Embedded Studio只是通過命令行調(diào)用IAR工具鏈,因此只需以與EWARM相同的方式調(diào)用它即可使外部構(gòu)建工作。導(dǎo)入工具將嘗試從IAR項目設(shè)置中檢測盡可能多的項目設(shè)置。但是,由于IAR IDE可能會隨著更新而變化,因此可能無法正確檢測到某些選項。

要解決這個問題,最簡單的方法是從IAR導(dǎo)出build命令行,并將其與Embedded Studio中的設(shè)置進(jìn)行匹配,操作步驟如下:

在EWARM中打開IAR項目

在Build窗口中右鍵單擊并選擇Filter Level:All

重新構(gòu)建項目

將構(gòu)建日志復(fù)制到編輯器中

關(guān)閉EWARM并打開Embedded Studio

在項目資源管理器中右鍵單擊項目并選擇Export Build

比較EWARM和Embedded Studio的構(gòu)建命令行,查看Embedded Studio缺少的選項并修正。

修正構(gòu)建配置

要修正IAR構(gòu)建命令行和Embedded Studio之間的差異,只需在Embedded Studio打開項目options。在大多數(shù)情況下必須糾正針對編譯器(iccarm)、匯編器(iasmarm)和鏈接器(ilinkarm)的命令行調(diào)用。用戶可以自己設(shè)置構(gòu)建命令行的相應(yīng)項目選項,或者直接轉(zhuǎn)到項目選項中的外部構(gòu)建選項并直接編輯命令行。

完成上述步驟后,如果成功地匹配了EWARM和Embedded Studio的構(gòu)建命令,那么應(yīng)用程序可以基于Embedded Studio成功構(gòu)建了。

麥克泰技術(shù)提供SEGGER Embedded Studio商業(yè)授權(quán),具有豐富的軟件開發(fā)與調(diào)試工具使用方面的知識和經(jīng)驗(yàn),歡迎咨詢info@bmrtech.com。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • IAR
    IAR
    +關(guān)注

    關(guān)注

    5

    文章

    361

    瀏覽量

    36910
  • Embedded
    +關(guān)注

    關(guān)注

    0

    文章

    48

    瀏覽量

    22369
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1645

    瀏覽量

    49468
  • Studio
    +關(guān)注

    關(guān)注

    2

    文章

    197

    瀏覽量

    29070
  • 評估板
    +關(guān)注

    關(guān)注

    1

    文章

    574

    瀏覽量

    29613

原文標(biāo)題:如何將項目從IAR遷移到Embedded Studio

文章出處:【微信號:麥克泰技術(shù),微信公眾號:麥克泰技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 0人收藏

    評論

    相關(guān)推薦

    如何將PC Vivado項目遷移到Linux?

    大家好,我需要將Vivado項目PC遷移到Linux工作站。我應(yīng)該為此目的做些什么?PC上的Vivado版本:2015.4PC:Win7 x64謝謝!以上來自于谷歌翻譯以下為原文Hi All, I
    發(fā)表于 12-21 11:01

    如何將項目開發(fā)板遷移到實(shí)際板

    所以,我有一個全歌舞的應(yīng)用程序,我想從PIC32 MZ EF DEV Boad遷移到我自己的自定義板。(其使用PIC32 MZ2048 EFM100與144)。它的設(shè)置是在Harmony 1.08中,當(dāng)然,引腳和材料設(shè)置不同……遷移項目的最佳方法是什么?MHC似乎很快就破
    發(fā)表于 10-22 13:52

    如何將EDK planAhead項目遷移到vivado

    大家好,我正在EDK planAhead項目遷移到vivado。在遷移我的一個pcoreblock時,我收到了該錯誤,并且遷移根本沒有發(fā)生
    發(fā)表于 05-05 16:59

    如何將CCSv3.3遷移到CCSv4?

    如何將CCSv3.3遷移到CCSv4
    發(fā)表于 02-25 07:15

    如何將SES工程GNU工具鏈遷移到Segger工具鏈上?

    的STM32F401RE的GNU工具鏈項目為例,介紹如何將遷移到Segger自己的工具鏈上。#遷移過程1、鏈接器改成Segger選中
    發(fā)表于 04-21 14:34

    請問哪里可以找到用于IAR Embedded Workbench的STM32G0處理器的啟動文件?

    于 G0(確切地說是 STM32G070RB)處理器的庫。IAR 的文件 startup_stm32g070rbtx.s 是否在任何地方可用,還是我需要自己創(chuàng)建它?或者是否有更簡單的方法 G0 的 STMCubeIDE 項目導(dǎo)
    發(fā)表于 12-12 08:27

    如何將項目STM32F746G-disco遷移到STM32H735-DK?

    您好, touchGFX 項目 STM32F746G-disco 遷移到 STM32H735-DK 的最快方法是什么?實(shí)際上在touchGFX應(yīng)用模板上我無法選擇STM32H735
    發(fā)表于 01-11 06:56

    如何將CubeMX項目從一系列MCU遷移到新系列的MCU?

    如何將 CubeMX 項目從一系列 MCU 遷移到新系列的 MCU?
    發(fā)表于 01-16 07:02

    如何將Keil μVision工程遷移到SEGEGR Embedded Studio

    和GCC,也支持外部工具鏈,如Clang/LLVM、IAR或ARM/KEIL編譯器。我們以一個基于Keil μVision 5.32的項目為例,介紹如何將遷移到SES 中。操作步驟打
    發(fā)表于 01-31 14:00

    如何將應(yīng)用程序項目S32DS for ARM和SDK3.0.0遷移到S32DS 3.4和SDK4.0.1?

    我正在嘗試應(yīng)用程序項目 S32DS for ARM 和 SDK3.0.0 遷移到 S32DS 3.4 和 SDK4.0.1。S32DS 3.4 中有 3 個
    發(fā)表于 03-21 08:02

    如何將項目Arm Compiler 5遷移到Arm Compiler 6

    按照本教程中的步驟,現(xiàn)有的Arm Compiler 5裸機(jī)項目遷移到Arm Compiler 6裸機(jī)項目。完成遷移后,就可以重新構(gòu)建您的可
    發(fā)表于 08-02 14:42

    如何將項目VDK遷移到μC/OS-III中

    本培訓(xùn)模塊一步一步地說明如何將一個項目VDK (VisualDSP++ Kernel)遷移到μC/OS-III?
    的頭像 發(fā)表于 07-12 06:10 ?2247次閱讀

    如何將Keil μVision工程遷移到SEGEGR Embedded Studio?

    和GCC,也支持外部工具鏈,如Clang/LLVM、IAR或ARM/KEIL編譯器。我們以一個基于Keil μVision 5.32的項目為例,介紹如何將遷移到SES 中。
    的頭像 發(fā)表于 01-13 11:24 ?2508次閱讀

    如何將LPC84x遷移到LPC86x

    電子發(fā)燒友網(wǎng)站提供《如何將LPC84x遷移到LPC86x.pdf》資料免費(fèi)下載
    發(fā)表于 08-16 16:56 ?0次下載
    <b class='flag-5'>如何將</b>LPC84x<b class='flag-5'>遷移到</b>LPC86x

    如何將數(shù)據(jù)MySQL遷移到Influxdb中

    如果以前是時序數(shù)據(jù)存放在MySQL,現(xiàn)在為了獲取更好的性能和使用可視化工具,我們需要將數(shù)據(jù)MySQL遷移到Influxdb中。 這看起來是一個常見場景,經(jīng)過一番查閱,發(fā)現(xiàn)了
    的頭像 發(fā)表于 11-02 10:54 ?1372次閱讀

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學(xué)習(xí)
    • 獲取您個性化的科技前沿技術(shù)信息
    • 參加活動獲取豐厚的禮品