secure boot(二)
0.前言
本文的目的是为了根据一个实例来讲解在QCA4020开发板上如何启用secure boot 功能。
1.通过OTP 编程工具使能secure boot
为了设置OTP保险丝,我们需要使用QCA4020 SDK中包含的OTP编程工具。
(1)编辑位于target\quartz\mfg\OTP\tools\下的配置文件otp_config.xml,如下所示:
<otp_descriptor>
<firmware_region_write_disable>0</firmware_region_write_disable>
<model_id>0x0</model_id>
<pk_hash>0110203040506070809001102030405060708090011020304050607080900102</pk_hash>
<!-- <otp_encryp_key>0102030405060708090a0b0c0d0e0f00</otp_encryp_key> -->
<otp_profile>development</otp_profile>
</otp_descriptor>
(2) 编译OTP
在target\quartz\mfg\OTP\build\gcc下,执行如下命令
build.bat t 4020 cdb
(3)在 \target\quartz\mfg\OTP\build\gcc目录下,执行如下命令将OTP编程工具镜像烧写到开发板中
flash_openocd.bat
(4) 确保UDB串口线与PC线与PC机相连接,并且串口终端是活动的。
(5) 重启机器, 我们将会看到 "OTP update success" 这个消息出现在终端上。
2.将镜像签名
设置完成OTP编程熔丝之后,仅仅只能由验证过的软件才能被执行,所以我们必须将我们的镜像进行签名,才能放入开发板,要不然是使用不了的。
(1)修改位于 \target\quartz\demo\QCLI_demo\build\gcc\的脚本 build.bat
SET SECBOOT=true
...
IF /I "%BOARD_VARIANT%" == "CDB" (
python %SectoolsQdnDir%\sectools.py iot -p 4020 -g m4 -i %OUTDIR%\%PROJECT%.elf -k %SectoolsCertsDir%\qpsa_rootca.key -c %SectoolsCertsDir%\qpsa_rootca.cer --cfg_oem_id=0xffff --cfg_model_id=0x0000 -o . -s
python %SectoolsQdnDir%\sectools.py iot -p 4020 -g m0 -i %RootDir%\bin\cortex-m0\threadx\ioe_ram_m0_threadx_ipt.mbn -k %SectoolsCertsDir%\qpsa_rootca.key -c %SectoolsCertsDir%\qpsa_rootca.cer --cfg_oem_id=0xffff --cfg_model_id=0x0000 -o . -s
python %SectoolsQdnDir%\sectools.py iot -p 4020 -g kf -i %RootDir%\bin\wlan\wlan_fw_img.bin -k %SectoolsCertsDir%\qpsa_rootca.key -c %SectoolsCertsDir%\qpsa_rootca.cer --cfg_oem_id=0xffff --cfg_model_id=0x0000 -o . -s
(2)Execute the command “build.bat t 4020 cdb”,then you can get the following files.
3.烧写签名的镜像
(1)编辑位于 \target\quartz\demo\QCLI_demo\build\gcc\下的脚本文件flash_openocd.bat 如下:
SET M4_DIR=%ROOTDIR%\quartz\demo\QCLI_demo\build\gcc\4020\m4
SET M0_DIR=%ROOTDIR%\quartz\demo\QCLI_demo\build\gcc\4020\m0
SET WLAN_DIR=%ROOTDIR%\quartz\demo\QCLI_demo\build\gcc\4020\kf
SET M4_IMAGE="%M4_DIR%\Quartz.elf"
SET M0_IMAGE="%M0_DIR%\ioe_ram_m0_threadx_ipt.mbn"
SET WLAN_IMAGE="%WLAN_DIR%\wlan_fw_img.bin"
(2) 在\target\quartz\demo\QCLI_demo\build\gcc下执行如下命令烧写镜像
flash_openocd.bat