嵌入式終端斷點續(xù)傳網(wǎng)絡升級方案的實現(xiàn)_第1頁
嵌入式終端斷點續(xù)傳網(wǎng)絡升級方案的實現(xiàn)_第2頁
嵌入式終端斷點續(xù)傳網(wǎng)絡升級方案的實現(xiàn)_第3頁
全文預覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

嵌入式終端斷點續(xù)傳網(wǎng)絡升級方案的實現(xiàn)摘要:本方案實現(xiàn)了一種以ST公司的STM32F103ZET為平臺的嵌入式系統(tǒng)軟件遠程升級方案,此方案以IAP技術(shù)為主要基礎,通過移動數(shù)據(jù)網(wǎng)絡對MCU(指代STM32,下同)程序存儲區(qū)進行實時更新,并支持斷點續(xù)傳,有效地保證了嵌入式終端能夠快捷、安全、穩(wěn)定地進行固件遠程升級。作為方案的技術(shù)支撐,本文還對STM32程序存儲區(qū)的結(jié)構(gòu)、BOOTLOADER的設計及從BOOTLOADER到用戶程序的跳轉(zhuǎn)過程等內(nèi)容進行了詳述。關鍵詞:嵌入式;STM32;遠程升級;斷點續(xù)傳1引言嵌入式終端因其靈活便利、性價比高、嵌入性強的特點,被廣泛地應用在各個場所和行業(yè),發(fā)揮著重要的作用。如今隨著物聯(lián)網(wǎng)的興起和迅速普及,作為其中不可或缺的一環(huán),市場對嵌入式終端的要求也隨之變得更加靈活和全面。嵌入式終端實際應用過程中,無論是用戶需求的變化,或是系統(tǒng)軟件的修繕,均需要對終端固件進行升級。而傳統(tǒng)的升級方法,則是由工作人員到終端應用現(xiàn)場進行開箱或拆機,將終端通過UART、J-Link、USB等方式連接電腦后進行固件燒寫。但由于嵌入式終端安裝環(huán)境存在復雜多樣的特點,這種升級方法不但人力成本和物力成本高,效率低下,并且在某些應用環(huán)境下(如高空、有毒、輻射等)進行人工升級還會對工作人員的人身安全產(chǎn)生威脅。通過移動數(shù)據(jù)網(wǎng)絡(以下稱為GPRS)對嵌入式終端固件進行遠程無線升級,則不存在上述問題。GPRS具有無需布線、實時在線、流量計費、成本低廉的特點,采用GPRS進行通信的的嵌入式終端,不僅能夠縮減安裝工作量,還大幅度降低了終端的維護成本,只要終端安裝地點在GPRS基站的覆蓋范圍內(nèi),即具備遠程升級固件的客觀條件。本文將以ST公司的STM32F1xx系列為平臺,介紹以IAP技術(shù)為主要基礎的嵌入式終端無線升級方案的實現(xiàn)。本方案還針對偏遠區(qū)域無線網(wǎng)絡穩(wěn)定性差、誤碼率高的問題,設計了嚴密的數(shù)據(jù)校驗和可靠的斷點續(xù)傳機制,從而保證固件數(shù)據(jù)包能夠完整無誤地被終端接收,進而安全地進行IAP升級,保障終端的正常運行。此方案現(xiàn)已在蔗糖稅控系統(tǒng)中得到驗證和應用。2系統(tǒng)框架系統(tǒng)框架如下圖所示。嵌入式終端中,GPRS模塊通過RS232總線與STM32的USART口連接,負責將接收到的移動網(wǎng)絡數(shù)據(jù)傳送給MCU,或是將MCU要發(fā)送的數(shù)據(jù)通過移動網(wǎng)絡發(fā)至后臺服務器;SD卡通過SPI總線與MCU連接,用于在終端接收固件時臨時存放固件數(shù)據(jù),以及保存固件更新進度、版本號等關鍵信息。本地環(huán)境包括用于開發(fā)、編譯終端固件的上位機,以及用于與終端進行數(shù)據(jù)交互的后臺服務器。當需要更新終端固件時,由工作人員將終端固件從上位機上傳至服務器并啟動更新程序,接下來則由服務器通過透明傳輸模式,采用自定義通信協(xié)議與終端進行數(shù)據(jù)交流,直至固件更新完畢。圖1系統(tǒng)框架圖3終端軟件設計3.1IAP技術(shù)IAP是InApplicationProgramming的首字母縮寫,意指用戶程序在運行過程中對程序存儲區(qū)(以下稱為flash)指定區(qū)域進行燒寫,目的是為了在產(chǎn)品發(fā)布后可以方便地通過預留的通信接口對產(chǎn)品中的固件程序進行更新升級。本方案所用主控芯片STM32F103ZET的內(nèi)置flash物理地址范圍為0x08000000至0X0807FFFF,容量為512KByte。為了實現(xiàn)IAP功能,現(xiàn)將flash從邏輯上劃分為bootloader和app兩個區(qū)域,劃分結(jié)構(gòu)如下圖所示:從圖2可以看到,引導程序(Bootloader)區(qū)域的起始地址為0x08000000,容量分別64KBbyte;固件(App)的起始地址為0x08010000,容量為448Kbyte。兩者的容量可視實際情況進行劃分,甚至可以劃分多個固件區(qū)域,但起始地址必須是0x08000000+4n(n為大于0的整數(shù))。引導程序,在終端出廠前即通過J-Link燒錄到指定區(qū)域(即引導程序區(qū))。引導程序不負責終端的功能實現(xiàn),而是對外設進行初始化,以及檢查是否需要更新固件。若有需要更新的固件,則將新的固件數(shù)據(jù)寫入固件區(qū)域,并在寫入完畢后引導MCU跳轉(zhuǎn)至固件;若沒有需要更新的固件,則直接引導MCU執(zhí)行固件程序。固件作為是終端軟件的主體部分,負責終端功能的實現(xiàn),也負責通過GPRS與后臺服務器進行交互,以接收、校驗和保存新固件的數(shù)據(jù)。出廠固件可以在終端出廠前通過J-Link預先燒寫,也可以將其保存在外置存儲器,在終端啟動后由引導程序自動進行燒寫。1233.13.2引導程序設計如3.1所述,STM32內(nèi)部flash的起始地址為0x08000000,即引導程序的起始地址。終端上電復位后,MCU從0x08000004地址取出復位中斷向量的地址,并跳轉(zhuǎn)到復位中斷服務程序,在運行完復位中斷服務程序后,跳轉(zhuǎn)到引導程序的main函數(shù)中,開始執(zhí)行外設初始化。在外設初始化完畢后,程序讀取SD卡中的指定地址的標志位,若標志位提示SD卡中存在需要更新的固件,則從SD卡中讀取固件數(shù)據(jù)保存到臨時buffer中(本文以SDHCv2為例,每次讀取1個block,即512字節(jié)),然后將buffer中的每2個連續(xù)字節(jié)拼接為1個半字,按順序?qū)懭雱澏ǖ墓碳^(qū)域。每寫完一個block的數(shù)據(jù)后,還需要分別將此block數(shù)據(jù)從flash中讀出并進行一次CRC32計算和對比,以確保寫入的數(shù)據(jù)準確無誤。如此循環(huán)直至SD卡中保存的所有固件數(shù)據(jù)處理完畢。 圖3引導程序跳轉(zhuǎn)及固件運行基本流程固件數(shù)據(jù)寫入完成后,跳轉(zhuǎn)代碼會將程序從引導區(qū)跳轉(zhuǎn)到固件區(qū)。此跳轉(zhuǎn)動作是通過修改強制修改PC寄存器(程序計數(shù)器)的值來實現(xiàn)的。3.3遠程升級模塊設計固件的實現(xiàn)基于多任務實時操作系統(tǒng),使得嵌入式設備的主要功能模塊與固件升級模塊的運行互不影響。固件中遠程升級模塊的主要內(nèi)容包括:接收固件數(shù)據(jù)、校驗固件數(shù)據(jù)及保存固件數(shù)據(jù),其工作流程如圖4所示。升級模塊中實現(xiàn)斷點續(xù)傳的關鍵,在于服務器將固件分割為若干個數(shù)據(jù)包進行發(fā)送(在本例中每個數(shù)據(jù)包為512字節(jié)大小),且為每個數(shù)據(jù)包指定了序號,終端在接收、校驗、保存每一個固件數(shù)據(jù)包后,將該數(shù)據(jù)包的序號保存到SD卡中,即使傳輸被長時間中斷,終端也能夠在接收到固件升級啟動命令后,準確地告知服務器上次傳輸時斷開的序號,服務器即可直接從上次傳輸時斷開的位置開始繼續(xù)發(fā)送剩下的數(shù)據(jù)包。圖4在線升級模塊工作流程4服務器客戶端設計嵌入式設備的新固件上傳至服務器后,由客戶端對其進行大小統(tǒng)計、總包CRC32計算、分包及分包CRC32計算。當有設備需要升級時,用戶在客戶端上指定其ID號后,啟動升級流程??蛻舳松壒ぷ髁鞒倘鐖D5所示。5結(jié)束語本設計采用自定義協(xié)議、CRC校驗、應答機制等技術(shù),通過移動數(shù)據(jù)網(wǎng)絡,實現(xiàn)了對嵌入式終端系統(tǒng)固件遠程升級的功能,為各類無人值守的自動化分布式采集/監(jiān)控系統(tǒng)的節(jié)點升級及維護提供了可靠的解決方案。目前此方案已經(jīng)成功地應用在廣西糖廠稅控系統(tǒng)中,該系統(tǒng)共安裝嵌入式終端240多臺,分布安裝于廣西全區(qū)內(nèi)各糖廠中,位置分散且距離遠,利用此方案對終端進行遠程升級,極大減少了系統(tǒng)維護工作中人力物力成本的消耗。參考文獻JosephYiu.Cortex-M3權(quán)威指南,2009STMicroel

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論