<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 離線(xiàn)加密編程器中的BootLoader程序設(shè)計(jì)

          離線(xiàn)加密編程器中的BootLoader程序設(shè)計(jì)

          作者: 時(shí)間:2011-01-19 來(lái)源:網(wǎng)絡(luò) 收藏

          引言

          離線(xiàn)加密編程器是一種獨(dú)立于PC機(jī),并通過(guò)SPI接口直接對(duì)ATmega系列單片機(jī)進(jìn)行編程操作的設(shè)備。在整個(gè)系統(tǒng)中,編程器與目標(biāo)板之間的結(jié)合部分是一個(gè)最可能被解密的地方,因?yàn)榭梢酝ㄟ^(guò)抓取SPI總線(xiàn)上的時(shí)序得到所傳輸?shù)臄?shù)據(jù),因此編程器與目標(biāo)板之間傳輸?shù)臄?shù)據(jù)必須是經(jīng)過(guò)加密的。而有效的編程數(shù)據(jù)不能為加密數(shù)據(jù),所以加密數(shù)據(jù)需要經(jīng)過(guò)解密還原才能用于單片機(jī)的編程。本設(shè)計(jì)中BootLoader程序的作用就是接收離線(xiàn)加密編程器的加密數(shù)據(jù),對(duì)加密數(shù)據(jù)進(jìn)行解密,然后完成目標(biāo)板的編程操作。首先編程目標(biāo)板單片機(jī)的BootLoaoler引導(dǎo)程序,最后與BootLoacler程序建立連接。編程器將加密數(shù)據(jù)傳送給。BootLoader程序,由BootLoacler程序?qū)用軘?shù)據(jù)進(jìn)行解密,然后完成編程操作。這樣做既可以確保數(shù)據(jù)不被外界破解,又能方便程序的升級(jí)操作。BootLoader程序的下載對(duì)具有知識(shí)產(chǎn)權(quán)保護(hù)要求的離線(xiàn)編程器設(shè)計(jì)是一個(gè)關(guān)鍵步驟,它的成功與否直接決定離線(xiàn)編程器設(shè)計(jì)能否成功。本文將以ATmegal69為例進(jìn)行BootLoader程序下載的介紹。

          1 系統(tǒng)硬件設(shè)計(jì)

          本系統(tǒng)主要由單片機(jī)、顯示部分、按鍵開(kāi)關(guān)、存儲(chǔ)部分和串行通信部分等組成,硬件結(jié)構(gòu)框圖如圖1所示。

          本文引用地址:http://www.ex-cimer.com/article/151069.htm

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

          2.gif



          2 工作原理

          2.1 幾個(gè)概念

          ①開(kāi)發(fā)方:設(shè)計(jì)IP的開(kāi)發(fā)單位或個(gè)人。
          ②IP擁有方:擁有離線(xiàn)加密編程器的知識(shí)產(chǎn)權(quán)方。
          ③客戶(hù):離線(xiàn)加密編程器的使用者,需向IP擁有方購(gòu)買(mǎi)離線(xiàn)加密編程器的各種軟硬件資源。

          2.2 三方關(guān)系

          開(kāi)發(fā)方負(fù)責(zé)開(kāi)發(fā)離線(xiàn)加密編程器的各種軟硬件,然后向IP擁有方提供各種所需的軟硬件資源,包括編程器硬件、上位機(jī)軟件,并且根據(jù)IP擁有方的要求編寫(xiě)目標(biāo)板的程序。IP擁有方將軟硬件賣(mài)給客戶(hù),客戶(hù)使用IP擁有方提供的與編程器相關(guān)的軟硬件對(duì)目標(biāo)板進(jìn)行編程操作。開(kāi)發(fā)方提供給IP擁有方的適合目標(biāo)板的程序是未經(jīng)過(guò)加密的,IP擁有方通過(guò)上位機(jī)軟件,自由選擇加密參數(shù),對(duì)未經(jīng)過(guò)加密的程序進(jìn)行加密。客戶(hù)購(gòu)買(mǎi)到離線(xiàn)加密編程器后,可以選擇某一IP擁有方,并在選擇的IP擁有方處進(jìn)行注冊(cè)。購(gòu)買(mǎi)授權(quán)下載次數(shù),通過(guò)客戶(hù)端軟件將加密編程器進(jìn)行授權(quán),此時(shí),加密編程器具備了下載功能??蛻?hù)根據(jù)自己的要求向自己注冊(cè)過(guò)的IP擁有方提出目標(biāo)板軟件購(gòu)買(mǎi)意向,IP擁有方將客戶(hù)要求告知開(kāi)發(fā)方,開(kāi)發(fā)方根據(jù)要求進(jìn)行軟件的編寫(xiě)。軟件編寫(xiě)成功后,開(kāi)發(fā)方將軟件交給IP擁有方,IP擁有方將軟件進(jìn)行加密,并交給客戶(hù),客戶(hù)通過(guò)客戶(hù)端軟件將加密過(guò)的程序存儲(chǔ)到加密編程器。此時(shí),客戶(hù)手中的加密編程器可以脫離PC機(jī)??蛻?hù)將編程器帶到現(xiàn)場(chǎng)對(duì)目標(biāo)板進(jìn)行編程,直到授權(quán)下載次數(shù)用完為止。授權(quán)次數(shù)使用完畢后,客戶(hù)可以通過(guò)客戶(hù)端軟件提取加密編程器的授權(quán)購(gòu)買(mǎi)請(qǐng)求文件,通過(guò)網(wǎng)絡(luò)將文件傳給IP擁有方,IP擁有方根據(jù)文件的內(nèi)容進(jìn)行相應(yīng)的授權(quán)操作,然后將生成的授權(quán)文件通過(guò)網(wǎng)絡(luò)回傳給客戶(hù),客戶(hù)通過(guò)客戶(hù)端軟件將授權(quán)文件下載到加密編程器,如果授權(quán)成功,那么編程器可以繼續(xù)使用。


          上一頁(yè) 1 2 3 下一頁(yè)

          關(guān)鍵詞:

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();