嵌入式終端斷點續傳網絡升級方案的實現_第1頁
嵌入式終端斷點續傳網絡升級方案的實現_第2頁
嵌入式終端斷點續傳網絡升級方案的實現_第3頁
全文預覽已結束

下載本文檔

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

文檔簡介

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

溫馨提示

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

評論

0/150

提交評論