本文描述如何將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。
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創建構建配置,后續開發中,可以根據應用需求,輕松地在工具鏈之間切換。
4 如果導入過程順利,將彈出以下狀態窗口:
5 Embedded Studio將根據使用的內部和外部編譯器為debug和release版本自動創建構建配,配置將與IAR項目中已有的配置相匹配。要在不同的構建配置之間進行切換,可以使用“Project Explorer”中的下拉菜單實現。
6 要使用IAR編譯器調試示例項目,請在下拉菜單中選擇“Debug_External”,然后按F7構建該項目。
7 對于大多數項目,都可以通過上述操作導入并成功運行,如果出現構建錯誤,請參考“故障排除”一節。
注意:雖然可以僅運行調用外部工具鏈的外部配置,但我們建議切換到SEGGER工具鏈,因為在調試外部工具鏈創建的代碼時,某些調試功能不可用。
2如何切換到EmbeddedStudio內部編譯器
為了充分利用Embedded Studio的功能,需要使用SEGGER內部編譯器,該編譯器基于Clang。
在提供的示例項目中,通過下拉菜單選擇“Debug_Internal”,按F7后,項目將使用SEGGER內部編譯器構建。如需使用其他內部編譯器,如gcc,可以在項目options中啟用。
使用內部編譯器成功構建項目之后,Embedded Studio將自動計算應用的Flash和RAM占用情況,并在輸出窗口中直觀地展示。
注意:此功能僅在使用內部編譯器時可用。
如果你計劃使用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的內存段的設備內存映射文件:
相應的鏈接器文件將引用內存映射文件的內存段,并列出要放置在這些段中的節。
要添加新的段或節,只需編輯Embedded Studio提供的默認文件。使用鏈接的文件可以在“Linker→Linker Script File”選項中找到。
第三方軟件和庫
第三方軟件,特別是庫,可能是基于某個工具鏈配置,無法用其他工具鏈直接編譯。
檢查是否有Embedded Studio/SEGGER工具鏈的軟件庫移植版本,或者基于SEGGER工具鏈配置并重構軟件庫。
盡管基于其它工具鏈構建的庫可以鏈接到Embedded Studio,但實際運行時,還需檢查與庫的接口是否按預期工作,避免系統錯誤。
匯編代碼
匯編程序代碼和控制命令的語法在不同的工具鏈中存在差異。盡管最終的匯編指令是相同的,但是在不同的工具鏈上編寫的匯編代碼可能不同,例如,IAR和GCC/Clang編譯器中,數值常量聲明方式并不相同。
編寫匯編代碼的控制命令也存在區別。符號、標簽、函數定義等的語法需要根據編譯器要求進行調整,確保代碼在新的工具鏈中正常工作。
下表顯示了一些常用的匯編指令及其在不同工具鏈中的指令代替:
完整的指令列表可以參考相應的匯編手冊。
預處理器定義
不同的工具鏈使用不同的預定義來識別所使用的編譯器,并允許基于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()的替換函數可以定義為:
為了實現與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商業授權,具有豐富的軟件開發與調試工具使用方面的知識和經驗,歡迎咨詢[email protected]。
-
IAR
+關注
關注
5文章
369瀏覽量
37242 -
Embedded
+關注
關注
0文章
49瀏覽量
22642 -
編譯器
+關注
關注
1文章
1654瀏覽量
49887 -
Studio
+關注
關注
2文章
204瀏覽量
29508 -
評估板
+關注
關注
1文章
645瀏覽量
29945
原文標題:如何將項目從IAR遷移到Embedded Studio
文章出處:【微信號:麥克泰技術,微信公眾號:麥克泰技術】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
如何將PC Vivado項目遷移到Linux?
如何將項目從開發板遷移到實際板
如何將EDK planAhead項目遷移到vivado
如何將SES工程從GNU工具鏈遷移到Segger工具鏈上?
請問哪里可以找到用于IAR Embedded Workbench的STM32G0處理器的啟動文件?
如何將項目從STM32F746G-disco遷移到STM32H735-DK?
如何將Keil μVision工程遷移到SEGEGR Embedded Studio?
如何將項目從Arm Compiler 5遷移到Arm Compiler 6
如何將項目從VDK遷移到μC/OS-III中
如何將Keil μVision工程遷移到SEGEGR Embedded Studio?
如何將數據從MySQL遷移到Influxdb中
從Keil MDK到IAR EWARM:通過工程遷移實現項目資產的更好管理

評論