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" 这个消息出现在终端上。

secure boot(二)

 

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