當(dāng)前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]介紹了針對AVR系列ATmega單片機的離線加密編程器技術(shù),并對引導(dǎo)區(qū)程序編程部分進行了較為詳細(xì)的討論。通過實驗表明,編程目標(biāo)板的BootLoacler區(qū)引導(dǎo)程序可以方便地對程序進行調(diào)試、更新,并對知識產(chǎn)權(quán)進行有效保護。

引 言
    離線加密編程器是一種獨立于PC機,并通過SPI接口直接對ATmega系列單片機進行編程操作的設(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)過解密還原才能用于單片機的編程。本設(shè)計中BootLoader程序的作用就是接收離線加密編程器的加密數(shù)據(jù),對加密數(shù)據(jù)進行解密,然后完成目標(biāo)板的編程操作。首先編程目標(biāo)板單片機的BootLoaoler引導(dǎo)程序,最后與BootLoacler程序建立連接。編程器將加密數(shù)據(jù)傳送給。BootLoader程序,由BootLoacler程序?qū)用軘?shù)據(jù)進行解密,然后完成編程操作。這樣做既可以確保數(shù)據(jù)不被外界破解,又能方便程序的升級操作。BootLoader程序的下載對具有知識產(chǎn)權(quán)保護要求的離線編程器設(shè)計是一個關(guān)鍵步驟,它的成功與否直接決定離線編程器設(shè)計能否成功。本文將以ATmegal69為例進行BootLoader程序下載的介紹。


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

    圖1中,AVR ATmegal69P(V)單片機是一種高性能、低功耗的8位微處理器,采用先進的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,可工作于主機/從機模式的SPI串行接口;存儲部分采用ATmel公司8個引腳的串口存儲芯片AT45DB041B,主存容量大小為528 KB,一共2 048頁,每頁264B,具有2個大小為265B的數(shù)據(jù)緩存,允許通知對存儲芯片進行讀寫,工作電壓為3.3 V。由于系統(tǒng)單片機的SPI通信口用來對目標(biāo)板進行編程,所以采用軟件模擬SPI對AT45DB041B進行讀寫;其通信部分分為與PC機的通信和與目標(biāo)板的通信。與PC機的通信采用USB接口,編程器內(nèi)部采用UART—USB轉(zhuǎn)換橋芯片PL一2303,在編程方式上等同于一個普通的UART接口,非常方便;與目標(biāo)板的通信是通過高速的SPI接口,達(dá)到對目標(biāo)板的編程操作;采用雙鍵制按鍵開關(guān),其中按鍵之一用來查詢下載器的各種信息,另外一個按鍵用來啟動對目標(biāo)板的下載操作;為了充分利用ATmegal69P(V)具有LCD驅(qū)動器的特點,采用段式LCD屏,可以縮小下載器的體積,操作方便。

2 工作原理
2.1 幾個概念

    ①開發(fā)方:設(shè)計IP的開發(fā)單位或個人。
    ②IP擁有方:擁有離線加密編程器的知識產(chǎn)權(quán)方。
    ③客戶:離線加密編程器的使用者,需向IP擁有方購買離線加密編程器的各種軟硬件資源。
2.2 三方關(guān)系
    開發(fā)方負(fù)責(zé)開發(fā)離線加密編程器的各種軟硬件,然后向IP擁有方提供各種所需的軟硬件資源,包括編程器硬件、上位機軟件,并且根據(jù)IP擁有方的要求編寫目標(biāo)板的程序。IP擁有方將軟硬件賣給客戶,客戶使用IP擁有方提供的與編程器相關(guān)的軟硬件對目標(biāo)板進行編程操作。開發(fā)方提供給IP擁有方的適合目標(biāo)板的程序是未經(jīng)過加密的,IP擁有方通過上位機軟件,自由選擇加密參數(shù),對未經(jīng)過加密的程序進行加密??蛻糍徺I到離線加密編程器后,可以選擇某一IP擁有方,并在選擇的IP擁有方處進行注冊。購買授權(quán)下載次數(shù),通過客戶端軟件將加密編程器進行授權(quán),此時,加密編程器具備了下載功能。客戶根據(jù)自己的要求向自己注冊過的IP擁有方提出目標(biāo)板軟件購買意向,IP擁有方將客戶要求告知開發(fā)方,開發(fā)方根據(jù)要求進行軟件的編寫。軟件編寫成功后,開發(fā)方將軟件交給IP擁有方,IP擁有方將軟件進行加密,并交給客戶,客戶通過客戶端軟件將加密過的程序存儲到加密編程器。此時,客戶手中的加密編程器可以脫離PC機??蛻魧⒕幊唐鲙У浆F(xiàn)場對目標(biāo)板進行編程,直到授權(quán)下載次數(shù)用完為止。授權(quán)次數(shù)使用完畢后,客戶可以通過客戶端軟件提取加密編程器的授權(quán)購買請求文件,通過網(wǎng)絡(luò)將文件傳給IP擁有方,IP擁有方根據(jù)文件的內(nèi)容進行相應(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)板進行編程,所以只能采用軟件模擬SPI接口來對AT45DB041B進行讀寫操作。對目標(biāo)板進行編程時,為了防止通過抓取SPI接口的時序來得到有效的編程數(shù)據(jù),首先編程目標(biāo)板的引導(dǎo)程序,然后對目標(biāo)板下載加密數(shù)據(jù),通過引導(dǎo)程序?qū)?shù)據(jù)進行解密后再進行目標(biāo)板的編程操作。這樣做的好處是,通過數(shù)據(jù)加密,使得SPI總線上傳輸?shù)臄?shù)據(jù)均為加密信息,即使得到SPI總線上的時序,也不能使用。目標(biāo)板的BootLoader程序?qū)⒔邮盏降募用軘?shù)據(jù)進行解密,然后將數(shù)據(jù)存儲。這些操作都在單片機內(nèi)部進行,不會被破解。

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

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

4 BootLoader編程設(shè)計
4.1 BootLoader。介紹

    BootLoader區(qū)位于單片機內(nèi)部Flash的最高地址,BootLoader存儲器空間的大小可以通過熔絲位進行配置。BootLoader為通過MCU本身來下載和上載程序代碼提供了一個真正的同時讀一寫自編程機制(Read—While—Write,RWW)。這一特點使得系統(tǒng)可以在MCU的控制下,通過駐留于程序Flash的BootLoader,靈活地進行應(yīng)用軟件升級。BootLoader可以使用任何器件具有的數(shù)據(jù)接口和相關(guān)的協(xié)議獲得代碼并把代碼(程序)寫入閃存,或者是從程序存儲器讀取代碼。BootLoader區(qū)的程序可以操作整個閃存,包括BootLoader區(qū),因而BootLoader可以對其自身進行修改,甚至將自己擦除。如果系統(tǒng)已經(jīng)不再需要BootLoader,則可以通過指令控制BootLoader程序,將BootLoader區(qū)擦除。
4.2 BootLoader區(qū)程序的設(shè)計思想
    由于目標(biāo)板上AVR單片機種類的不同,所包含的頭文件也不盡相同,而且BootLoader區(qū)的大小也是根據(jù)目標(biāo)板的不同而不同,所以存儲芯片中BootLoader程序代碼要滿足當(dāng)前主流的AVR單片機的需求。另外由于存儲芯片容量大小的限制,要求引導(dǎo)程序要短小精煉。
    編程BootLoader區(qū)的一個重要的內(nèi)容是熔絲位的編程,熔絲位編程出錯可能導(dǎo)致編程的失敗。寫SPIEN為“1”,導(dǎo)致編程器與目標(biāo)板無法建立連接;寫RSTDISBL為“O”,將導(dǎo)致復(fù)位引腳失效;寫CKSEL熔絲位出錯,將導(dǎo)致內(nèi)外部晶振的選擇混亂,從而導(dǎo)致編程失敗。
    BootLoader程序編程步驟:
    ①配置BOOTSZl和B00TSZ0熔絲位,設(shè)定Boot—Loader區(qū)的大?。?/p>

    ②配置BOOTRST熔絲位,芯片上電啟動的設(shè)定從BootLoader區(qū)的起始地址處開始,即每次上電復(fù)位后,首先從BootLoader區(qū)起始位置開始運行。
    ③下載BootLoader程序的HEX文件。下載時要注意BootLoader區(qū)的起始位置。
    ④設(shè)置的Boot鎖定位,保護BootLoader不被破壞,使其只能通過芯片擦除命令清除BootLoader區(qū)的程序。


5 BootLoader程序的下載

    編程器外存中存儲適合各種型號AVR單片機的BootLoader源代碼。在下載BootLoader程序之前,首先在編程器外存中找到適合目標(biāo)板單片機型號的Boot—Loader程序,然后下載到目標(biāo)板。主要設(shè)計問題是數(shù)據(jù)的傳輸、熔絲位和鎖定位的編程、Flash的讀寫。
5.1 實 例
   
本設(shè)計采用串行編程模式,串行接口包括RESET、SCK、MOSI(輸入)及MISO(輸出)四條線。當(dāng)RESET為低電平時,可以通過串行SPI總線對Flash進行編程,應(yīng)在執(zhí)行編程或擦除操作之前執(zhí)行編程使能指令。下面以ATmegal69為例,給出一個實際的程序。


    首先對SPI接口進行初始化SPI_MasterInit(),并使能操作SPI_Enable(),然后擦除Flash頁SPI_Erase(),進行Flash的頁寫操作program_bootloader(),再寫熔絲位SPI_WriteFuse和寫鎖定位SPI_WriteLock,最后進行復(fù)位操作SPI_Over()。
5.2 串行編程應(yīng)遵循的步驟
    ①上電過程:在RESET及SCK為0時,向VCC及GND供電。在一些系統(tǒng)中,編程器不能保證在上電時SCK保持為低。在這種情況下,SCK拉低之后應(yīng)在RESET加一正脈沖,而且這個脈沖至少要維持2個CPU時鐘周期。
    ②上電之后等待至少20 ms,然后向MOSI引腳輸入串行編程使能指令以使能串行編程。
    ③通信不同步將造成串行編程失敗。同步之后,在發(fā)送編程使能指令的第3個字節(jié)時,第2個字節(jié)的內(nèi)容(0x53)將被反饋回來。不論反饋的內(nèi)容正確與否,指令的4個字節(jié)必須全部傳輸。如果0x53未被反饋,則需要向RESET提供一個正脈沖以開始新的編程使能指令。
    ④Flash的編程以一次一頁的方式進行。頁的大小為128字節(jié)。在執(zhí)行加載程序存儲頁指令時,通過6位的地址信息,數(shù)據(jù)以字節(jié)為單位加載到存儲頁。為保證加載的正確性,應(yīng)先向給定地址傳送數(shù)據(jù)低字節(jié),之后是高字節(jié)。程序存儲頁通過地址的高8位以及寫程序存儲器頁指令獲得數(shù)據(jù)。如果不使用查詢的方式,那么在操作下一頁數(shù)據(jù)之前應(yīng)等待至少4.5 ms。在Flash寫操作完成之前訪問串行編程接口,會導(dǎo)致編程錯誤。
    ⑤可通過讀指令來校驗任何一個存儲單元的內(nèi)容。數(shù)據(jù)從串行輸出口MISO輸出。
    ⑥編程結(jié)束后可以將RESET拉高,開始正常操作。
    ⑦下電序列:將RESET置“1”。

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

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉