離線加密編程器中的 BootLoader程序設(shè)計
離線加密編程器是一種獨(dú)立于PC機(jī),并通過SPI接口直接對ATmega系列單片機(jī)進(jìn)行編程操作的設(shè)備。在整個系統(tǒng)中,編程器與目標(biāo)板之間的結(jié)合部分是一個最可能被解密的地方,因為可以通過抓取SPI總線上的時序得到所傳輸?shù)臄?shù)據(jù),因此編程器與目標(biāo)板之間傳輸?shù)臄?shù)據(jù)必須是經(jīng)過加密的。而有效的編程數(shù)據(jù)不能為加密數(shù)據(jù),所以加密數(shù)據(jù)需要經(jīng)過解密還原才能用于單片機(jī)的編程。本設(shè)計中BootLoader程序的作用就是接收離線加密編程器的加密數(shù)據(jù),對加密數(shù)據(jù)進(jìn)行解密,然后完成目標(biāo)板的編程操作。首先編程目標(biāo)板單片機(jī)的BootLoaoler引導(dǎo)程序,最后與BootLoacler程序建立連接。編程器將加密數(shù)據(jù)傳送給。BootLoader程序,由BootLoacler程序?qū)用軘?shù)據(jù)進(jìn)行解密,然后完成編程操作。這樣做既可以確保數(shù)據(jù)不被外界破解,又能方便程序的升級操作。BootLoader程序的下載對具有知識產(chǎn)權(quán)保護(hù)要求的離線編程器設(shè)計是一個關(guān)鍵步驟,它的成功與否直接決定離線編程器設(shè)計能否成功。本文將以ATmegal69為例進(jìn)行BootLoader程序下載的介紹。
1 系統(tǒng)硬件設(shè)計
本系統(tǒng)主要由單片機(jī)、顯示部分、按鍵開關(guān)、存儲部分和串行通信部分等組成,硬件結(jié)構(gòu)框圖如圖1所示。
圖1中,AVR ATmegal69P(V)單片機(jī)是一種高性能、低功耗的8位微處理器,采用先進(jìn)的RISC結(jié)構(gòu),130條指令大多數(shù)可以在1個時鐘周期內(nèi)完成,滿足了本系統(tǒng)對執(zhí)行速度的要求。它具有非易失性的程序和數(shù)據(jù)存儲器,16 KB的系統(tǒng)內(nèi)可編程Flash,具有4×25段的LCD驅(qū)動器的ATmegal69P(V),輸入電壓3.3 V,串行US―ART,可工作于主機(jī)/從機(jī)模式的SPI串行接口;存儲部分采用ATmel公司8個引腳的串口存儲芯片AT45DB041B,主存容量大小為528 KB,一共2 048頁,每頁264B,具有2個大小為265B的數(shù)據(jù)緩存,允許通知對存儲芯片進(jìn)行讀寫,工作電壓為3.3 V。由于系統(tǒng)單片機(jī)的SPI通信口用來對目標(biāo)板進(jìn)行編程,所以采用軟件模擬SPI對AT45DB041B進(jìn)行讀寫;其通信部分分為與PC機(jī)的通信和與目標(biāo)板的通信。與PC機(jī)的通信采用USB接口,編程器內(nèi)部采用UART―USB轉(zhuǎn)換橋芯片PL一2303,在編程方式上等同于一個普通的UART接口,非常方便;與目標(biāo)板的通信是通過高速的SPI接口,達(dá)到對目標(biāo)板的編程操作;采用雙鍵制按鍵開關(guān),其中按鍵之一用來查詢下載器的各種信息,另外一個按鍵用來啟動對目標(biāo)板的下載操作;為了充分利用ATmegal69P(V)具有LCD驅(qū)動器的特點(diǎn),采用段式LCD屏,可以縮小下載器的體積,操作方便。
2 工作原理
2.1 幾個概念
①開發(fā)方:設(shè)計IP的開發(fā)單位或個人。
②IP擁有方:擁有離線加密編程器的知識產(chǎn)權(quán)方。
③客戶:離線加密編程器的使用者,需向IP擁有方購買離線加密編程器的各種軟硬件資源。
2.2 三方關(guān)系
開發(fā)方負(fù)責(zé)開發(fā)離線加密編程器的各種軟硬件,然后向IP擁有方提供各種所需的軟硬件資源,包括編程器硬件、上位機(jī)軟件,并且根據(jù)IP擁有方的要求編寫目標(biāo)板的程序。IP擁有方將軟硬件賣給客戶,客戶使用IP擁有方提供的與編程器相關(guān)的軟硬件對目標(biāo)板進(jìn)行編程操作。開發(fā)方提供給IP擁有方的適合目標(biāo)板的程序是未經(jīng)過加密的,IP擁有方通過上位機(jī)軟件,自由選擇加密參數(shù),對未經(jīng)過加密的程序進(jìn)行加密??蛻糍徺I到離線加密編程器后,可以選擇某一IP擁有方,并在選擇的IP擁有方處進(jìn)行注冊。購買授權(quán)下載次數(shù),通過客戶端軟件將加密編程器進(jìn)行授權(quán),此時,加密編程器具備了下載功能。客戶根據(jù)自己的要求向自己注冊過的IP擁有方提出目標(biāo)板軟件購買意向,IP擁有方將客戶要求告知開發(fā)方,開發(fā)方根據(jù)要求進(jìn)行軟件的編寫。軟件編寫成功后,開發(fā)方將軟件交給IP擁有方,IP擁有方將軟件進(jìn)行加密,并交給客戶,客戶通過客戶端軟件將加密過的程序存儲到加密編程器。此時,客戶手中的加密編程器可以脫離PC機(jī)。客戶將編程器帶到現(xiàn)場對目標(biāo)板進(jìn)行編程,直到授權(quán)下載次數(shù)用完為止。授權(quán)次數(shù)使用完畢后,客戶可以通過客戶端軟件提取加密編程器的授權(quán)購買請求文件,通過網(wǎng)絡(luò)將文件傳給IP擁有方,IP擁有方根據(jù)文件的內(nèi)容進(jìn)行相應(yīng)的授權(quán)操作,然后將生成的授權(quán)文件通過網(wǎng)絡(luò)回傳給客戶,客戶通過客戶端軟件將授權(quán)文件下載到加密編程器,如果授權(quán)成功,那么編程器可以繼續(xù)使用。
2.3 文件類型
整個工作過程涉及以下幾種文件:
①加密下載文件:該文件是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)行編程時,為了防止通過抓取SPI接口的時序來得到有效的編程數(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總線上的時序,也不能使用。目標(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所示。
評論