《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 業(yè)界動(dòng)態(tài) > ATMEGA128單片機(jī)的軟件遠(yuǎn)程升級(jí)

ATMEGA128單片機(jī)的軟件遠(yuǎn)程升級(jí)

2008-08-06
作者:田日才, 王國(guó)鵬, 梁學(xué)東

  摘? 要: 介紹了ATMEGA128單片機(jī)應(yīng)用中的在線編程方法。給出了軟件IAP升級(jí)設(shè)計(jì)中應(yīng)注意的一些關(guān)鍵技術(shù),結(jié)合某市地鐵調(diào)度系統(tǒng)對(duì)IAP升級(jí)的可靠性和保密性等問(wèn)題進(jìn)行了簡(jiǎn)單的論述。

  關(guān)鍵詞: IAP? Flash存儲(chǔ)器? bootloader? 遠(yuǎn)程升級(jí)? 在線升級(jí)

?

  閃速程序存儲(chǔ)器的編程方法常見(jiàn)的有以下幾種:

  (1)傳統(tǒng)的并行編程方法;

  (2)通過(guò)串行口進(jìn)行在線編程ISP(In System Programmability):對(duì)器件或電路甚至整個(gè)系統(tǒng)進(jìn)行現(xiàn)場(chǎng)升級(jí)或功能重構(gòu);

  (3)在運(yùn)行中,應(yīng)用程序" title="應(yīng)用程序">應(yīng)用程序控制下的應(yīng)用在線編程IAP(In Application Programming);IAP模式簡(jiǎn)單地說(shuō)就是在某一個(gè)section中運(yùn)行程序,同時(shí)對(duì)另一個(gè)section進(jìn)行擦除、讀取、寫(xiě)入等操作。

  ISP方式相對(duì)于傳統(tǒng)方式有了極大的進(jìn)步,它不需要將芯片從電路板上卸下就可對(duì)芯片進(jìn)行編程,減少了開(kāi)發(fā)時(shí)間,簡(jiǎn)化了產(chǎn)品制造流程,并大大降低了現(xiàn)場(chǎng)升級(jí)的困難。而IAP方式是對(duì)芯片的編程處于應(yīng)用程序控制之下,對(duì)芯片的編程融入在通信系統(tǒng)當(dāng)中,通過(guò)INTERNET網(wǎng)絡(luò)來(lái)升級(jí)指定目標(biāo)芯片的軟件。

  隨著芯片技術(shù)的高速發(fā)展,各廠家相繼推出了自己的支持ISP/IAP編程模式的芯片,如美國(guó)ATMEL公司的ATMEGA128、ATMEGA169,Silicon Storage Technology公司的SST89C54/58j等。其中美國(guó)ATMEL公司推出的ATMEGA128是基于AVR RISC的低功耗8位單片機(jī),最高工作頻率可達(dá)16MHz,具有128KB FLASH內(nèi)部存儲(chǔ)應(yīng)用器、4KB EEPROM和SRAM數(shù)據(jù)存儲(chǔ)空間,最大可達(dá)4096字節(jié)的獨(dú)立加密位的可選bootloader程序代碼區(qū),以及相應(yīng)的專門(mén)用來(lái)支持(IAP)操作的操作控制寄存器" title="控制寄存器">控制寄存器SPMCR。近年來(lái)該型單片機(jī)以其優(yōu)良而穩(wěn)定的性能廣泛應(yīng)用于各種電子產(chǎn)品中。

1 利用ATMEGA128構(gòu)成的遠(yuǎn)程升級(jí)系統(tǒng)

1.1系統(tǒng)組成

  圖1給出了某城市地鐵調(diào)度指揮系統(tǒng)的網(wǎng)絡(luò)結(jié)構(gòu)。該系統(tǒng)的網(wǎng)絡(luò)通信采用輪詢方式。

?

  該系統(tǒng)主要設(shè)備包括若干個(gè)基臺(tái)站、主控單元、基站控制中心、語(yǔ)音交換單元。

  各設(shè)備的主要功能為:基站臺(tái)用來(lái)接收車(chē)載臺(tái)的數(shù)字信令和語(yǔ)音信號(hào);主控單元協(xié)調(diào)各子節(jié)點(diǎn)動(dòng)作并監(jiān)視各子節(jié)點(diǎn)狀態(tài);基站控制中心既是主控單元的子節(jié)點(diǎn)又是各基站臺(tái)的主節(jié)點(diǎn),輔助主控單元完成對(duì)各基站臺(tái)的控制,協(xié)調(diào)各基站臺(tái)動(dòng)作,搜集各基站臺(tái)傳來(lái)的消息和監(jiān)視各基站臺(tái)狀態(tài);PCM交換單元在主控單元控制下完成語(yǔ)音交換功能。

1.2 系統(tǒng)軟件IAP升級(jí)

  在不影響整個(gè)系統(tǒng)正常運(yùn)行情況下,為實(shí)現(xiàn)對(duì)系統(tǒng)某個(gè)節(jié)點(diǎn)的軟件升級(jí)" title="軟件升級(jí)">軟件升級(jí),可將要升級(jí)的程序代碼通過(guò)寫(xiě)碼軟件轉(zhuǎn)換為系統(tǒng)信令,以透明傳輸?shù)姆绞絺鬏?下載)到目標(biāo)節(jié)點(diǎn)。本系統(tǒng)的信令格式采用表1所示的代碼幀格式。其中幀傳輸控制字" title="控制字">控制字節(jié)為5字節(jié),操作控制字節(jié)為4字節(jié),代碼數(shù)據(jù)為32字節(jié)。

  為保證代碼傳輸?shù)臏?zhǔn)確性,本系統(tǒng)采用反饋比對(duì)的方式,以監(jiān)控終端" title="監(jiān)控終端">監(jiān)控終端向基臺(tái)站的代碼傳輸為例,代碼由監(jiān)控終端傳輸?shù)交_(tái)站,基臺(tái)站收到代碼后,再反饋回監(jiān)控終端。監(jiān)控終端將收到的代碼與發(fā)送的代碼作比較,比較結(jié)果一致時(shí)傳輸下一代碼幀,不一致時(shí)重復(fù)傳輸上一代碼幀。

  系統(tǒng)根據(jù)代碼幀的下載目標(biāo)地址,自動(dòng)尋址將代碼幀通過(guò)各級(jí)網(wǎng)絡(luò)節(jié)點(diǎn)下載到目標(biāo)節(jié)點(diǎn)。寫(xiě)入代碼的位置原則上可在系統(tǒng)中的任何一點(diǎn)進(jìn)行,但考慮到實(shí)際情況,本系統(tǒng)中只有兩個(gè)寫(xiě)入點(diǎn)(顯示終端和監(jiān)控終端),寫(xiě)入代碼時(shí)不影響系統(tǒng)的正常運(yùn)行。收到軟件升級(jí)消息的節(jié)點(diǎn)通過(guò)判斷代碼幀的控制字完成相應(yīng)的讀、寫(xiě)、擦除等操作,并且可 根據(jù)不同的需求配置不同的控制字實(shí)現(xiàn)遠(yuǎn)程終端對(duì)目標(biāo)節(jié)點(diǎn)的各種資源的監(jiān)控。

  例如要通過(guò)監(jiān)控終端升級(jí)基站1中ATMEGA128的軟件,則要在監(jiān)控終端中啟動(dòng)寫(xiě)碼軟件,將編譯完成的升級(jí)代碼按照表1所示的系統(tǒng)幀格式打包,依照代碼在程序存儲(chǔ)區(qū)的先后次序依次發(fā)出。從圖1中可看出要通過(guò)監(jiān)控終端升級(jí)基站1中的軟件,還要經(jīng)由兩個(gè)中間節(jié)點(diǎn):主控單元和基站控制中心,其時(shí)序流程如圖2所示。

?

?

  首先,監(jiān)控終端發(fā)出一代碼幀到主控單元,主控單元根據(jù)代碼幀中的下載目標(biāo)地址判斷應(yīng)傳送的下一節(jié)點(diǎn)——基站控制中心。當(dāng)主控單元輪詢到基站控制中心時(shí),將收到的代碼幀發(fā)送給基站控制中心。同樣,基站控制中心根據(jù)代碼幀中的下載目標(biāo)地址,將代碼幀下載并傳送到要升級(jí)的基站1的處理器ATMEGA128單片機(jī)中。單片機(jī)接收到代碼幀后首先將此代碼幀回傳給基站控制中心,然后將程序跳轉(zhuǎn),運(yùn)行bootloader程序區(qū)段。此時(shí)應(yīng)用程序區(qū)段處于忙狀態(tài),運(yùn)行bootloader程序區(qū)段的程序,根據(jù)代碼載入地址將程序代碼寫(xiě)入應(yīng)用程序存儲(chǔ)區(qū)的正確位置,并在bootloader程序區(qū)段繼續(xù)運(yùn)行,等待后續(xù)到達(dá)的代碼幀。而回傳的代碼幀同樣經(jīng)過(guò)兩級(jí)節(jié)點(diǎn)返回到監(jiān)控終端。監(jiān)控終端收到后與發(fā)送的代碼幀進(jìn)行比較,準(zhǔn)確無(wú)誤后方可傳送下一幀數(shù)據(jù),否則重發(fā)。

  圖3給出了代碼寫(xiě)入主程序流程圖。當(dāng)代碼幀下載到基站1的控制單片機(jī)ATMEGA128后,當(dāng)檢測(cè)到幀類型為升級(jí)代碼幀“Y”時(shí),觸發(fā)代碼升級(jí)程序,程序由應(yīng)用程序區(qū)段跳轉(zhuǎn)至bootloader程序區(qū)段。在此區(qū)段可以對(duì)應(yīng)用程序區(qū)段進(jìn)行讀、寫(xiě)等操作,同時(shí)接收通過(guò)USART串口不斷傳來(lái)的代碼幀。

?

  在代碼開(kāi)始寫(xiě)入前,首先將存于EEPROM中的寫(xiě)入操作開(kāi)始標(biāo)志位置位,然后判斷操作控制字以檢測(cè)是要進(jìn)行哪一種操作。若是進(jìn)行寫(xiě)入操作,則調(diào)用寫(xiě)入操作子程序。圖4給出了代碼寫(xiě)入子程序流程圖。首先將代碼寫(xiě)入緩沖區(qū),將要寫(xiě)入的程序代碼的頭兩個(gè)字節(jié)讀入專用于IAP操作的數(shù)據(jù)存儲(chǔ)寄存器R0:R1,同時(shí)Z寄存器指針的低8位指向代碼將要寫(xiě)到的指定緩沖區(qū)的位置。然后將SPMCR控制寄存器的SPMEN位置1,這樣這兩個(gè)字節(jié)的代碼就被寫(xiě)入到緩沖區(qū)中指定位置。寫(xiě)下兩個(gè)字節(jié)時(shí)將Z寄存器指針加2,重復(fù)上述操作;依次進(jìn)行直到將代碼幀中的代碼數(shù)據(jù)全部寫(xiě)入緩沖區(qū)。然后判斷寫(xiě)入緩沖區(qū)的代碼是否寫(xiě)滿(代碼計(jì)數(shù)器是否為128)。緩沖區(qū)寫(xiě)滿后要執(zhí)行頁(yè)擦除操作。執(zhí)行頁(yè)擦除每次可擦除1頁(yè)(128words),將要擦除的頁(yè)地址存入Z寄存器高8位,將SPMCR控制寄存器的SPMEN和PGERES位置1,擦除完畢后這兩位會(huì)被硬件清0。

?

  執(zhí)行頁(yè)寫(xiě)操作時(shí)每次只可寫(xiě)入1頁(yè),將Z寄存器指針指向要寫(xiě)入的應(yīng)用程序區(qū)段代碼頁(yè),將SPMCR控制寄存器的SPMEN和PGWRT位置1。當(dāng)寫(xiě)完后這兩位會(huì)被硬件清0同時(shí)頁(yè)緩沖區(qū)中內(nèi)容被清除。

  升級(jí)代碼傳送全部完成后,監(jiān)控終端會(huì)發(fā)出一幀操作控制字為FF的代碼幀,升級(jí)節(jié)點(diǎn)收到后將存于EEPROM中的寫(xiě)入操作開(kāi)始標(biāo)志位置位清0。退出升級(jí)操作,并由bootloader區(qū)段返回應(yīng)用程序區(qū)段,完成對(duì)該節(jié)點(diǎn)軟件的升級(jí)。

2 IAP升級(jí)可靠性和保密性的考慮

  系統(tǒng)在進(jìn)行IAP升級(jí)過(guò)程中不免受到外界干擾,如系統(tǒng)突然掉電或線路故障等意外事故而導(dǎo)致代碼傳輸失敗的情況,此時(shí)要有一套可靠的軟硬件機(jī)制來(lái)保障IAP升級(jí)的正常運(yùn)作,以下介紹本系統(tǒng)所采取的一些措施。

  (1)消除傳輸過(guò)程中產(chǎn)生的誤碼

  下載代碼的準(zhǔn)確性直接關(guān)系到系統(tǒng)能否正常運(yùn)行。本系統(tǒng)采用大回路比對(duì)的方式。這種方式雖然使升級(jí)過(guò)程時(shí)間加長(zhǎng),但可以保證代碼準(zhǔn)確無(wú)誤,并且回傳的代碼幀同時(shí)可作為IAP升級(jí)的握手信號(hào)。當(dāng)然也可以采用CRC等其它方式解決。

  (2)IAP升級(jí)過(guò)程中系統(tǒng)掉電情況分析

系統(tǒng)設(shè)計(jì)必須要避免系統(tǒng)掉電等類似情況所造成的系統(tǒng)運(yùn)行故障的發(fā)生,即使發(fā)生了也應(yīng)將損失降低到最低限度。在IAP升級(jí)過(guò)程中,可通過(guò)軟件方式解決。在應(yīng)用程序區(qū)段,用第一條語(yǔ)句跳轉(zhuǎn)至bootloader區(qū)段,并在bootloader區(qū)段的程序中,檢驗(yàn)寫(xiě)碼操作開(kāi)始標(biāo)志位(此標(biāo)志位被寫(xiě)入EEPROM中)。如未被置位,則跳轉(zhuǎn)至應(yīng)用程序區(qū)段繼續(xù)運(yùn)行應(yīng)用程序區(qū)段中的程序,否則繼續(xù)守候在bootloader區(qū)段直到升級(jí)完成。

  (3)下載代碼的保密性

  為防止沒(méi)有寫(xiě)碼權(quán)限的用戶對(duì)代碼的操作,實(shí)際運(yùn)用中可對(duì)bootloader程序段加入權(quán)限校驗(yàn)程序。根據(jù)不同的節(jié)點(diǎn)設(shè)置了不同的加密碼,以及特權(quán)碼(供系統(tǒng)設(shè)計(jì)或管理人員使用),并將密碼存入EEPROM中,以便隨時(shí)更改密碼。

  該方案已成功應(yīng)用于上海地鐵調(diào)度指揮系統(tǒng)中,實(shí)現(xiàn)了基于ATMEGA128 IAP軟件的升級(jí),并通過(guò)上述可靠性和保密性的設(shè)計(jì),使IAP軟件升級(jí)的可靠性得到了保證。通過(guò)該技術(shù)大大提高了系統(tǒng)的可維護(hù)性,減少了產(chǎn)品開(kāi)發(fā)時(shí)間,簡(jiǎn)化了產(chǎn)品制造流程,并大大降低了現(xiàn)場(chǎng)升級(jí)的困難,實(shí)現(xiàn)了在不影響節(jié)點(diǎn)正常工作的情況下對(duì)該節(jié)點(diǎn)的軟件升級(jí)。

?

參考文獻(xiàn)

1 栗大超,宋光德. 智能儀器儀表的ISP技術(shù)與Internet接入.中國(guó)儀器儀表,2000;(4):10~14

2 杜建光.SST89C54/58系列單片機(jī)的IAP應(yīng)用技術(shù).單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2002:(7)

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。