RT1052 RT1060 BEE 加密XIP運行 燒錄


RT1052 RT1060 BEE 加密XIP運行 燒錄  目錄

. 兩種BIN文件的產生 

1.1生產用Bin文件包括BootLoaderApp兩部分合成 

1.2升級用BIN文件 

二.加密5種模式 

三.使用NXP-MCUBootUtility.exe工具加密燒錄 

四.加密升級文件生成 

五.需要注意的問題

一. 兩種BIN文件的產生

1.1生產用Bin文件

生產用Bin文件包括BootLoaderApp兩部分合成

工程目錄:

bootloaderxxx\bootloader\mdk----產生bootloader.bin文件。

App    xxx\project\mdk--------產生UpgradeV001.bin文件(采用升級功能配置)。

生成文件需要在工程改動的地方:appmain.c中修改版本號bootloader工程中將版本號放在一個固定地址處。

一. 兩種BIN文件的產生

1.1生產用Bin文件

生產用Bin文件包括BootLoaderApp兩部分合成

工程目錄:

bootloaderxxx\bootloader\mdk----產生bootloader.bin文件。

 

App    xxx\project\mdk--------產生UpgradeV001.bin文件(采用升級功能配置)。

 

生成文件需要在工程改動的地方:appmain.c中修改版本號

 

static const char   pcbWareVersion[DEVINFOLENGTHMAX] = "xxxMB_P003     ";          ///<硬件版本號數組

 

static const char   progVersion[DEVINFOLENGTHMAX]        = "PROGV001";     ///<軟件版本號數組

 bootloader工程中將版本號放在一個固定地址處,此處暫時沒有做。

static const char   bootVersion[DEVINFOLENGTHMAX]        = "BOOTV001";     ///<boot版本號數組

DCD.bin文件產生:

首先從CGA_bootloader.bin提取DCD.bin (offset 0x1030 - 0x1443)文件保存到電腦。

合成供加密生產用bin文件步驟:

CGA_bootloader.bin和CGUpgrade.bin兩個文件使用16進制編輯工具(HxDx64.exe)合到一起。

注意CGA_bootloader.bin若不足0x7FFF則填充0XFF0x7FFF;后面緊跟CGUpgrade.bin 然后,將前0x1FFF數據刪除,保存,

此時的Bin文件才能提供給NXP-MCUBootUtility.exe加密,燒錄。

本方法適用於生產。  

非加密燒錄步驟:

1.設置DCD文件路徑:

  1. 選中非加密,同時在Tools中選擇Entry mode
    1. 選擇合成后的升級文件:
    2. 加密后和加密前,img的組成分別如下圖:

    3. 升級用BIN文件

      CGUpgrade.bin,采用升級功能配置的工程產生,不需要額外修改,可以直接當做升級文件。啟動地址是0x60008000

    4. 加密模式有5種,請參考專門的博客:https://www.cnblogs.com/henjay724/p/10047071.html
    5.  

      根據我們加密升級的具體需求,我們選擇模式5,且是自定義KEY,方便保管。

      我們會燒錄SRKH(0x580 - 0x5f0)SW_GP2(0x690 - 0x6c0)GP4(0x8c0 - 0x8f0),這些區域一經燒錄便不得更改,甚至我們希望這些區域不僅不能被更改,也要不能被回讀

    6. 使用NXP-MCUBootUtility.exe工具加密燒錄

      在軟件主界面,按如下配置,選擇'BEE Encrypted Image Boot',選中Bootloader_App.bin,格式選擇Raw Binary,並且Base Address填0x60002000,然后點擊【Advavced Key Settings】

    7. 在Flexible Key Setting頁面,如果你是RT105x,只需要設置User Key Data(可自己手動輸入32個hex,也可點擊下方Generate Random Key生成隨機Key)和Protected Region x Start/Length,其余保持不變。

      為了方便升級,建議統一為:User key Data:xxxxxxxxxxxxxxxx

    8. 關於Protected Region,使用默認Region 0就可以了,Start和length即是你想加密的范圍。

       1. 如果你想加密全部的bootloader和app,那么start設為0x60002000, 長度即你的Boot_PROGSVN00000V001runOk.bin長度減去8KB,然后再做4KB對齊,即0x51000。

    9.  如果你只想加密app,那么start應設為0x60008000,長度即你的Boot_PROGSVN00000V001runOk.bin長度減去32KB,然后再做4KB對齊,即0x4B000。

 

配置完成,點擊【All-In-One Action】按鈕,BEE加密就完成了,也下載到rt1052

四.加密升級文件UpgradeV001步驟

bootloader只能接收事先加密好的Upgrade,因此你需要事先將Upgrade做一次加密,可利用\NXP-MCUBootUtility\tools\image_enc\win\image_enc.exe這個命令行工具,也可以直接用NXP-MCUBootUtility,菜單欄進入Tools/Option,選擇Master mode。

然后選擇你的Upgrade.bin(注意是裸binary,不要任何頭,binary起始就是SP, PC),【Advanced Key Settings】里加密參數與前一封郵件里設置一致,然后分別點擊

【Generate Unsigned bootable image】和【Encrypt Bootable Image】按鈕,結束之后找到\NXP-MCUBootUtility\gen\bootable_image\App_unsigned_bee_encrypted.bin文件,

該文件里偏移0x8000之后的數據即是你要的加密好的app數據,扣出來用即可。

利用CGA上位機手動刷固件注意:應該把makeFirmware轉換后的os放入目錄:******\firmware,否則不能升級。

五.使用rt-flash燒錄

上一個章節可以生成4sb文件如下:

BOOT_PROGV018_unsigned_bee_encrypted_flexspinor_0xc0000007_0x0.sb

BOOT_PROGV018_unsigned_bee_encrypted_flexspinor_0xc0000007_0x0_efuse.sb

BOOT_PROGV018_unsigned_bee_encrypted_flexspinor_0xc0000007_0x0_flash.sb

burn_efuse.sb

六.需要注意的問題

5.0注意:目前測試是必須在燒錄板子的過程中產生sb文件。

5.1加密燒錄后還不能順利啟動,啟動還需要置位一個boot cfg pin,如果是RT105x,應該是GPIO_B0_05,將這個pin拉高,然后POR復位。此方法不方便采用,可以參考下面的方法。

 

加密燒錄后還不能順利啟動,不采用5.1方法,還有燒錄fuse的方法可以替代。置位Boot cfg pin一般是在產品調試階段使用

 設置fuses兩個:  0x450[1]0x460[23:22][20][18][4] 設置為1,

即分別是0x000000020x00D40010

 0x460[18]   1-SDP READ_REGISTER is disabled

0x460[17]   1 - No serial download support

補充:

0x460[23:22]  11 - No debug mode

0x460    1 - JTAG is disabled

研發階段的設置(不禁止串口下載模式和JTAG):

0x4500x460分別設置為:0x000000020x00000010

燒錄了fuse啟動,依舊可以運行非加密imageRT不是根據fuse來判斷image是否加密,而是根據Flash里的bootable image是否含有EKIB, EPRDB來判斷的。

5.3 BOOT_MODE[1:0] pin不受fuse值影響,並且設置只在POR后生效

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM