S32K1xx系列MCU應用開發指南之IAR toolchain樣例工程及使用常見問題(FAQ)

2021-02-14 汽車電子expert成長之路

內容提要

引言

1. S32K1xx系列MCU的IAR樣例工程

1.1 S32K1xx系列MCU的IAR樣例工程的獲取1.2 S32K1xx系列MCU的IAR樣例工程的使用1.3 S32K1xx系列MCU的IAR toolchain makefile樣例工程的獲取1.4 S32K1xx系列MCU的IAR toolchain makefile樣例工程的使用

2. IAR toolchain使用常見問題(FAQ)

2.2 IAR MCU應用工程的編譯目標切換和創建2.4 IAR中使用S32K1xx EVB的板載OpenSDA作為debugger下載和調試S32K1xx系列MCU的應用工程2.5 在IAR調試界面中查看CPU內核寄存器、外設寄存器、存儲器、函數調用樹、堆棧使用

總結

IAR toolchain 和ARM Keil/MDK toolchain在業界被廣泛地用於開發基於ARM Cortex M內核的MCU的應用軟體,很多ARM Cortex M內核MCU,比如LPC17xx,23/24/25xx, Kinetis Kxx, STM32xxx系列MCU的用於還是習慣於使用IAR作為開發工具,其簡潔的用戶GUI界面和高效的編譯優化效率令人印象深刻。NXP的S32K1xx系列MCU是目前市面上使用最為廣泛的基於ARM Cortex M4F/M0+內核的車規級通用MCU,很多S32K1xx系列MCU的用戶也希望使用IAR來開發他們的應用軟體程序。本文對使用IAR toolchain開發S32K1xx系列MCU的應用軟體做了一些探索,總結了其中的常見問題(FAQ)和解決方案,希望對大家有所幫助和啟發。很多準備使用IAR toolchain開發S32K1xx系列應用程式的工程師遇到的第一個問題是NXP官網上和IAR安裝目錄下均為提供或集成S32K1xx系列MCU的IAR樣例工程,希望在此樣例工程的模板上修改配置,添加文件從而快速創建自己的應用工程或者進行可行性評估。在哪裡可以找到一個自己使用的S32K1xx系列MCU part對應的樣例工程呢?1.1 S32K1xx系列MCU的IAR樣例工程的獲取其實,在NXP提供的S32K1xx系列MCU的SDK安裝目錄下就提供了相應各個part number的IAR樣例工程--hello_world_iar:比如,S32K1xx SDK RTM3.0.0中集成的S32K144 IAR樣例工程目錄如下:

hello_world_iar.ewp:IAR工程文件;hello_world_iar.eww:IAR工程空間(workspace)文件;description.txt:樣例工程使用和功能說明;S32K1xx各版本SDK目錄下都集成了S32K142、S32K144和S32K148的IAR樣例工程:

Tips:因此,下載安裝S32DS for ARM v2018.R1 IDE並安裝其S32K1xx SDK補丁包即可獲得以上IAR樣例工程。S32DS for ARM v2018.R1 IDE和S32K1xx SDK補丁包下載連結如下:S32DS for ARM v2018.R1 IDE:https://www.nxp.com/design/software/development-software/s32-design-studio-ide/s32-design-studio-for-arm:S32DS-ARM;

S32K1xx SDK補丁包:https://www.nxp.com/design/software/development-software/s32-design-studio-ide/s32-design-studio-for-arm:S32DS-ARM?tab=Design_Tools_Tab;

1.2 S32K1xx系列MCU的IAR樣例工程的使用高版本的IAR IDE可以打開低版本IAR IDE創建的MCU應用工程,而反過來,低版本的IAR IDE無法打開高版本IAR IDE創建的MCU應用工程。通過查看IAR樣例工程的工程文件--hello_world_iar.ewp(使用任意文本編輯器即可打開),查找OGLastSavedByProductVersion選項的值,即可找到該IAR應用工程最後由哪個版本的IAR打開和保存(創建)。

比如,S32K1xx SDK RTM3.0.0中集成的S32K144的IAR樣例工程,就是由IAR 8.11.2.13604創建的:

因此,使用IAR8.11及以上版本的IAR IDE都可以打開上面的S32K144 IAR樣例工程。Tips:使用高版本的IAR IDE打開低版本的IAR工程時,會彈出以下提示窗口,推薦選擇「yes」,打開:

比如用IAR 8.32打開S32K1xx SDK RTM3.0下的S32K148的樣例工程(使用IAR 8.11創建)時,選擇「Yes」將在工程目錄下創建一個工程備份文件--Backup of hello_world_IAR.ewp:

如果後面還想使用IAR 8.11打開該樣例工程,可以通過將工程根目錄下的hello_world_iar.ewp、hello_world_iar.ewd、hello_world_iar.dep和hello_world_iar.ewt以及編譯目標文件夾--Debug_RAM/FLASH刪除,並將Backup of hello_world_IAR.ewp重命名為hello_world_iar.ewp,實現:

在S32K SDK的安裝目錄下僅集成了S32K142、S32K144和S32K148的IAR樣例工程,為此,我創建了S32K146的IAR樣例工程,並分享到以下百度雲盤連結供大家參考:連結: https://pan.baidu.com/s/1vVeUke3gSO68CJNZ4MrdkQ&shfl=shareset

Tips:只有IAR 8.30及更高版本才可以支持S32K146,所以要使用IAR toolchain開發S32K146的應用軟體,需要安裝IAR 8.30及更高版本。Tips:後續我會把S32K116和S32K118的IAR 樣例工程也創建並分享到這個目錄供大家參考,敬請關注!1.3 S32K1xx系列MCU的IAR toolchain makefile樣例工程的獲取與此同時,NXP提供的S32K1xx系列MCU的SDK安裝目錄下還提供了相應各個part number的IAR toolchain makefile樣例工程--IAR-MKF:比如,S32K1xx SDK RTM3.0.0中集成的S32K144 IAR toolchain makefile樣例工程目錄如下:

S32K1xx各版本SDK目錄下都集成了S32K116、S32K118、S32K142、S32K144、S32k146和S32K148的IAR樣例工程:

Tips:因此,下載安裝S32DS for ARM v2018.R1 IDE並安裝其S32K1xx SDK補丁包即可獲得以上IAR toolchain makefile樣例工程。1.4 S32K1xx系列MCU的IAR toolchain makefile樣例工程的使用為了S32K1xx系列MCU的IAR toolchain makefile樣例工程,需要創建一個Windows的命令行批處理文件,比如Launch_Compile.bat,設置編譯使用的make工具和IAR toolchain的安裝路逕到系統環境變量-path,並調用相應的make <編譯目標>,比如:
REM set the make utility set path=%path%;C:\NXP\S32DS_ARM_v2018.R1\utils\msys32\usr\bin
REM set the toolchiain pathset path=%path%;C:\IAR\Embedded_Workbench_8.0_ARM_8.11.2\arm\bin
REM enter current foldercd /d %~dp0
REM open Window CMD display@ECHO ON
REM clean and then compile the projectmake cleanmake printmake flashmake Srecord
REM press any key to continue...pause

Tips:使用IAR toolchain的makefile工程,則沒有IAR版本的限制,只要使用的IAR IDE版本支持該MCU part number即可;Tips:關於使用makefile腳本編譯和調試NXP S32 SDK應用工程的具體步驟和工程解析,可以參考如下公眾號文章(點擊文章標題即可直接跳轉閱讀):2. IAR toolchain使用常見問題(FAQ)在IAR官網(www.iar.com)上大家可以直接下載到最新版本的IAR IDE評估版軟體安裝包:

老版本的IAR IDE軟體安裝包,則需要使用任意有效郵箱註冊並激活一個IAR帳戶,登錄後,訪問帳戶My Page從產品更新頁面(Product Updates Pages)下載。

2.2 IAR MCU應用工程的編譯目標切換和創建IAR MCU應用工程打開後,選擇Workspace下方的下拉菜單即可切換該應用工程的編譯目標:

通過IAR IDE菜單Project->Edit Configurations..,則可以打開IAR工程的編譯目標配置窗口:

在配置界面中,選擇New..,輸入編譯目標名稱(Name)、基於的已有編譯目標(Based onconfiguration)即可快速創建一個基於已有編譯目標的新編譯目標(e.g Rlease):

在以上配置界面中。選中某一編譯目標,Remove即可刪除該編譯目標。在IAR的Workspace中選擇某一應用工程,然後右鍵->Options,打開該應用工程的工程選項配置:

在工程選項配置中選擇Output Converter->Output,勾選Generate additional output,選擇輸出的編程文件格式(Output format), 勾選Override default,輸入輸出的文件名即可生成相應格式的編程文件:

即可在當前編譯目標(Debug_FLASH)目錄下的Exe子目錄下生成該S19/HEX/BIN編程文件:

2.4 IAR中使用S32K1xx EVB的板載OpenSDA作為debugger下載和調試S32K1xx系列MCU的應用工程在IAR應用工程的工程選項配置中,在Debugger->Setup->Driver選項中,從下拉菜單中選擇PE micro作為該應用工程的debugger:

保存以上配置,然後,回到IAR Workspace中,選擇該應用工程,點擊菜單欄的Download and Debug命令快捷圖標(或者直接使用Ctrl + D快捷鍵),即可啟動下載和調試:

在彈出的P&E Connection Manager窗口中,選擇OpenSDA或者其他PEMicro的Multilink作為debugger,並選擇目標板使用的MCU part number (Select New Device)且配置OpenSDA的工作頻率小於1MHz,然後,選擇OK:

即可完成應用工程的elf文件下載和調試信息加載,進入調試界面:

IAR調試界面菜單欄的可用調試命令快捷圖標及其快捷鍵如下:

2.5 在IAR調試界面中查看CPU內核寄存器、外設寄存器、存儲器、函數調用樹、堆棧使用通過菜單View->Registers->Registers1即可打開MCU的CPU內核寄存器查看窗口(最多可以同時打開4個內核寄存器查看窗口):

通過菜單View->Call Stack即可打開當前調試應用工程的函數調用樹查看窗口:

通過菜單View->Memory->Memory1即可打開MCU的內存查看窗口(最多可以同時打開4個內存查看窗口):

通過勾選菜單Project->Setup SFR, 即可打開當前調試應用工程的MCU外設寄存器(包括Cortex M內核的NVIC和ITM以及異常狀態寄存器等)查看窗口:

通過菜單View->Stack->Stack1即可打開當前調試應用工程的堆棧(stack)查看窗口(最多可以同時打開2個堆棧查看窗口):

本文詳細介紹了S32K1xx的IAR樣例工程獲取和使用,並分享了使用IAR toolchain開發S32K1xx系列MCU時的一些常見問題(FAQ)和調試經驗,希望對大家有所幫助。Tips:強烈建議大家使用S32DS for ARM v2018.R1 IDE創建S32K1xx系列MCU的SDK應用工程,利用其集成的Processor Expert圖形化根據配置生成SDK的配置代碼(Generated_Code目錄下的所有代碼),然後再添加到S32K1xx的IAR應用工程。關於S32DS for ARM v2018.R1 IDE和S32K1xx SDK的使用細節,請參考我公眾號(汽車電子expert成長之路)中相關的系列原創技術分享文章。

閱讀更多精彩內容,請訪問以下文章目錄列表(點擊文章標題直接跳轉閱讀):

《歷史文章分類列表目錄(點擊文章標題即可直接跳轉閱讀,截止2019年9月15日)》;

原創寫作不易, 如果大家覺得本文對你的工作和學習有幫助,也歡迎大家讚賞鼓勵----我將堅持寫作,給大家帶來更多精彩的原創文章。

Tips:點擊文末的「喜歡作者」對本文進行讚賞或者「在看/好看」進行分享,也可以留言提問,我將第一時間回復大家的關切!

歡迎在此與我一起學習/探討汽車電子和嵌入式系統軟硬體設計相關的技術。若對本公眾號或者分享的文章觀點有任何意見和建議也歡迎留言指出。您的點讚/關注/轉發分享是對我辛勤寫作的最大支持和肯定!

本公眾號已開通關鍵詞回復功能,請在公眾號主頁回復如下關鍵詞以獲取更多信息和精彩文章:

關於作者,請回復關鍵詞「作者簡介」;

聯繫作者,請回復關鍵詞「聯繫作者」;

獲取高清PDF版本公眾號文章,請回復關鍵詞「獲取文章」;

獲取專業及時的技術支持服務,請回復關鍵詞「專業服務」;

下載2017~2018年度原創技術文章集合高清PDF,請回復關鍵詞「文章全集」;

CodeWarrior IDE license購買及安裝使用問題諮詢,請回復關鍵詞「CW License」;

汽車乙太網轉工業乙太網轉換器購買,請回復關鍵詞「乙太網轉換器購買」;

獲取最新最全的公眾號原創技術分享文章目錄,請回復關鍵詞「文章目錄」;

 鄭重聲明:本公眾號所有原創技術文章免費閱讀,文中所有觀點/結論均為個人觀點,不代表任何公司官方觀點意見;所有demo代碼/程序,僅作參考學習,不保證質量,若用於商業用途,責任自負;所有本公眾號文章,版權歸本人所有智慧財產權,一切未經本人同意的轉載均屬違法,盜版必究~!

如果你喜歡本公眾號的文章,請點擊文章最開始的公眾號關注或微信直接長按掃描識別下方二維碼關注,你也可以在微信添加朋友-->公眾號-->輸入"汽車電子expert成長之路"搜索-->點擊關注。若對本文觀點有任何意見和建議也歡迎留言指出。

您的關注、點讚、轉發分享是對我辛勤寫作的最大肯定!

Enwei Hu(胡恩偉)

2019年10月21日於山城·重慶.

相關焦點

  • 淺談嵌入式MCU軟體開發之利用Cortex-M內核的DWT模塊的內核周期計數器測量S32K14xMCU的應用代碼執行時間
    基於FreeRTOS的S32K144應用工程代碼執行時間測量實現在S32K1xx SDK中集成了移植好的FreeRTOS給S32K14x系列MCU使用。為了幫助大家更好的學習和掌握本文介紹的內容,我將相關實現代碼和樣例工程分享到如下百度雲盤連結,供大家參考:連結: https://pan.baidu.com/s/1pu5lsuNnsikWTWC-ePx-ZQ本公眾號近期文章精選推薦(點擊文章標題即可直接跳轉閱讀):1.
  • 淺談嵌入式MCU軟體開發之SEGGER實時傳輸(RTT)的移植和printf()重定向應用(附S32K144移植工程)
    即使使用較小的512位元組目標緩衝區,在高接口速度的情況下,RTT速度也可能高達1 MB/s,而在常規J-Link模型中,RTT速度可能達到0.5 MB/s。2.1 創建一個S32K144的S32DS IDE應用工程(配置NO I/O support,NewLib,選擇Segger Debugging Interface作為Debugger)為了支持SEGGER RTT,在新建S32DS應用工程時,需要選擇使用NewLib庫,No I/O support,且選擇Segger Debugging Interface作為調試器(Debugger):
  • 《疑難答疑》之S12G系列MCU使用Hiwave和BDM調試器debug時無法使用邏輯地址查看和保存P-flash問題的解決
    開發之基於CAN總線通信的S12(X) 系列MCU獨立NVM驅動安全bootloader       淺談嵌入式軟體開發之Qorivva MPC57xx和S32R系列多核MCU啟動配置與bootloader開發要點詳解 Qorivva MPC56xx系列MCU啟動過程全解析(基於CW IDE應用工程--EAB I、連結文件、啟動文件和
  • 擁抱RISC-V的開發世界 兆易創新推GD32VF103系列RISC-V MCU
    RISC-V內核32位通用MCU新品,現在,直接使用GD32V系列32位通用MCU以創意靈感擁抱RISC-V的開發世界! 作為GD32 MCU家族基於RISC-V內核的首個產品系列,全新的GD32VF103系列RISC-V MCU面向主流型開發需求,以均衡的處理效能和系統資源為RISC-V進入市場主流應用提供了高性價比的創新之選。新品首批提供了14個型號,包括QFN36、LQFP48、LQFP64和LQFP100等4種封裝類型選擇,並完整保持了與現有產品在軟體開發和引腳封裝方面的兼容性。
  • stm32開發板例程講解之一:使用IAR 5.3建立工程
    實驗所需:安富萊stm32F103ZE開發板一塊,J-Link V8仿真器 1個,安裝iar embedded workbench 5.3,安裝JLinkARM_V420a,下載STM32F10x_StdPeriph_Lib_V3.3.0,安富萊開發板board文件。
  • 「STM32CubeMonitor」 拍了拍你
    STM32Cube系列軟體開發工具,提供了從MCU配置,代碼生成,編譯以及調試,到程序燒錄和監測整個軟體開發流程需要的全部功能。其中,STM32CubeMX提供圖形化的配置界面,幫助開發者快速創建一個新工程(支持STM32CubeIDE, IAR, KEIL等IDE);STM32CubeIDE基於Eclipse和GCC工具鏈,提供代碼編輯,編譯,調試功能。
  • IAR STM32 函數和變量的絕對地址定位
    即使是兩個不同的工程,比如第一個工程為實際工程,裡面有所有的工程文件,第二個工程為更新專用工程,裡面僅僅只有test.c文件,裡面的函數是同名的,定位地址與第一個工程也一樣。那麼這樣編譯後,第二個工程裡面的固件片斷,是可以用來更新一個工程的固件的。
  • MCU8051的泥石流—>RISCV32的商業啟示
    在國內眾多家MCU企業中,能夠提供32位通用MCU產品的廠商主要包括兆易創新、東軟載波、芯海科技、靈動微電子、北京君正、晟矽微電、貝特萊、復旦微、華大半導體、航順等晶片企業。 MCU市場本身是一個高度碎片化市場,應用場景極其豐富多樣,許多應用甚至於原廠完全搞不清楚。以兆易創新為例,GD32系列擁有320餘款產品型號、22個產品系列、11種不同封裝類型,客戶數量超過1萬家。
  • mcu晶片是指什麼晶片_mcu晶片概念股
    mcu晶片是指什麼晶片_mcu晶片概念股 網絡整理 發表於 2020-08-06 10:54:29   mcu晶片是指什麼晶片   MCU是Microcontroller
  • STM32開發筆記3: STM32F407定時器2-5的使用方法
    單片機型號:STM32F407    STM32F4有多種定時器,其中TIM2-TIM5稱為通用定時器,具有相似的軟體設置及使用方法。在這裡還需要注意的是TIM3和TIM4為16位定時器,TIM2和TIM5為32位定時器。
  • 【答題贏新書】《Android應用測試指南》 首輪來襲!
    本期圖書:51Testing測試叢書系列—《Android應用測試指南》
  • Microchip擴展高性能32位MCU系列,新系列器件集成浮點單元
    (美國微芯科技公司)日前宣布擴展旗下高性能PIC32MZ系列32位單片機(MCU)產品。新系列器件集成了一個硬體浮點單元(FPU),有助密集型單精度和雙精度運算應用同時實現高性能和更低的延遲。此次推出的PIC32MZ EF系列有48款新器件,均具有一個適用於多種高速高帶寬應用的12位18 MSPS模數轉換器(ADC)。此外,PIC32MZ EF還支持廣泛的DSP指令集。
  • MCU原廠及其產品和代理分銷商介紹
    系列8位單片機,KS17系列16位單片機和KS32系列32位單片機。8位機主要有870系列、90系列等,該類單片機允許使用慢模式,採用32K時鐘時功耗低至10uA數量級。CPU內部多組寄存器的使用,使得中斷響應與處理更加快捷。東芝的32位單片機採用MIPS3000ARISC的 CPU結構,面向VCD、數字相機、圖像處理等市場。 MCU產品線 基於Arm®內核的微控制器
  • stm32CubeIDE如何修改文檔編碼,來解決文本注釋亂碼問題
    ,煩惱的stm32f429和stm32h743系列mcu還是沒有處理好通信問題.於是今天先不講技術問題了,說一個關於如何修改文檔編碼的小方法吧.02背景當您的項目是用keil5開發的,然後想用stm32cubeIDE打開或者再keil5
  • 一次利用IAR自帶CRC完整性校驗功能的實踐
    痞子衡之前寫過兩篇關於IAR中自帶CRC校驗功能的文章 《在IAR開發環境下為工程開啟CRC完整性校驗功能的方法》、《探析開啟CRC完整性校驗的IAR工程生成.out和.bin文件先後順序》,算是把這個功能細節介紹得比較清楚了,但是俗話說得好,理論懂得再多,不能用於實踐那等於沒學。
  • 使用市面上首款基於 Arm® Cortex®-M33 的 MCU –第 1 部分...
    儘管設計人員為滿足不同需求而心力交瘁,但對於醫療設備、工業自動化系統、零售支付設備等關鍵應用,用戶可接受的妥協空間越來越小,甚至拒不接受。NXP Semiconductors 的 LPC55S6x 微控制器系列器件架構,既有通用處理器的靈活性,又有新興應用所需的專門處理能力和安全性,從而免除設計人員的妥協之困。
  • 8位或32位,MCU該怎麼選?
    該如何對8位元以及32位元的MCU進行選擇?8位元和32位元MCU在功能上仍是互為輔助、各有千秋,這其中的訣竅就在於,需先了解什麼樣的應用適合什麼樣的MCU架構。本文對比了8位元MCU和32位元MCU的使用案例,也可作為如何選擇這兩種MCU架構的指南使用。
  • 兆易創新推出GD32V系列RISC-V內核32位通用MCU新品
    作為GD32 MCU家族基於RISC-V內核的首個產品系列,全新的GD32VF103系列RISC-V MCU面向主流型開發需求,以均衡的處理效能和系統資源為RISC-V進入市場主流應用提供了高性價比的創新之選。新品首批提供了14個型號,包括QFN36、LQFP48、LQFP64和LQFP100等4種封裝類型選擇,並完整保持了與現有產品在軟體開發和引腳封裝方面的兼容性。
  • STM32L0系列MCU可以穩定工作在125度環境,並保持同類最低功耗
    ,幫助開發人員充分控制應用能耗,且最大限度縮減產品上市時間。新系列產品還有一個互連總線矩陣,讓系統在CPU待機時繼續處理數據,以提升系統效率。   軟體開發工具包括STM32CubeMX和STM32CubeL0中間件以及固件套件。STM32CubeMX初始化代碼生成器和微控制器配置器提供簡易的使用嚮導,包括功耗計算器,幫助設計人員評估並微調功耗預算。
  • 已解決:IAR編譯時出現duplicate definitions for IAR報錯
    ,並為兆易創新GD32系列基於Arm Cortex®-M內核的MCU產品家族提供性能強大的解決方案。現在,兩家公司已將合作關係進一步延伸至Arm領域,為兆易創新Arm® Cortex®-M3、Cortex®-M4、Cortex®-M23和Cortex®-M33 內核的MCU產品家族加強開發工具的支持,從而為眾多行業用戶提供高質量的嵌入式應用程式。