基於 SemiDrive E3 平台 GenAutoBurnImg 工具使用介紹

一、概述

eFuse 是芯馳里的一塊特殊的數據區域,用於存放的晶片配置信息、KEY,具有燒寫熔斷的特性,一旦數據被燒寫成 1 後便再也無法被修改,eFuse 數據初始值均為 0,需要通過特殊的燒寫時序燒寫數據。由於 eFuse 的熔斷的特性,用戶在寫入 eFuse 數據時需慎重和確認好需要寫的數據及地址,謹慎使用工具燒寫。eFuse 數據可以通過多種工具與方法燒錄,而這些工具所用到的 eFuse 數據格式與來源也有多種,其中 GenAutoBurnImg 工具可以通過加載指定的 json 配置,生成對應的 eFuse 燒錄文件。

二、Fuse 數據

2.1 Fuse

E3 晶片中 Fuse 項目有如下圖所示,有用於安全啟動、KeyStroe、SecureDebug、LockBank、Flash 加密等功能 Fuse。

 

2.2 Fuse 燒寫配置類型

Fuse 燒寫配置類型如下:

- Fuse_Direct_Program:軟體直接寫入鏡像中的 Fuse 數據到對應的 Fuse。

- Fuse_OrOpr_Program:軟體先讀取 Fuse 中的數據,再與鏡像中數據進行 “或” 運算後寫入對應的 Fuse。

- Fuse_Gen_And_Program:軟體根據配置的 Fuse Index 及長度,自動生成 Fuse 數據寫入對應的 Fuse。

- Fuse_SSRK_Program:採用 FSRK 明文作為密鑰進行加密存儲的 Fuse Key 類型。

- Fuse_TSPK_Program:採用 SSRK 加密存儲的 Fuse Key 類型,軟體根據配置將加密後的密文寫入對應的Fuse。

- Fuse_KCRC_Program:KCRC 類型用於 KCRC fuse 類型燒錄,軟體根據配置 keyIndex 位置及長度,讀取相應的 Fuse 數據後計算出的 CRC 值寫入 fuseIndex 對應的 Fuse 中(KCRC 類型的 Fuse 的配置項需要位於其對應 key fuse 配置項之後)


三、json 配置文件

.\SDToolBox_R2.23.1601\App\GenAutoBurnImg\Bin 目錄下的 security_deployment.json 一份配置模板文件,可以基於該配置模板進行對應的項目配置的修改。

json 配置文件中,主要包含三類 Action:
- Pin_Mux(配置 GPIO 的 Pin index 信息,例如可以根據配置的信息實現 GPIO 上拉下拉的配置 )
- Fuse 燒寫(eFuse 數據刷寫)
- Fuse_Lock(eFuse Bank 鎖控制)
生成的 Fuse 燒錄文件會更加 json 配置的順序執行,所以需要在配置 json 階段就做好刷寫執行順序先後的檢測
 

3.1 json 配置數據

json 配置例子如下所示,用戶根據實際的項目需要配置對應的 name、fuseType、fuseIndex、 fuseLen、data 信息,tag 及 ver 信息直接複製模板中的即可。

{
"head": {
"tag": "0xe101",
"ver": "0x1"
},
"actions": [
{
"tag": "0xf001",
"ver": "0x1",
"name": "Fuse_Direct_Program",
"fuseType": "DID",
"fuseIndex": "0x0E",
"fuseLen": "0x08",
"data": [
"0x00000001",
"0x00000001"
]
}
}

3.1.1 name

決定 fuse 燒寫的操作類型,配置項如章節 "2.2 Fuse 燒寫配置類型" 中介紹

3.1.2 fuseType

用於標識 Fuse 項目的別名,用於辨識該段是什麼 fuse 項目

3.1.3 fuseIndex

用於配置所燒 Fuse 的 Index 信息


3.1.4 fuseLen

用於配置所燒 Fuse 的長度

3.1.5 data

用於配置所燒 Fuse 的數據

3.2 Fuse Lock 配置

Fuse_Lock 用於配置 Fuse 鎖功能,可以根據配置對配置 Bank 實現特定鎖功能

Fuse 鎖類型支持
hlock (Lock for HW key bus)
olock (Lock for write shadow registers)
rlock  (Lock for read fuse and shadow register)
plock (Lock for program fuse)

不同程度的鎖功能 Fuse Lock 後會導致不能對對應的 bank fuse 進行寫入操作,所以 Lock 操作順序需要放在寫完 Fuse 後操作(json 配置 Fuse 數據配置後)。
{
"tag": "0xf001",
"ver": "0x1",
"name": "Fuse_Lock",
"bankID": "0x7",
"lockType": [
"olock",
"plock"
],
"domType": [
"ap",
"saf"
],
"commom": "Lock ROTPK1"
},

 

四、GenAutoBurnImg 工具操作

4.1 工具路徑

雙擊打開 \SDToolBox_R2.23.1601\App\GenAutoBurnImg\Bin\GenAutoBurnImg.bat 工具




4.2 生成 Fuse 燒錄文件

make_img 用於加載 json 配置,根據配置生成 Fuse 鏡像文件,將 json 文件複製到 GenAutoBurnImg 同目錄下
生成命令
/* 或使用對應文件的相對路徑,輸出 img 或 bin 格式文件 */
GenAutoBurnImg.exe make_img --config .\SecBoot_Fuse.json --output .\SecBoot_Fuse.img​



生成 Fuse 鏡像文件

4.3 Fuse 燒錄文件輸出 json 配置文件

parse_img 用於生成 json 配置,根據生成鏡像反推出 json 文件,生成命令

GenAutoBurnImg.exe parse_img --image .\SecBoot_Fuse.img --output .\SecBoot_Fuse_output.json​



輸出 json 配置文件

{
"head": {
"tag": "0xe101",
"ver": "0x1"
},
"actions": [
{
"tag": "0xf001",
"ver": "0x1",
"name": "Fuse_Direct_Program",
"fuseType": "DID",
"fuseIndex": "0xe",
"fuseLen": "0x8",
"data": [
"0x1",
"0x1"
]
},
。。。。。。

 

五、參考文檔

《GenAutoBurnImg User Guide.pdf》

《AppNote_E3_燒錄流程.pdf》

《SDToolBox User Guide.pdf》

《AppNote_E3_Boot_and_OTA.pdf》

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

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

評論