離線加密編程器中的BootLoader程序設計
2.3 文件類型
整個工作過程涉及以下幾種文件:
①加密下載文件:該文件是HEX文件經過加密后得到的文件,其中包含密鑰信息和編程數據。
②注冊申請文件:該文件包含申請注冊所需編程器的內部信息及客戶信息。
③注冊文件:該文件是在注冊申請文件的基礎上,IP擁有方添加注冊信息,包括各種參數。
④授權申請文件:該文件用來向IP擁有方購買授權下載次數,內容包括編程器信息、客戶信息,以及交易達成的各種協議。
⑤授權文件:該文件在授權申請文件的基礎上添加授權次數及說明。
注:其中注冊申請文件、授權申請文件是通過客戶端軟件從編程器中提取的;注冊文件、授權文件通過客戶端軟件下載到編程器。
3 編程器工作流程
編程器的工作流程如圖2所示。下載到編程器的加密數據需要存入具有SPI接口的大容量外存AT45DB041B 中,然而Atmegal69P(V)的SPI接口需要用來對目標板進行編程,所以只能采用軟件模擬SPI接口來對AT45DB041B進行讀寫操作。對目標板進行編程時,為了防止通過抓取SPI接口的時序來得到有效的編程數據,首先編程目標板的引導程序,然后對目標板下載加密數據,通過引導程序對數據進行解密后再進行目標板的編程操作。這樣做的好處是,通過數據加密,使得SPI總線上傳輸的數據均為加密信息,即使得到SPI總線上的時序,也不能使用。目標板的BootLoader程序將接收到的加密數據進行解密,然后將數據存儲。這些操作都在單片機內部進行,不會被破解。
3.1 主程序
主程序要完成系統的初始化、中斷設置、全局變量設置等。在初始化結束后,系統進入主查詢循環過程以判斷當前進行的操作,并進入相應的功能模塊。系統主程序流程如圖3所示。

3.2 編程器與目標板的通信
編程器通過SPI總線與目標板建立連接。當進行目標板的編程時,首先編程目標板的 BootLoader區引導程序。引導區程序編程完畢后,編程器與目標板進行通信,將加密數據傳送給目標板。目標板的BootLoader程序接收到加密數據后進行CRC校驗。如果校驗失敗,Boot—Loader要求編程器重新發送數據;如果校驗通過,對加密數據進行解密,然后寫入Flash。編程器與目標板通信流程如圖4所示。
4 BootLoader編程設計
4.1 BootLoader。介紹
BootLoader區位于單片機內部Flash的最高地址,BootLoader存儲器空間的大小可以通過熔絲位進行配置。BootLoader為通過 MCU本身來下載和上載程序代碼提供了一個真正的同時讀一寫自編程機制(Read—While—Write,RWW)。這一特點使得系統可以在MCU的控制下,通過駐留于程序Flash的BootLoader,靈活地進行應用軟件升級。BootLoader可以使用任何器件具有的數據接口和相關的協議獲得代碼并把代碼(程序)寫入閃存,或者是從程序存儲器讀取代碼。BootLoader區的程序可以操作整個閃存,包括BootLoader區,因而 BootLoader可以對其自身進行修改,甚至將自己擦除。如果系統已經不再需要BootLoader,則可以通過指令控制BootLoader程序,將BootLoader區擦除。
評論