secure boot(三)

0.前言

    本文主要說明的是在開啓secure boot功能時可能遇到的難題,以及如何使用USB的方法來刷簽名鏡像。

 

1.開啓secure boot功能可能會遇到的問題

     我們刷完簽名鏡像之後,就可以重啓機器,如果一切工作順利,那麼機器會正常運行,和沒有啓用secure boot時的情況一致。但是如果有什麼步驟出錯了,你會發現機器啥都沒有輸出,終端沒有一點反應,這是因爲軟件跑步起來,驗證沒有通過。所以在啓用secire boot功能時,必須仔細閱讀高通提供的文檔,充分了解其中的細節。

    以下是一些我遇到的問題,可以作爲參考,以防再次出現類似錯誤。

(1)如果你的機器開機沒有任何反應,很有可能是驗證沒有通過,你需要確保你的OTP編程和後面的簽名鏡像使用的是同一套密鑰。因爲高通提供的SDK有兩個版本:qca4020 SDK which are qca4020.or_.1.1_postcs1和qca4020-or-2-0_qca_oem_sdk-cdb,它們的密鑰是不一樣的,兩個不能混合使用。

(2)高通默認使用JTAG進行刷簽名鏡像,如果你不能連接到JTAG,那麼請務必檢查你是否正確裝了FTDI驅動和OpenOCD的插件。

(3)如果能夠連接JTAG,但是就是不能將鏡像刷進去,那麼你需要確認你之前是否使用的是USB的刷機方式,如果是,你需要刪除target\quartz\demo\QCLI_demo\build\gcc\output下的三個文件

firmware_table.bin
generated_fwd_table.xml
generated_partition_table.xml

 

2.如何使用USB燒寫簽名鏡像

    在我們使用USB的方式進行刷機時會得到這樣的錯誤

D:\flamingo\QCA4020\test_secure_boot\secure_boot\target\quartz\demo\QCLI_demo\build\gcc>python D:\flamingo\QCA4020\test_secure_boot\secure_boot\target\build\tools\flash\qflash.py --comm 4 --app 4020

qflash.py Info: Generate partition table...

qflash.py Info: Generate FWD table...

[2018-10-16 15:39:30,233] INFO: Checking for files to add to the image for Firmware Descriptor Table 0 File:gen_fwd_table.py:654 Function:fen_xml_program

[2018-10-16 15:39:30,240] INFO: DoneGenerating XML file to pragram. File:gen_fwd_table.py:692 Function:gen_xml_program

qflash.py Info: Download device programmer...

qflash,py Info: Check for QLoader port in Device Manager.

qflash,py Info: Need to reset device?

qflash,py Error: QSaharaServer failed to load Device Programmer

    從上面的log來看,在加載設備編程器的時候出現了錯誤。這是爲什麼呢?

    原來,我們除了對我們要刷的鏡像進行簽名,我們還需要設備編程器進行簽名。即一切要放到板裏運行的軟件都是需要簽名的,否則不可能運行,所以纔會有如上的錯誤。

    所以解決這個問題的關鍵就是要對設備編程器進行簽名。方法是在target\quartz\demo\QCLI_demo\build\gcc目錄下的腳本文件 build.bat中添加如下的一句話:

python %SectoolsQdnDir%\sectools.py iot -p 4020 -g m4 -i 
D:\flamingo\QCA4020\test_secure_boot\secure_boot\target\build\tools\flash\prog_spinor_firehose_qca4020_lite_m4_threadx.mbn
 -k %SectoolsCertsDir%\qpsa_rootca.key
 -c %SectoolsCertsDir%\qpsa_rootca.cer 
--cfg_oem_id=0xffff --cfg_model_id=0x0000 -o . -s

  這句話的目的就是對設備編程器進行簽名,然後使用簽名後的鏡像就可以運行,從而完成它的功能。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章