ATMEGA128單片機的軟件遠程升級

發(fā)布時(shí)間:2010-11-16 15:50    發(fā)布者:eetech
關(guān)鍵詞: ATmega128 , 單片機 , 軟件 , 升級 , 遠程
介紹了ATMEGA128單片機應用中的在線(xiàn)編程方法。給出了軟件IAP升級設計中應注意的一些關(guān)鍵技術(shù),結合某市地鐵調度系統對IAP升級的可靠性和保密性等問(wèn)題進(jìn)行了簡(jiǎn)單的論述。  

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

(1)傳統的并行編程方法;  
(2)通過(guò)串行口進(jìn)行在線(xiàn)編程ISP In System Programmability :對器件或電路甚至整個(gè)系統進(jìn)行現場(chǎng)升級或功能重構;  
(3)在運行中,應用程序控制下的應用在線(xiàn)編程IAP In Application Programming ;IAP模式簡(jiǎn)單地說(shuō)就是在某一個(gè)section中運行程序,同時(shí)對另一個(gè)section進(jìn)行擦除、讀取、寫(xiě)入等操作。  

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

圖1 某城市地鐵調度指揮系統的網(wǎng)絡(luò )結構

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

1 利用ATMEGA128構成的遠程升級系統  

1.1系統組成  

圖1給出了某城市地鐵調度指揮系統的網(wǎng)絡(luò )結構。該系統的網(wǎng)絡(luò )通信采用輪詢(xún)方式。





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

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

1.2 系統軟件IAP升級  

在不影響整個(gè)系統正常運行情況下,為實(shí)現對系統某個(gè)節點(diǎn)的軟件升級,可將要升級的程序代碼通過(guò)寫(xiě)碼軟件轉換為系統信令,以透明傳輸的方式傳輸下載 到目標節點(diǎn)。本系統的信令格式采用表1所示的代碼幀格式。其中幀傳輸控制字節為5字節,操作控制字節為4字節,代碼數據為32字節。

表1 代碼幀格式  

目的地址
源地址
字節長(cháng)度
Y
下載目標地址
控制字
RAMPZ
ZH
ZL
代碼數據  

為保證代碼傳輸的準確性,本系統采用反饋比對的方式,以監控終端向基臺站的代碼傳輸為例,代碼由監控終端傳輸到基臺站,基臺站收到代碼后,再反饋回監控終端。監控終端將收到的代碼與發(fā)送的代碼作比較,比較結果一致時(shí)傳輸下一代碼幀,不一致時(shí)重復傳輸上一代碼幀。  

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

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

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





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

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

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

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

2 IAP升級可靠性和保密性的考慮  

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

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

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



  
(2)IAP升級過(guò)程中系統掉電情況分析  

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

(3)下載代碼的保密性  

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

該方案已成功應用于上海地鐵調度指揮系統中,實(shí)現了基于A(yíng)TMEGA128 IAP軟件的升級,并通過(guò)上述可靠性和保密性的設計,使IAP軟件升級的可靠性得到了保證。通過(guò)該技術(shù)大大提高了系統的可維護性,減少了產(chǎn)品開(kāi)發(fā)時(shí)間,簡(jiǎn)化了產(chǎn)品制造流程,并大大降低了現場(chǎng)升級的困難,實(shí)現了在不影響節點(diǎn)正常工作的情況下對該節點(diǎn)的軟件升級。
本文地址:http://selenalain.com/thread-39767-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)在線(xiàn)工具

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页