SemiDrive E3 IAR 配置環境說明

一、 概述

       本文介紹 IAR 環境相關配置說明,方便用戶快速排查問題,俗話說:知己知彼,百戰不殆。在軟體開發過程中你是否存在以下疑惑,軟體下載到哪些地址,且軟體在晶片內部運行時,是如何部署的?配置底層寄存器,在 IAR 環境中如何查看寄存器是否配置成功,晶片 Memory 都是存放的哪些數據,以及如何將代碼中的變量定義到指定的位置,將代碼加載到指定的位置運行;通過 JTAG 只想調試代碼,不想破壞板卡原有的程序,該如何操作?帶著這些疑惑本文會給你最終的答案,配置好開發環境,讓 IAR 用起來得心應手。

       硬體平台:E3640官方開發板(SD103_E3_GATEWAY_ePOWERTRAIN_A03_019),如下圖所示;

       軟體平台:e3_gateway_E3640_mcu_demo_E3_SSDK_PTG3.0 中 app_demo XIP Bootloader、 sf  兩個例程;

       IAR版本:IAR Embedded Workbench for ARM 8.50.6。




圖1 E3640 官方開發板


二、 IAR 環境配置

1. Debug

        打開 ssdk\boards\e3_gateway\app_demo\xip\sf 工程,將 WorkSpace 選擇 Debug 模式;將撥碼開關撥到 JTAG 下載模式(4'b1110),在 Debug 模式下,鏡像可通過 Download and Debug 將當前的工程生成的 bin 文件下載到 IRAM 中直接運行(斷電重啟後 IRAM 中內容丟失且不更改 Flash 中內容)。

       Debug 模式配置編譯選項生成 binary :勾選 Project -> Options -> Output Converter 中 Output 標籤下的 Generate additional output 選項, Output format 選擇 Raw binary,配置輸出文件名稱為 core.bin ,如 sf.bin ,如圖2所示。



                                                                                            圖2 Debug 模式配置生成的 Bin 文件名稱




圖3 IAR 不燒寫進 Flash 配置圖

 







2. FlashDebug

        打開 ssdk\boards\e3_gateway\app_demo\xip\sf 工程,將 WorkSpace 選擇 FlashDebug 模式;將撥碼開關撥到 JTAG 下載模式(4'b1110),在 FlashDebug 模式下,鏡像可通過 Project -> Download -> Download active application 下載到 Flash 中,再斷電重新撥碼到 Flash 啟動模式(4'b0000)中啟動運行。

         IAR FlashDebug 模式燒錄的對象工程編譯得到的 .out (ELF)文件,要讓 IAR 燒錄 Flash 後能夠從 Flash 啟動,.out (ELF)文件中需要包含以下內容:sfs binary、SF core binary、其他 core 的 binary(如果存在),如下圖4 所示;



                                                                                            圖4 IAR 工程的產物 .out(ELF)文件包含內容


        2.1  SFS 文件

        IAR 工程環境中勾選 Project -> Options -> Linker 中 Extra Options 標籤下的 Command line options 選項,並且配置 Command line options 中的 SFS 文件( .img 格式),配置格式如下:

        --image_input

        $PROJ_DI R$\..\..\..\..\..\tools\sdtools\sfs\sfs_mt35-1-1-1.img,SFS_BIN,SFS_BIN,8

        --keep SFS_BIN



圖5 IAR 工程環境引用 SFS 文件

 開發板上 Flash 分為 hyperflash 、norFlash ,根據開發板上選用 Flash 晶片的類型,選擇相應的 SFS 文件,見下表:

                                                                                           Flash 類型對應 SFS 文件表

序號

文件名稱

使用說明

備註

1

sfs_is25-1-1-4.img

適用於所有 sip flash、IS25系列、GD25 系列

4 線模式

2

sfs_mt35_ospi_fast_read.img

適用於 e3_gateway

mt35系列 ospi flash

8 線模式,速率較快

3

sfs_mt35-1-1-1.img

適用於所有 norflash

1 線模式,速率較慢

4

sfs_s26h-hyperflash.img

適用於所有 hyperflash

默認選項



2.2  board 文件

        IAR 通過 JTAG 燒寫代碼分兩種,一種直接將代碼加載到 IRAM 區域運行,不更改晶片 Flash 內存數據,另一種將代碼燒寫到 Flash 內存,再將代碼運行到 IRAM 或 Flash 區域運行(具體將代碼加載到哪裡運行,要看 ICF 文件設定),通過配置 IAR 環境通過加載 board 文件將不同的代碼加載到不同的 Flash 地址,如下圖所示:



                                                                                                圖6 通過 JTAG 將代碼燒寫進 Flash


       board文件選擇,Flashloader 工程通過 board 配置文件相關聯, board 配置文件的選擇需要結合 PART_ID、工程類型和 Flash 類型,路徑選擇規則如下表所示。

                                                                                                 board 文件選擇表

 

HyperFlash

NorFlash

非 XIP 類 Demo

devices\$(PART_ID)\flashloader\iram\hyperflash

devices\$(PART_ID)\flashloader\iram\norflash

XIP 類 Demo

devices\$(PART_ID)\flashloader\xip\hyperflash

devices\$(PART_ID)\flashloader\xip\norflash

        board 文件結構,把 Flash 按照區域分為不同的 section,每個 section 都指定 flash 文件、section 的範圍以及 Flashloader 參數,典型的 board 文件內容如下圖所示,board 文件各個參數含義如下表,



                                                                                                       board 文件參數定義表

pass

每個 pass 表示所需要燒錄的一個段

Loader

該段燒錄引用的 flash 文件,在該文件中關聯 Flashloader,下文中解析此文件

range

該段在輸出文件 .out 中對應的地址範圍;

Abs_offset

燒寫的 Flash 基地址

args

1)參數 0,為 core number,0 表示為 SF core,2 表示為 SP core0,3 表示為 SP core1,4 表示為 SX core0,5 表示為 SX core1,6 表示為SX in lockstep mode,7 表示 SP in lockstepmode,255 表示 SFS

2)參數 1,表示是否更新 BPT 的標誌,1 表示更新 BPT,0 表示不更新;

3)參數 2,表示更新 BPT 時該鏡像 entry 與 load 的地址。

 


圖7 board 文件內容圖

 

flash 文件結構如下表所示:

                                                                                                flash 文件結構表

exe

使用的 Flashloader 程序,相對 flash 文件的路徑

macro

Flashloader 在加載前執行的 IAR 腳本,相對 flash 文件的路徑

Page

該 Flash 區域的 page size

block

該 Flash 區域的 block size,格式為,n (十進制),m (16進制),n 表示 block數量,m 表示每個 block 的大小

Flash_base

該 Flash 區域的基地址,需要與 board 文件中保持一致

 


圖8 Flash 文件示意圖

 

2.3  ICF 文件

        IAR 根據 ICF 鏈接文件加載代碼到不同的運行地址,本章節介紹 SSDK app_demo\xip\sf 工程為例,簡單介紹一下 ICF 文件;sf 工程生成 bin 文件為 sf.bin ,外部引用 sfs 、Bootloader 等文件,通過 ICF 將代碼分散加載到不同的區域運行,根據 ICF 文件內容 SFS、Bootloader、SF 文件加載到外掛 Flash 運行,將其中的 function_exe_in_ram 函數加載到 IRAM 地址 0x404104 中運行, 將 function_exe_in_tcm 函數加載到 TCM 地址 0x4c 中運行,如下圖所示。

 

 







2.4  Register

       做底層開發時,避免不了跟寄存器打交道,在配置完寄存器後,可以通過查看 Register 的方式,直觀查看寄存器是否配置正確,芯馳 IAR 環境如果查看外設寄存器的內容,需要在 Project -> Options -> Debugger -> Setup -> Device description file -> Override default 添加 E3.ddf 文件,如下圖所示,即可以通過 View -> Register 查看外設寄存器,group 中選擇你要查找的外設寄存器,如下圖所示。

       有時在調試過程中,經常會遇到這樣一種情況,新加入一些功能後出現了 bug,比如某個外設不工作了,或者在做代碼移植時,明明代碼沒有改動且都移植完了,軟體運行結果就是不一樣,在這種情況下,在線仿真是一個比較好的手段,但是如果代碼複雜,解決該問題依舊需要花費更大的精力,用戶可以在 Debug 模式下,將相應的寄存器保存成文件,通過對比軟體對一下,快定位出不一樣的信息,再通過查看 TRM 手冊,快查找哪裡配置差異。


                                                                                                            圖11 保存寄存器內容到本地

       從 IAR 環境中保存的寄存器內容的文件如下圖12 所示,從生成的文件可以看出寄存器的順序及配置內容與 MCU_TRM 手冊 PLL 13.2.4章節內容一致,通過對比差異的寄存器的內容,快速定位差異寄存器的名稱及配置位置,從而快速定位軟體問題。


                                                                                                        圖12 PLL1 寄存器內容圖


三、 參考文檔

《AppNote_E3_Boot_and_OTA_Rev01.05》

        《AppNote_E3_燒錄流程_Rev2.0》



歡迎在博文下方留言評論,我們會及時回復您的問題。如有更多需求,歡迎聯繫大聯大世平集團 ATU 部門:atu.sh@wpi-group.com

作者:Linna Wang / 王麗娜

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論