1、在SDK代碼建立檔案夾,放置相關Secureboot工具:
mkdir device/rockchip/rk3399/secureboot //建立目錄,
2、使用SecureBootConsole 工具簽名前,請先指定好type.xml中的晶片類型,例如3288,3399:
例如vim type.xml打開type.xml檔案進行設定為3399,
3399
3、生成公私鑰 (如輸入參數增加-p,則會輸出功能步驟中列印的log資訊)
執行指令: SecureBootConsole -k|-kk SaveKeyDir //generate key -k(1024) -kk(2048),1024和2048是key的類型
例如以下操作: //在目前目錄生成key檔案
SecureBootConsole -k ./ 或者: SecureBootConsole -kk ./ //我這裡rk3399使用SecureBootConsole -kk ./指令
4、簽名分立固件【secure boot固件要求:固件要求boot.img和 recovery.img都需要包含 kernel.img,
即SDK自動編譯腳本build.sh需要添加語句:./mkimage.sh ota,加在make otapackage -j4之後】
給分立固件簽名:trust.img uboot.img recovery.img boot.img //注意:不用單獨給kernel以及resource去簽名
執行指令:SecureBootConsole -si privatekey _path image_path
5、簽名loader
5.1 //Sign Loader soft 1024
[email protected]:/work/czd/rk3399_7.1_ind/Secureboot_rk3399/SecureBootConsole_v1.90$ SecureBootConsole -p -sl publicKey.bin ./Image-rk3399_all/MiniLoaderAll.bin
INFO:Start to sign Loader(MiniLoaderAll.bin).
INFO:Sign loader succeed.
6、簽完loader和分立固件後對固件進行打包(update.img)
./mkupdate.sh //執行linux打包工具Linux_Pack_Firmware/rockdev中的mkupdate.sh腳本,把上面已經簽名的loader和分立固件打包成update.img檔案
7、Make efuse ota update.zip //即編譯ota 簽名的固件包
7.1確定build/tools/目錄有drmsigntool簽名工具,如果沒有,需要添加;
7.2把上面生成的key(公私密鑰)拷貝到build/target/product/security/目錄。
7.3執行正常的ota打包即可。
以上的4, 5,6步驟可以直接添加到一個shell腳本檔案中實作。
----------------------rk3399 command------------------------
SecureBootConsole -kk SaveKeyDir //生成密鑰
sudo ./SecureBootConsole -slx privateKey.bin publicKey.bin Image/MiniLoaderAll.bin //簽名 loader
sudo ./SecureBootConsole -si privateKey.bin Image/recovery.img //簽名recovery.img
sudo ./SecureBootConsole -si privateKey.bin Image/boot.img //簽名boot.img
sudo ./SecureBootConsole -si privateKey.bin Image/trust.img //簽名trust.img
sudo ./SecureBootConsole -si privateKey.bin Image/uboot.img //簽名uboot.img
./mkupdate.sh //打包簽名的loader和分立固件成update.img,在Linux_Pack_Firmware/rockdev中執行mkupdate.sh腳本
sudo ./SecureBootConsole -sh privateKey.bin update.img //固件打包好後,簽固件的md5值
----------------------rk3399 command------------------------
注意問題點:
1、SecureBootConsole生成key時,參數使用-k(1024),然後就可以使用以下語句簽名loader:
//Sign Loader soft 1024
SecureBootConsole -sl publickey_path loader_path
如果是-kk(2048)則需要使用下面的語句簽名loader,否則會簽名失敗:
//SignEx Loader (efuse 2048)
SecureBootConsole -slx privatekey_path publickey _pathl oader_path
2、key的放置目錄
參考文檔:
RK3399_Efuse_Operation_Instructions_V1.00_20190214.pdf
SecureBootConsole 說明文檔.docx