1 系統(tǒng)結(jié)構(gòu)
系統(tǒng)結(jié)構(gòu)如圖1所示,由服務器和遠程終端組成,其中遠程終端包括基于ARM內(nèi)核的嵌入式控制芯片(以下簡稱ARM芯片)和GPRS Modem模塊,兩者之間通過RS 232總線連接;服務器與遠程終端通過GPRS進行通信。用戶需要升級遠程終端時,首先將服務器端的升級標志位置1,通過GPRS將升級標志位傳給遠程終端,遠程終端上電后將自動檢測升級標志位,若標志位為1表示需要升級,否則不升級。然后,服務器將升級文件通過GPRS透明的下載到遠程終端,實現(xiàn)數(shù)據(jù)的傳輸及更新,從而達到遠程終端的嵌入式系統(tǒng)軟件的在線升級的目的。
2 遠程終端軟件升級的關鍵技術
2.1 FLASH存儲器編程
遠程終端的升級主要是對ARM芯片內(nèi)部FLASH存儲器的數(shù)據(jù)進行擦除及下載,目前很多ARM芯片支持多種方式對FLASH進行編程,ARM芯片內(nèi)部FLAsH存儲器的編程有JTAG,ISP和IAP三種方式:JTAG編程主要用于產(chǎn)品開發(fā)期的調(diào)試;ISP需要提供一定的硬件資源和中止應用軟件的運行,適用于便攜式設備的升級;IAP與ISP非常相似.主要區(qū)別是IAP允許在應用程序正常運行的情況下,對FLASH存儲器中另外一段程序進行讀/寫操作,甚至可以控制對某段、某頁的讀/寫操作,為數(shù)據(jù)存儲和固件的自動升級帶來了極大的靈活性。該方案通過GPRS網(wǎng)絡傳輸升級文件的程序代碼,利用ARM內(nèi)部的FLASH存儲器及其IAP編程,實現(xiàn)終端的嵌入式系統(tǒng)軟件的遠程無線在線升級。有關IAP的命令碼、狀態(tài)碼和命令詳解以及IAP功能的詳細應用見參考文獻。
2.2 遠程終端的程序設計
為了在線升級,將ARM芯片內(nèi)部FLASH存儲器按圖2所示劃分為啟動區(qū)、用戶代碼跳轉(zhuǎn)區(qū)、用戶代碼1區(qū)和用戶代碼2區(qū)。其中啟動區(qū)用于存放系統(tǒng)初始化和啟動代碼,用戶代碼跳轉(zhuǎn)區(qū)用于存放跳轉(zhuǎn)到相應用戶代碼區(qū)的指令.用戶代碼1區(qū)和用戶代碼2區(qū)用于交替存放當前終端正在執(zhí)行的用戶代碼和升級的用戶代碼。若當前終端執(zhí)行的用戶程序存放在1區(qū),則將接收到的升級程序存放到2區(qū);待升級程序接收結(jié)束后,更改用戶代碼跳轉(zhuǎn)區(qū)的指令,使其指向升級程序,即用戶代碼2區(qū);此后用戶代碼2區(qū)的程序成為當前終端指向的用戶程序,而用戶代碼1區(qū)則用于下次升級代碼的存放區(qū)。
遠程終端上電后首先進入啟動區(qū)進行系統(tǒng)的初始化;接著終端從片外的E2PROM中讀取升級配置,包括升級標志位、已接收到的最后一個數(shù)據(jù)包的ID等。若終端處于升級狀態(tài),則如圖3所示,向服務器發(fā)所要升級數(shù)據(jù)的指令,而且指令中將包含終端上次已接收到的最后一個數(shù)據(jù)包的ID,這樣可以避免已接收的數(shù)據(jù)包的重復發(fā)送,并實現(xiàn)續(xù)傳的功能。終端從GPRS網(wǎng)絡接收數(shù)據(jù)包后對數(shù)據(jù)包進行解析和校驗判斷,并與服務器形成一問一答的應答機制。FLASH中進行數(shù)據(jù)編程的最小單位是頁(512個字節(jié)),當接收到的升級數(shù)據(jù)達到1頁后.通過IAP進行編程。如果當前運行的用戶程序代碼在1區(qū),則把升級數(shù)據(jù)保存到2區(qū),否則保存到1區(qū)。編程成功后,將最后一條數(shù)據(jù)包的ID保存到E2PROM中。所有升級數(shù)據(jù)發(fā)送結(jié)束并編程成功后,通過IAP修改用戶代碼跳轉(zhuǎn)區(qū)的指令,使遠程終端運行新的升級代碼。
3 服務器端的軟件設計
3.1 升級文件傳輸?shù)臄?shù)據(jù)格式
為了達到快速準確升級的目的,首先對原始的升級代碼(Intel Hex文件)進行打包,然后加人相應的數(shù)據(jù)包ID號和校驗碼,并定義數(shù)據(jù)包長度≤256個字節(jié),以適應G:PRS通信方式對數(shù)據(jù)包長度的要求,避免出現(xiàn)頻繁掉線和發(fā)送不出去的問題。具體的數(shù)據(jù)包格式如下:數(shù)據(jù)包格式:PacklD+起始地址+長度+數(shù)據(jù)+校驗碼;PackID:一個完整的數(shù)據(jù)包為一個記錄,下一個數(shù)據(jù)包的記錄號自動加1;起始地址:燒寫數(shù)據(jù)的FLASH首地址。即數(shù)據(jù)部分中包含的第一條數(shù)據(jù)的記錄地址+線性擴展地址;長度:該包數(shù)據(jù)部分的字節(jié)數(shù);數(shù)據(jù):同一個擴展線性地址記錄內(nèi)且地址連續(xù)的數(shù)據(jù)記錄的數(shù)據(jù)域。當讀到一個擴展線性地址記錄號后,將此擴展線性地址記錄號內(nèi)的數(shù)據(jù)區(qū)域打包成256個字節(jié)之內(nèi)的數(shù)據(jù)包,超過256個字節(jié)或讀到下一個擴展線性記錄號時則另起一個新的數(shù)據(jù)包;校驗碼:CRC循環(huán)冗余校驗碼。
3.2 服務器端主要程序流程
服務器端主要程序流程圖如圖4和圖5所示。服務器先把升級文件的路徑配置完畢,并將要升級的目標程序代碼按照第3.1節(jié)所示的數(shù)據(jù)包格式進行打包。并對每個數(shù)據(jù)包進行編號。
接著如圖4所示,服務器發(fā)送升級指令,并通過GPRS網(wǎng)絡透明傳輸?shù)竭h程終端。如果當前運行的用戶程序代碼在1區(qū),則將2區(qū)升級數(shù)據(jù)發(fā)送給遠程終端,否則將2區(qū)升級數(shù)據(jù)發(fā)送給遠程終端。由于地形和環(huán)境因素的影響,GPRS網(wǎng)絡在遠程通信過程中可能出現(xiàn)阻塞或斷開的情況。
如果服務器在一定的時間內(nèi)沒有收到遠程終端的應答信號,則重發(fā),如果三次重發(fā)失敗則保存成功接收到的數(shù)據(jù)塊ID號和數(shù)據(jù)校驗碼,進入斷點續(xù)傳。升級文件傳輸完畢則發(fā)送跳轉(zhuǎn)指令,使遠程終端執(zhí)行新的程序代碼。
3.3 服務器端西己置表
服務器端升級配置表中重要字段的配置如下:
這些字段將服務器和遠程終端緊密地聯(lián)系起來,使得編程思路更加清晰,Update ID標志了用戶程序目前所在存儲區(qū);Update User Zone為升級做好文件配置準備工作,LastOrder為斷點續(xù)傳做好準備,保證整個程序的緊密性以及可靠性。
4 結(jié) 語
該方案采用應答機制、斷點續(xù)傳、CRC校驗等技術,充分利用ARM芯片內(nèi)部FLASH存儲器資源,通過GPRS網(wǎng)絡,實現(xiàn)對ARM嵌入式終端的系統(tǒng)軟件進行遠程在線升級,解決了大型分布式監(jiān)控系統(tǒng)遠程嵌入式終端系統(tǒng)軟件的在線升級和維護問題。該方案已經(jīng)成功地應用在南京航道局的航標自動監(jiān)測系統(tǒng)中,該系統(tǒng)有600多盞安裝有嵌入式終端的航標燈,對該系統(tǒng)進行在線升級僅耗時20 min,且一次性升級成功。實踐證明,該方案的實施可有效降低工程復雜度,縮短升級時間,節(jié)約升級、維護成本,同時具有升級成功率高和升級速度快的特點。
Lua RTOS 是一個實時操作系統(tǒng),設計在嵌入式系統(tǒng)上運行,對 FLASH 和 RAM 內(nèi)存的要求最低。目前 Lua RTOS 可用于 ESP32, ESP8266 和 PIC32MZ 平臺,并可以輕松移植到其他32位...
關鍵字: Lua RTOS 操作系統(tǒng) 嵌入式系統(tǒng)通用異步收發(fā)傳輸器(Universal Asynchronous Receiver/Transmitter),通常稱作UATR,是一種串行、異步、全雙工的收發(fā)器。全雙工的UART支持同時雙向通信,是嵌入式系統(tǒng)必不可少的d...
關鍵字: 異步收發(fā) 傳輸器 嵌入式系統(tǒng)Flash Memory 是一種非易失性的存儲器。在嵌入式系統(tǒng)中通常用于存放系統(tǒng)、應用和數(shù)據(jù)等。在 PC 系統(tǒng)中,則主要用在固態(tài)硬盤以及主板 BIOS 中。
關鍵字: Flash 存儲器 嵌入式系統(tǒng)摘要:隨著農(nóng)業(yè)生產(chǎn)中對水資源利用率重視程度的不斷提升,農(nóng)業(yè)用水的灌溉效率與灌溉滲漏系數(shù)測定準確化與規(guī)范化越來越重要。為實現(xiàn)渠道水位測量的精確化與自動化,研制開發(fā)出一種基于GPRS的渠道水位監(jiān)測系統(tǒng)。對投入式壓力水位檢測方...
關鍵字: GPRS 水位監(jiān)測 上位機設計近年來,隨著計算機技術及集成電路技術的發(fā)展,嵌入式技術日漸普及,在通訊、網(wǎng)絡、工控、醫(yī)療、電子等領域發(fā)揮著越來越重要的作用。嵌入式系統(tǒng)無疑成為當前最熱門最有發(fā)展前途的IT應用領域之一。?嵌入式系統(tǒng)一般由嵌入式微處理器、外...
關鍵字: 嵌入式 嵌入式系統(tǒng) 計算機深圳2022年8月26日 /美通社/ -- 8月17日 – 深圳,AMD Xilinx舉辦為期一天的線下技術日活動,在AMD Xilinx主辦下宜鼎國際作為合作伙伴的身份被邀...
關鍵字: AMD Xilinx AGENT 嵌入式系統(tǒng)單向散列算法,又稱hash哈希函數(shù),Hash函數(shù)(也稱雜湊算法)就是把任意長的輸入消息串變化成固定長的輸出串的一種函數(shù),該過程是不可逆的。Hash函數(shù)可用于數(shù)字簽名、消息的完整性檢測、消息起源的認證檢測等。較為常用的方法...
關鍵字: 嵌入式算法 嵌入式系統(tǒng)作為消費者,在我們考慮購買電池供電設備時,通常首先要檢查的關鍵指標之一是一次充電可以使用多長時間。電池壽命已成為許多可穿戴設備的重要賣點,但對于越來越多的工業(yè)物聯(lián)網(wǎng)傳感器和其他類似應用來說,電池壽命同樣也是一個重要的考慮...
關鍵字: 貿(mào)澤電子 嵌入式系統(tǒng)摘要:設計了一種新型的基于LeapMotion體感控制器的仿生機械臂交互控制系統(tǒng),利用LeapMotion體感控制器替代傳統(tǒng)的人機交互方式,采集手部數(shù)據(jù),將識別到的手勢動作經(jīng)過計算機分析處理后,通過無線傳輸?shù)姆绞浇o開發(fā)板...
關鍵字: 人機交互 嵌入式系統(tǒng) 機械手臂