SemiDrive E3 SSDK和MCAL打包的區別

一、前言

  1. 打包的目的:
  • 將編譯產物bin文件轉換為Boot Package格式。ROM啟動時需要識別這種格式的文件。
  • 將Boot Package形成PAC文件用於下載工具燒錄。PAC文件中包含了Dloader、SFS 等其他需要燒錄或參與燒錄過程的文件。
  1. 打包環境

硬體平台:芯馳 E3640 E3_GATEWAY_A03 開發板

軟體平台:SemiDrive_E3 SSDK PTG3.0/MCAL PTG3.0

 

二、PAC文件結構和打包過程

  1. PAC文件是下列文件的集合:


圖 1 pac文件內容

2.下圖為打包過程示意圖:


圖 2 打包步驟

 

  • sfs.img 僅存在於Nor/Hyper Flash的pa c包中,存儲 Flash 信息,供 ROM 啟動時讀取。
  • rfd.img 僅存在於 Nor/Hyper Flashpac 包中,用於 Flash 加密啟動。
  • 存儲設備 eMMC 與 SDcard 所使用 PAC 文件是一樣的,區別在於工具下載 SDcard 時,僅下載 BOOT2.img 作為 Normal Boot Package 文件,因為 SDcard 僅支持 1 個 Boot Package。
  • FDA.img 是 Dloader 或 Flashloader 程序,這裡稱為 Downloader 程序。該程序僅下載時存在於 IRAM,不占用系統的存儲空間。
  • 當 FDA.img 為 Dloader 時,撥碼至 USB 模式上電,ROM 啟動後,工先下載 Dloader 程序至 IRAM 中,ROM 接收完 Dloader 程序並校驗通過後在 IRAM 中運行該程序,Dloader 會初始化通訊接口與存儲設備,然後與上位機進行通訊,根據指令將各個 Boot Package、SFS、RFD 文件寫入到存儲設備中。
  • 當 FDA.img 為 Flashloader 時,撥碼至 JTAG/SWD 模式上電,工具將 Flashloader 程序加載到 IRAM 中,然後調用 Flashloader 中的函數將各個 Boot Package、SFS、RFD 文件寫入到存儲設備中。

 三、 SSDK 之 Python 腳本自動打包

  1. 編譯後由 SemiDrive 提供的 SSDK 中腳本 tools/genpac.py 自動打包,py 可以解析項目的打包配置文件 pac_config.json,一鍵完成自動打包:
  • 將編譯產物 binary 合成 BootPackage;
  • 選擇 SFS 的配置文件,將配置文件轉換為 img 用於打包,同時能夠指定 Boot Package 的地址;
  • 選擇打包 Dloader 或 Flashloader,對 Dloader 進行簽名,Flashloader 不簽名;
  • 可以進行加密配置;
  • 形成 SDFactoryTool 軟體燒錄所需的 PAC 文件;

 

  1. 指定 SSDK demo 打包
  • 打包命令:

       prebuilts\windows\python-3.7.0\python.exe tools\genpac.py -b e3_gateway -p gpio -v IAR -c Debug -f devices\E3640\pacconfig\pac_config_sf.json --chipid=E3640 -d dloader


圖3 執行打包命令

  • 工具燒錄和啟動驗證


圖4 工具燒錄

 


圖5 啟動驗證

 



四、 MCAL 打包流程

  1. IAR編譯工程

請先通過IAR將想要打包的Project以Release的形式先進行make,


圖6 切換 Release 模式

Project→Edit Configurations→Release

make 後會得到編譯後的工程bin文件。

通過 IAR IDE 環境進行編譯 MCAL 工程,(需為 Release 工程)編譯產物路徑為:

iar/iar_v850/$(PROJECT)/Release/Exe/$(BOARD).bin ;

以 E3_ref_gateway_E3640 為例:

生成的 bin 文件在 \MCAL\MCAL_release\iar\iar_v850\E3_ref_gateway_E3640\Release\Exe 下


圖7 編譯生成文件

  1. 自動打包

        SemiDrive 提供的 MCAL 中包含打包自動打包腳本 tools/mcal_genpac.py , mcal_genpac.py 可以解析項目的打包配置文件 pac_config.json 進行打包,可以一鍵完成,並且已將腳本打包成脫離環境的 exe 可執行文件 tools/mcal_genpac.exe :

  • 將編譯產物 binary 合成 BootPackage;
  • 選擇 SFS 的配置文件,將配置文件轉換為 sfs.img 用於打包,同時能夠指定 Boot Package 的地址;
  • 選擇打包 Dloader 或 Flashloader,對 Dloader 進行簽名,Flashloader 不簽名;(註:默認將board的對應Dloader和Flashloader都打包進Pac包中,默認使用Dloader)
  • 可以進行加密配置;
  • 形成SDFactoryTool軟體燒錄所需的PAC文件

         打包命令:.\tools\mcal_genpac.exe -p E3_ref_gateway_E3640 -v IAR


圖8 執行打包命令



圖9 工具燒錄

 

圖10 啟動驗證

五、 總結:

編譯時注意 Debug/Release 模式的切換(SSDK 使用 Debug 模式編譯即可,而 MCAL 的 Release 用於通過 SDtools 方式燒寫);

        注意兩者打包時 cmd 指令的區別。特別是 MCAL 打包時, E3640 默認為 hyperflash,當需要指定為 norflash 時,需要在後面添加 -f  norflash 參數。E3106、E3104、E3110、E3205 系列默認為 norflash,當需要指定為 hyperflash 的時候需要添加 -f  hyperflash。(具體命令參數解析和打包的規則見參考文檔)。

如對此有更多需求,敬請聯繫世平集團 ATU 部門,atu.cn@wpi-group.com。

六、 參考文檔

《AppNote_E3_Boot_and_OTA》

《E3系列MCAL打包工具User Guide》


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

作者:Alan Li / 李亞楠

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

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

評論