開發高通QCC514x/512x/304x/303x/302x一個專案大概要耗費半年至一年的時間,我們要如何來保護我們的心血。
ADK提供eFuse方法來保護我們的心血,請參考以下步驟。
步驟1: 先產生eFuse鑰匙 。首先建立一個文字檔,內容是32個16進制碼後,請存成encryption.key。
例: 0x0123456789ABCDEF0123456789ABCDEF
步驟2: 將eFuse鑰匙,包入軟件映像檔。
a. 針對應用層Application重新編譯 (MDE/Build/Rebuild All)。
b. 針對Libs重新編譯 (MDE/Projects (libs...)/Rebuild (Skip Dependencies)。
c. 接下來是把eFuse鑰匙放入軟件映像檔,選擇MDE/Tools/Build single flash image file。
d. 選擇Encrypted。
e. 接著選擇步驟1所產生的eFuse key (encryption.key)。
f. 最後有加入eFuse鑰匙的軟件映像檔會存放在如下路徑。
例: C:\Users\... \Documents\ADK6.4.2.26\apps\applications\sink\qcc512x_qcc302x\CF376_CF429\image\20201117152817\output\flash_image.xuv
步驟3:透過SecureKeyCmd.exe\CDAKEY將eFuse鑰匙燒錄到QCC晶片裡。
例: C:\qtil\ADK_QCC512X_QCC302X_WIN_6.4.2.26\tools\bin
> SecureKeyCmd.exe -trb 1 write CDAKEY 0 C:\TEMP\encryption.key
步驟4:透過SecureKeyCmd.exe\enable DECRYPT啟動在QCC晶片裡的Fuse鑰匙。
例: C:\qtil\ADK_QCC512X_QCC302X_WIN_6.4.2.26\tools\bin
> SecureKeyCmd.exe -trb 1 enable DECRYPT
步驟5:透過NvsCom.exe\Identify來重置QCC晶片。
例: C:\qtil\ADK_QCC512X_QCC302X_WIN_6.4.2.26\tools\bin>NvsCmd.exe -trb 1 -deviceid 4 0 -nvstype sqif identify
步驟6:接著透過NvsCom.exe\erase來清除SQIFlash。
例: C:\qtil\ADK_QCC512X_QCC302X_WIN_6.4.2.26\tools\bin>NvsCmd.exe -trb 1 -deviceid 4 0 -nvstype sqif erase
步驟7:透過NvsCom.exe\burn將具有eFuse的軟件映像檔燒錄到樣品裡,這個軟件映像檔是在步驟2的第f項所產生出來的flash_image.xuv。
例: C:\qtil\ADK_QCC512X_QCC302X_WIN_6.4.2.26\tools\bin>NvsCmd.exe -trb 1 -deviceid 4 0 -nvstype sqif burn C:\Users\... \Documents\ADK6.4.2.26\apps\applications\sink\qcc512x_qcc302x\CF376_CF429\image\20201117152817\output\flash_image.xuv
步驟8:最後步驟透過NvsCom.exe\enable DBGLOCK來鎖住TRB和USBDBG的介面。
例: C:\qtil\ADK_QCC512X_QCC302X_WIN_6.4.2.26\tools\bin
> SecureKeyCmd.exe -trb 1 enable DBGLOCK
驗證結果:利用NVSApp可以看到樣品的開發介面成功被鎖住了The chip is locked。
注意: eFuse一旦被寫入就無法還原,使用時請小心謹慎。
評論
RayAA
2022年8月12日
Alex
2021年4月12日