一、簡介
芯馳 E3 系列 USB 下載程序時,需要將編譯生的 bin 文件進行簽名和打包,當用戶下載時,是將編譯後的產物,簽名變成 BPT+bin 的一個 image 文件,放置在 PAC 包文件當中的 BOOT 位置,然後通過 USB 下載到晶片所搭載的外部 Flash 裡面,如下圖所示。
這裡主要是介紹下圖打包步驟 2 所形成的 Pac 文件的組成。
二、 Pac 包包含哪些文件
1、不同 Flash pac 文件所包含的文件一樣,地址不同
2、pac 包所包含的文件
使用 SDFactory 打開 Pac 包可以看到文件的組成如下:
(1)FDA bin 文件
FDA.img 是 dloader 程序,該程序僅在下載時運行於 SF core,不占用系統的存儲空間。在下載模式下(比如撥碼至 USB 啟動),ROM 啟動後,工具先下載 dloader 程序至 RAM 中,ROM 接收完 dloader 程序並校驗通過後在 RAM 中運行該程序,
dloader 會初始化通訊接口與存儲設備,然後與上位機進行通訊,根據指令將各個 Boot Package、SFS、RFD 文件寫入到存儲設備中。
dloader 會初始化通訊接口與存儲設備,然後與上位機進行通訊,根據指令將各個 Boot Package、SFS、RFD 文件寫入到存儲設備中。
① 小結:
FDA bin 就是一段運行在 RAM 上的程序,初始化各個接口,把用戶程序等,通過 USB 從上位機搬運到
E3 晶片外部 Flash .
② FDA bin 文件來源:
該程序位於 SDK 包中:ssdk\boards\e3_gateway\app_demo\dloader
③ FDA bin 文件使用:
編譯出來將其放置替換到以下的位置即可,然後通過一鍵打包即可調用到形成的 Pac 包當中:
直接使用 sf.bin 替換 e3_gateway_norflash.bin (切記命名要更改為:e3_gateway_norflash.bin)
如果 Dloder 工程有改動,當然也可以直接使用 SDFactory 工具替換原先的 FDA bin 。
(2)SFS 文件
sfs.img 僅存在於 NOR/Hyper Flash 的 pac 包中,用於存儲 Flash 信息,供 ROM 啟動時讀取;
① SFS 文件來源:
這裡需要更改打包時所用的 sfs 如下圖,例如 E3430 使用 GD Flash ,我們打開編輯 pac_config_sf_norflash.json 文件(該文件路徑:\ssdk\devices\E3430\pacconfig),將語句 mt35_ospi_fast_read.json 替換為 is25-1-1-4.json
SSDK在 tools\sdtools\sfs\ 路徑下提供了幾種SFS固件以供選擇
② SFS 文件使用:
按照以上所介紹的,一鍵打包即可生成 Pac 包裡面的 SFS 組成的文件。
(3)RFD 文件
rfd.img 僅存在於 NOR/Hyper Flashpac 包中,用於Flash加密啟動;
① RFD 文件來源:
主要是通過命令行生成,這裡直接默認使用即可,如下面簡介的命令和生成的命令行截圖:
之後會寫一篇具體關於加密的介紹文檔;
命令:
atb_signer xspi_wrap --rfd pvk0=AAAAAAAAAAAAAAAA5555555555555555 iv=555AAA start=0x69000 end=0x268000 --rfd pvk1=AAAAAAAAAAAAAAAA5555555555555555 iv=555AAA start=0x462000 end=0x661000 of=./new.rfd
atb_signer xspi_wrap --rfd pvk0=112233445566778899aabbccddeeff00 iv=abcdef start=0x69000 end=0x268000 --rfd pvk1=112233445566778899aabbccddeeff00 iv=abcdef start=0x462000 end=0x661000 of=./old.rfd
② RFD 文件使用:
可以直接使用 SDFactory 工具替換原先的 FDA bin 。
(4)Boot Package
Boot Package 是用戶的鏡像文件 + BPT 構成,BPT 包含公鑰,簽名,BPT 版本號,用戶程序版本號, BPT 的生成使用簽名工具簽名,具體操作可以參考【Semidriver E3】BPT & 安全啟動 & Secure Dubug
① Boot Package 文件來源:
可以參考以上所介紹的一鍵打包生成,然後使用 SDFactory 工具 分離得到,如下圖:
另一個方法就是使用簽名工具,對用戶的 Bin 進行簽名得到,單獨對 Bin 簽名,後續也會寫一遍博文進行介紹,目前比較方面的是按照以上的方法得到 Boot Package。
② Boot Package 文件使用:
可以直接使用 SDFactory 工具替換原先的 Boot。
三、參考
四、後續博文
(1)【Semidrive E3】efuse 數據生成
(2)【Semidrive E3】image 加密介紹
等等
評論