一、簡介
1、SSDK 環境下打包得到 Boot Package 與 PAC 文件(用於 Semidrive 下載工具燒寫)的流程以及打包方法;
2、將編譯產物 bin文件轉換為 Boot Package 格式,ROM 啟動時需要識別這種格式的文件;
3、將 Boot Package 形成 PAC 文件用於下載工具燒錄,PAC 文件中包含了 Dloader/Flashloader、SFS 等其他需要燒錄或參與燒錄過程的文件;


• rfd.img 僅存在於 NOR/Hyper Flashpac 包中,用於Flash加密啟動;
• 存儲設備 eMMC與SDcard 所使用PAC文件是一樣的,區別在於工具下載 SDcard 時,僅下載 BOOT2.img 作為 Normal Boot Package 文件,因為 SDcard 僅支持 1 個 Boot Package;
• FDA.img 是 Dloader 或 Flashloader 程序,這裡稱為 Donwloader 程序。該程序僅下載時存在於 RAM,不占用系統的存儲空間。當 FDA.img 為 Dloader 時,撥碼至 USB 模式上電,ROM 啟動後,先下載 Dloader 程序至 RAM中,ROM 接收完 Dloader 程序並校驗通過後在 RAM 中運行該程序,Dloader 會初始化通訊接口與存儲設備,然後與上位機進行通訊,根據指令將各個 Boot Package、SFS、RFD 文件寫入到存儲設備中;當 FDA.img 為Flashloader 時,撥碼至 JTAG 模式上電,工具將 Flashloader 程序加載到 RAM 中,然後調用 Flashloader 中的函數將各個 BootPackage、SFS、RFD 文件寫入到存儲設備中;注意,Flashloader 僅支持 Flash 下載,不支持 eMMC下載;Flashloader 不支持使用分區表的 PAC 包下載;
• 用戶也可以在打包過程中以地址的形式加入用戶的固件,在下載時能夠將其下載到該地址中;
二、 Hyper Flash 底包打包
1、軟體版本 :基於 E3_SSDK_PTG3.0_Source_Code
2、進入到 ssdk 打開命令提示符窗口或者 Wind11 終端命令窗口

3、輸入以下命令,即可生成 Hyper Flash 的底包,這裡以 E3430 GPIO 為例:
prebuilts\windows\python-3.7.0\python.exe tools\genpac.py -b e3_gateway -p gpio -v IAR -c Debug -f devices\E3430\pacconfig\pac_config_sf.json --chipid=E3430 -d dloader
4、生成的底包如下圖所示

三、Nor Flash 底包打包
1、1、軟體版本 :基於 E3_SSDK_PTG3.0_Source_Code
2、進入到 ssdk 打開命令提示符窗口或者 Wind11 終端命令窗口

3、輸入以下命令,即可生成 Hyper Flash 的底包,這裡以 E3430 GPIO 為例:
prebuilts\windows\python-3.7.0\python.exe tools\genpac.py -b e3_gateway -p gpio -v IAR -c Debug -f devices\E3430\pacconfig\pac_config_sf_norflash.json --chipid=E3430 -d dloader
4、注意,這裡需要更改打包時所用的 sfs 如下圖,我們打開編輯 pac_config_sf_norflash.json 文件,將語句mt35_ospi_fast_read.json 替換為 is25-1-1-4.json 然後載按照 3 的操作進行打包。

SSDK在 tools\sdtools\sfs\ 路徑下提供了幾種SFS固件以供選擇

5、生成的底包如下圖所示,這個是以 SSDK 例程 GPIO 進行打包的,所以可以在例程裡面找到打包好的文件。
當然,在我們命令打包時,腳本實現將生成的 PAC 文件也 Copy 到其他的目錄 :ssdk\tools\sdtools\pac\e3_gateway\gpio (如下圖所示)

四、USB 燒錄
1、使用 Semidriver 提供的工具 SDToolBox
2、打開 SDFactory
(1) 點擊 + 號,將前面生成的底包添加進來
(2) 點擊中間的設置圖標,
將 IAR 或者其他生成的帶有 BPT 的E3_ref_gateway_E3430.elf.bin.pac 替換boot0 ~ boot2,如下圖所示,之後點擊 OK 即可。
(3) 連接板子,需要將撥碼調至 boot 模式為 1000 進行 USB 下載;下載完成後,將 boot 調至 0000 模式,上電從 Flash 啟動。
(4) USB 燒錄底包文件(Nor Flash)
[ospi_e3_gateway.pac](查看附件)
五、勞德巴赫燒錄(以 Nor Flash 燒錄為例)
1、前面生成的 Pac 底包,使用 SDFactory 複製路徑,然後將文件複製放在新建的文件夾 QSPI 裡面


2、將前面 Nor Flash 底包打包生成的 pac 文件 E3_ref_gateway_E3430.elf.bin.pac 也拷貝到此文件夾中,方便下載操作。
3、將 Attach 文件腳本和 jtag-dloader 的文件腳本,以及 e3_gateway_norflash.out 一併拷貝在此文件夾中
(1) e3_attach.cmm 文件位於 MCAL3.0 目錄下 : MCAL_release\tools\T32 ;
[e3_attach.cmm](查看附件)
(2) jtag-dloader_e3_gateway_norflash.cmm,該腳本是 jtag/swd 下載腳本。
[jtag-dloader_e3_gateway_norflash.cmm] (查看附件)
(3) e3_gateway_norflash.out, 是 trace32 版本的 dloader 程序,用於下載到 ram 中運行,dloader 程序負責進行系統初始化,配置 Flash 的 driver,之後 dloader 程序會與下載腳本 load 進行交互,把數據下載到Flash中,e3_gateway_norflash.out 不是通用的,需要根據具體的板卡型號編譯。
[e3_gateway_norflash.zip] (查看附件)

4、打開勞德巴赫上位機軟體 Trace32, 板子 boot 模式設置為 1110
(1) T32 Start
① 打開 t32start.exe 界面
② 勞德巴赫連接開發板
③ 選中 1.Core 然後點擊 Start
(2) Attach
① 打開 TRACE32 後,處於未 attach 狀態
② 將 T32 文件夾下 e3_attach.cmm 文件拖入 TRACE32 B:: 處
③ 然後空格 + “0” 回車確認
(3) 燒錄腳本
① TRACE32 attach 上後可 running 與 stopped
② 將 前面 QSPI 文件夾下 jtag-dloader_e3_gateway_norflash.cmm 文件拖入 TRACE32 B:: 處
(4) 燒錄
① 打開 NOR FLASH PROGRAM 界面
② 將文件夾的 sfs.bin 與待燒錄 .pac (此 PAC 文件這裡是 IAR Release 版本編譯產生的)文件拖入 sfs 與 boot0/1/2 處,點擊 program flash 燒錄,另一個需要注意的是需要選擇 swd.
③ 燒錄成功

六、修改打包底包文件細節
1、修改打包生成的 SFS 所對應的 boot0 ~boot2 地址
這個文件可以修改 boot Package s數量,以及對應各個 boot package 的地址,如下圖所示

評論