国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

離線加密編程器中的 BootLoader程序設計

發(fā)布時間:2010-5-31 19:06    發(fā)布者:李寬
關鍵詞: bootloader , 加密
引言

離線加密編程器是一種獨立于PC機,并通過SPI接口直接對ATmega系列單片機進行編程操作的設備。在整個系統中,編程器與目標板之間的結合部分是一個最可能被解密的地方,因為可以通過抓取SPI總線上的時序得到所傳輸的數據,因此編程器與目標板之間傳輸的數據必須是經過加密的。而有效的編程數據不能為加密數據,所以加密數據需要經過解密還原才能用于單片機的編程。本設計中BootLoader程序的作用就是接收離線加密編程器的加密數據,對加密數據進行解密,然后完成目標板的編程操作。首先編程目標板單片機的BootLoaoler引導程序,最后與BootLoacler程序建立連接。編程器將加密數據傳送給。BootLoader程序,由BootLoacler程序對加密數據進行解密,然后完成編程操作。這樣做既可以確保數據不被外界破解,又能方便程序的升級操作。BootLoader程序的下載對具有知識產權保護要求的離線編程器設計是一個關鍵步驟,它的成功與否直接決定離線編程器設計能否成功。本文將以ATmegal69為例進行BootLoader程序下載的介紹。

1 系統硬件設計

本系統主要由單片機、顯示部分、按鍵開關、存儲部分和串行通信部分等組成,硬件結構框圖如圖1所示。



圖1中,AVR ATmegal69P(V)單片機是一種高性能、低功耗的8位微處理器,采用先進的RISC結構,130條指令大多數可以在1個時鐘周期內完成,滿足了本系統對執(zhí)行速度的要求。它具有非易失性的程序和數據存儲器,16 KB的系統內可編程Flash,具有4×25段的LCD驅動器的ATmegal69P(V),輸入電壓3.3 V,串行US—ART,可工作于主機/從機模式的SPI串行接口;存儲部分采用ATmel公司8個引腳的串口存儲芯片AT45DB041B,主存容量大小為528 KB,一共2 048頁,每頁264B,具有2個大小為265B的數據緩存,允許通知對存儲芯片進行讀寫,工作電壓為3.3 V。由于系統單片機的SPI通信口用來對目標板進行編程,所以采用軟件模擬SPI對AT45DB041B進行讀寫;其通信部分分為與PC機的通信和與目標板的通信。與PC機的通信采用USB接口,編程器內部采用UART—USB轉換橋芯片PL一2303,在編程方式上等同于一個普通的UART接口,非常方便;與目標板的通信是通過高速的SPI接口,達到對目標板的編程操作;采用雙鍵制按鍵開關,其中按鍵之一用來查詢下載器的各種信息,另外一個按鍵用來啟動對目標板的下載操作;為了充分利用ATmegal69P(V)具有LCD驅動器的特點,采用段式LCD屏,可以縮小下載器的體積,操作方便。



2 工作原理

2.1 幾個概念

    ①開發(fā)方:設計IP的開發(fā)單位或個人。
    ②IP擁有方:擁有離線加密編程器的知識產權方。
    ③客戶:離線加密編程器的使用者,需向IP擁有方購買離線加密編程器的各種軟硬件資源。

2.2 三方關系

開發(fā)方負責開發(fā)離線加密編程器的各種軟硬件,然后向IP擁有方提供各種所需的軟硬件資源,包括編程器硬件、上位機軟件,并且根據IP擁有方的要求編寫目標板的程序。IP擁有方將軟硬件賣給客戶,客戶使用IP擁有方提供的與編程器相關的軟硬件對目標板進行編程操作。開發(fā)方提供給IP擁有方的適合目標板的程序是未經過加密的,IP擁有方通過上位機軟件,自由選擇加密參數,對未經過加密的程序進行加密。客戶購買到離線加密編程器后,可以選擇某一IP擁有方,并在選擇的IP擁有方處進行注冊。購買授權下載次數,通過客戶端軟件將加密編程器進行授權,此時,加密編程器具備了下載功能。客戶根據自己的要求向自己注冊過的IP擁有方提出目標板軟件購買意向,IP擁有方將客戶要求告知開發(fā)方,開發(fā)方根據要求進行軟件的編寫。軟件編寫成功后,開發(fā)方將軟件交給IP擁有方,IP擁有方將軟件進行加密,并交給客戶,客戶通過客戶端軟件將加密過的程序存儲到加密編程器。此時,客戶手中的加密編程器可以脫離PC機。客戶將編程器帶到現場對目標板進行編程,直到授權下載次數用完為止。授權次數使用完畢后,客戶可以通過客戶端軟件提取加密編程器的授權購買請求文件,通過網絡將文件傳給IP擁有方,IP擁有方根據文件的內容進行相應的授權操作,然后將生成的授權文件通過網絡回傳給客戶,客戶通過客戶端軟件將授權文件下載到加密編程器,如果授權成功,那么編程器可以繼續(xù)使用。

2.3 文件類型

整個工作過程涉及以下幾種文件:

    ①加密下載文件:該文件是HEX文件經過加密后得到的文件,其中包含密鑰信息和編程數據。
    ②注冊申請文件:該文件包含申請注冊所需編程器的內部信息及客戶信息。
    ③注冊文件:該文件是在注冊申請文件的基礎上,IP擁有方添加注冊信息,包括各種參數。
    ④授權申請文件:該文件用來向IP擁有方購買授權下載次數,內容包括編程器信息、客戶信息,以及交易達成的各種協議。
    ⑤授權文件:該文件在授權申請文件的基礎上添加授權次數及說明。
    注:其中注冊申請文件、授權申請文件是通過客戶端軟件從編程器中提取的;注冊文件、授權文件通過客戶端軟件下載到編程器。

3 編程器工作流程

編程器的工作流程如圖2所示。下載到編程器的加密數據需要存入具有SPI接口的大容量外存AT45DB041B 中,然而Atmegal69P(V)的SPI接口需要用來對目標板進行編程,所以只能采用軟件模擬SPI接口來對AT45DB041B進行讀寫操作。對目標板進行編程時,為了防止通過抓取SPI接口的時序來得到有效的編程數據,首先編程目標板的引導程序,然后對目標板下載加密數據,通過引導程序對數據進行解密后再進行目標板的編程操作。這樣做的好處是,通過數據加密,使得SPI總線上傳輸的數據均為加密信息,即使得到SPI總線上的時序,也不能使用。目標板的BootLoader程序將接收到的加密數據進行解密,然后將數據存儲。這些操作都在單片機內部進行,不會被破解。

3.1 主程序

主程序要完成系統的初始化、中斷設置、全局變量設置等。在初始化結束后,系統進入主查詢循環(huán)過程以判斷當前進行的操作,并進入相應的功能模塊。系統主程序流程如圖3所示。



3.2 編程器與目標板的通信

編程器通過SPI總線與目標板建立連接。當進行目標板的編程時,首先編程目標板的 BootLoader區(qū)引導程序。引導區(qū)程序編程完畢后,編程器與目標板進行通信,將加密數據傳送給目標板。目標板的BootLoader程序接收到加密數據后進行CRC校驗。如果校驗失敗,Boot—Loader要求編程器重新發(fā)送數據;如果校驗通過,對加密數據進行解密,然后寫入Flash。編程器與目標板通信流程如圖4所示。



4 BootLoader編程設計

4.1 BootLoader。介紹

BootLoader區(qū)位于單片機內部Flash的最高地址,BootLoader存儲器空間的大小可以通過熔絲位進行配置。BootLoader為通過 MCU本身來下載和上載程序代碼提供了一個真正的同時讀一寫自編程機制(Read—While—Write,RWW)。這一特點使得系統可以在MCU的控制下,通過駐留于程序Flash的BootLoader,靈活地進行應用軟件升級。BootLoader可以使用任何器件具有的數據接口和相關的協議獲得代碼并把代碼(程序)寫入閃存,或者是從程序存儲器讀取代碼。BootLoader區(qū)的程序可以操作整個閃存,包括BootLoader區(qū),因而 BootLoader可以對其自身進行修改,甚至將自己擦除。如果系統已經不再需要BootLoader,則可以通過指令控制BootLoader程序,將BootLoader區(qū)擦除。

4.2 BootLoader區(qū)程序的設計思想

由于目標板上AVR單片機種類的不同,所包含的頭文件也不盡相同,而且BootLoader區(qū)的大小也是根據目標板的不同而不同,所以存儲芯片中 BootLoader程序代碼要滿足當前主流的AVR單片機的需求。另外由于存儲芯片容量大小的限制,要求引導程序要短小精煉。

編程BootLoader區(qū)的一個重要的內容是熔絲位的編程,熔絲位編程出錯可能導致編程的失敗。寫SPIEN為“1”,導致編程器與目標板無法建立連接;寫RSTDISBL為“O”,將導致復位引腳失效;寫CKSEL熔絲位出錯,將導致內外部晶振的選擇混亂,從而導致編程失敗。

BootLoader程序編程步驟:

    ①配置BOOTSZl和B00TSZ0熔絲位,設定Boot—Loader區(qū)的大小:



    ②配置BOOTRST熔絲位,芯片上電啟動的設定從BootLoader區(qū)的起始地址處開始,即每次上電復位后,首先從BootLoader區(qū)起始位置開始運行。

    ③下載BootLoader程序的HEX文件。下載時要注意BootLoader區(qū)的起始位置。

    ④設置的Boot鎖定位,保護BootLoader不被破壞,使其只能通過芯片擦除命令清除BootLoader區(qū)的程序。

5 BootLoader程序的下載

編程器外存中存儲適合各種型號AVR單片機的BootLoader源代碼。在下載BootLoader程序之前,首先在編程器外存中找到適合目標板單片機型號的Boot—Loader程序,然后下載到目標板。主要設計問題是數據的傳輸、熔絲位和鎖定位的編程、Flash的讀寫。

5.1 實 例

本設計采用串行編程模式,串行接口包括RESET、SCK、MOSI(輸入)及MISO(輸出)四條線。當RESET為低電平時,可以通過串行 SPI總線對Flash進行編程,應在執(zhí)行編程或擦除操作之前執(zhí)行編程使能指令。下面以ATmegal69為例,給出一個實際的程序。



首先對SPI接口進行初始化SPI_MasterInit(),并使能操作SPI_Enable(),然后擦除Flash頁SPI_Erase(),進行 Flash的頁寫操作program_bootloader(),再寫熔絲位SPI_WriteFuse和寫鎖定位SPI_WriteLock,最后進行復位操作SPI_Over()。

5.2 串行編程應遵循的步驟

①上電過程:在RESET及SCK為0時,向VCC及GND供電。在一些系統中,編程器不能保證在上電時SCK保持為低。在這種情況下,SCK拉低之后應在RESET加一正脈沖,而且這個脈沖至少要維持2個CPU時鐘周期。

②上電之后等待至少20 ms,然后向MOSI引腳輸入串行編程使能指令以使能串行編程。

③通信不同步將造成串行編程失敗。同步之后,在發(fā)送編程使能指令的第3個字節(jié)時,第2個字節(jié)的內容(0x53)將被反饋回來。不論反饋的內容正確與否,指令的4個字節(jié)必須全部傳輸。如果0x53未被反饋,則需要向RESET提供一個正脈沖以開始新的編程使能指令。

④Flash的編程以一次一頁的方式進行。頁的大小為128字節(jié)。在執(zhí)行加載程序存儲頁指令時,通過6位的地址信息,數據以字節(jié)為單位加載到存儲頁。為保證加載的正確性,應先向給定地址傳送數據低字節(jié),之后是高字節(jié)。程序存儲頁通過地址的高8位以及寫程序存儲器頁指令獲得數據。如果不使用查詢的方式,那么在操作下一頁數據之前應等待至少4.5 ms。在Flash寫操作完成之前訪問串行編程接口,會導致編程錯誤。

⑤可通過讀指令來校驗任何一個存儲單元的內容。數據從串行輸出口MISO輸出。

⑥編程結束后可以將RESET拉高,開始正常操作。

⑦下電序列:將RESET置“1”。

結語

在一般的開發(fā)過程中,每次進行程序的調試和更新都要將產品與PC機直連,進行在線操作,這樣就限制了程序調試和更新的場所。離線加密編程器的設計避免了這種場所的限制。編程器只有普通的火柴盒大小,功能完善且攜帶方便,這樣可以將已編寫好的程序存儲在編程器中,然后將編程器帶到所需場所(特別是在惡劣的工業(yè)現場和野外)對產品進行再編程。本設計采用 BootLoader引導區(qū)程序進行數據的解密和編程操作,既達到了對知識產權進行保護的目的,又方便了程序的調試和更新。

參考文獻

   1. 沈文.Eagle lee.詹衛(wèi)前 AVR 單片機C語言開發(fā)入門指導 2005
   2. 陳冬云.杜敬倉.任柯燕 ATmega128 單片機原理與開發(fā)指導 2006
   3. 曹國華.高藝.姜濤 高速嵌入式單片機原理與接口技術 2004
   4. Atmega169 datasheet

作者:中國海洋大學 綦聲波  馬秀明
來源:單片機與嵌入式系統應用  2008 (10)
本文地址:http://m.qingdxww.cn/thread-11771-1-1.html     【打印本頁】

本站部分文章為轉載或網友發(fā)布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
hotpower 發(fā)表于 2010-6-1 06:07:39
菜農非常關心和研究此類事宜~~~

這歸結為FLASH的ISP+IAP問題。

實際保密應該由BootLoader的ISP和“加密”后的程序的IAP這兩個環(huán)節(jié)構成。

重點是破解前者,那么后者不攻自破。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區(qū)
  • dsPIC® DSC:攻克各種觸摸傳感挑戰(zhàn)的電容式觸摸解決方案
  • 探索PIC16F13145 MCU系列——快速概覽
  • 實時控制解決方案的正確選擇——數字信號控制器(DSC)或通用MCU
  • dsPIC® DSC集成電機驅動器:非常適合在緊湊空間內進行實時控制
  • 貿澤電子(Mouser)專區(qū)

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本特黄的免费大片视频| 欧美日韩永久久一区二区三区| 亚洲jizzjizz| 一级美女黄色片| 日本a∨网站| 性色生活片免费放| 婷婷在线成人免费观看搜索| 欧洲a视频| 亚洲国产日韩精品怡红院| 手机看片日本| 四虎影视免费永久在线观看黄| 色一级片| 亚洲va老文色欧美黄大片人人| 欧美成视频无需播放器| 一级黄色片在线播放| 热久久中文字幕| 羞羞的影院| 日韩欧美亚洲国产高清在线| 亚洲国产日韩在线| 亚州在线播放| 四虎影视永久免费| 色成人综合| 日韩理论片在线观看| 一级片免费在线播放| 亚洲成a人在线播放www| 四虎在线网址| 夜夜骑夜夜操| 视色4setv.com| 亚a在线| 四虎影视永久在线观看| 欧美一区二区三区精品国产| 亚洲天堂最新网址| 婷婷 色天使| 夜月tv| 亚洲国产精品成| 日本黄色片免费观看| 性做久久久久久蜜桃花| 香蕉社区| 四虎成人免费| 欧美性久久久久| 一级毛片成人免费看免费不卡|