離線加密編程器中的BootLoader程序設(shè)計(jì)
2.3 文件類型
整個(gè)工作過程涉及以下幾種文件:
①加密下載文件:該文件是HEX文件經(jīng)過加密后得到的文件,其中包含密鑰信息和編程數(shù)據(jù)。
②注冊申請文件:該文件包含申請注冊所需編程器的內(nèi)部信息及客戶信息。
③注冊文件:該文件是在注冊申請文件的基礎(chǔ)上,IP擁有方添加注冊信息,包括各種參數(shù)。
④授權(quán)申請文件:該文件用來向IP擁有方購買授權(quán)下載次數(shù),內(nèi)容包括編程器信息、客戶信息,以及交易達(dá)成的各種協(xié)議。
⑤授權(quán)文件:該文件在授權(quán)申請文件的基礎(chǔ)上添加授權(quán)次數(shù)及說明。
注:其中注冊申請文件、授權(quán)申請文件是通過客戶端軟件從編程器中提取的;注冊文件、授權(quán)文件通過客戶端軟件下載到編程器。
3 編程器工作流程
編程器的工作流程如圖2所示。下載到編程器的加密數(shù)據(jù)需要存入具有SPI接口的大容量外存AT45DB041B 中,然而Atmegal69P(V)的SPI接口需要用來對目標(biāo)板進(jìn)行編程,所以只能采用軟件模擬SPI接口來對AT45DB041B進(jìn)行讀寫操作。對目標(biāo)板進(jìn)行編程時(shí),為了防止通過抓取SPI接口的時(shí)序來得到有效的編程數(shù)據(jù),首先編程目標(biāo)板的引導(dǎo)程序,然后對目標(biāo)板下載加密數(shù)據(jù),通過引導(dǎo)程序?qū)?shù)據(jù)進(jìn)行解密后再進(jìn)行目標(biāo)板的編程操作。這樣做的好處是,通過數(shù)據(jù)加密,使得SPI總線上傳輸?shù)臄?shù)據(jù)均為加密信息,即使得到SPI總線上的時(shí)序,也不能使用。目標(biāo)板的BootLoader程序?qū)⒔邮盏降募用軘?shù)據(jù)進(jìn)行解密,然后將數(shù)據(jù)存儲。這些操作都在單片機(jī)內(nèi)部進(jìn)行,不會被破解。
3.1 主程序
主程序要完成系統(tǒng)的初始化、中斷設(shè)置、全局變量設(shè)置等。在初始化結(jié)束后,系統(tǒng)進(jìn)入主查詢循環(huán)過程以判斷當(dāng)前進(jìn)行的操作,并進(jìn)入相應(yīng)的功能模塊。系統(tǒng)主程序流程如圖3所示。
本文引用地址:http://m.butianyuan.cn/article/151069.htm
3.2 編程器與目標(biāo)板的通信
編程器通過SPI總線與目標(biāo)板建立連接。當(dāng)進(jìn)行目標(biāo)板的編程時(shí),首先編程目標(biāo)板的 BootLoader區(qū)引導(dǎo)程序。引導(dǎo)區(qū)程序編程完畢后,編程器與目標(biāo)板進(jìn)行通信,將加密數(shù)據(jù)傳送給目標(biāo)板。目標(biāo)板的BootLoader程序接收到加密數(shù)據(jù)后進(jìn)行CRC校驗(yàn)。如果校驗(yàn)失敗,Boot—Loader要求編程器重新發(fā)送數(shù)據(jù);如果校驗(yàn)通過,對加密數(shù)據(jù)進(jìn)行解密,然后寫入Flash。編程器與目標(biāo)板通信流程如圖4所示。
4 BootLoader編程設(shè)計(jì)
4.1 BootLoader。介紹
BootLoader區(qū)位于單片機(jī)內(nèi)部Flash的最高地址,BootLoader存儲器空間的大小可以通過熔絲位進(jìn)行配置。BootLoader為通過 MCU本身來下載和上載程序代碼提供了一個(gè)真正的同時(shí)讀一寫自編程機(jī)制(Read—While—Write,RWW)。這一特點(diǎn)使得系統(tǒng)可以在MCU的控制下,通過駐留于程序Flash的BootLoader,靈活地進(jìn)行應(yīng)用軟件升級。BootLoader可以使用任何器件具有的數(shù)據(jù)接口和相關(guān)的協(xié)議獲得代碼并把代碼(程序)寫入閃存,或者是從程序存儲器讀取代碼。BootLoader區(qū)的程序可以操作整個(gè)閃存,包括BootLoader區(qū),因而 BootLoader可以對其自身進(jìn)行修改,甚至將自己擦除。如果系統(tǒng)已經(jīng)不再需要BootLoader,則可以通過指令控制BootLoader程序,將BootLoader區(qū)擦除。
評論