基于GPRS的嵌入式系統軟件的遠程在線(xiàn)升級
3 服務(wù)器端的軟件設計
3.1 升級文件傳輸的數據格式
為了達到快速準確升級的目的,首先對原始的升級代碼(Intel Hex文件)進(jìn)行打包,然后加人相應的數據包ID號和校驗碼,并定義數據包長(cháng)度≤256個(gè)字節,以適應G:PRS通信方式對數據包長(cháng)度的要求,避免出現頻繁掉線(xiàn)和發(fā)送不出去的問(wèn)題。具體的數據包格式如下:數據包格式:PacklD+起始地址+長(cháng)度+數據+校驗碼;PackID:一個(gè)完整的數據包為一個(gè)記錄,下一個(gè)數據包的記錄號自動(dòng)加1;起始地址:燒寫(xiě)數據的FLASH首地址。即數據部分中包含的第一條數據的記錄地址+線(xiàn)性擴展地址;長(cháng)度:該包數據部分的字節數;數據:同一個(gè)擴展線(xiàn)性地址記錄內且地址連續的數據記錄的數據域。當讀到一個(gè)擴展線(xiàn)性地址記錄號后,將此擴展線(xiàn)性地址記錄號內的數據區域打包成256個(gè)字節之內的數據包,超過(guò)256個(gè)字節或讀到下一個(gè)擴展線(xiàn)性記錄號時(shí)則另起一個(gè)新的數據包;校驗碼:CRC循環(huán)冗余校驗碼。
3.2 服務(wù)器端主要程序流程
服務(wù)器端主要程序流程圖如圖4和圖5所示。服務(wù)器先把升級文件的路徑配置完畢,并將要升級的目標程序代碼按照第3.1節所示的數據包格式進(jìn)行打包。并對每個(gè)數據包進(jìn)行編號。
接著(zhù)如圖4所示,服務(wù)器發(fā)送升級指令,并通過(guò)GPRS網(wǎng)絡(luò )透明傳輸到遠程終端。如果當前運行的用戶(hù)程序代碼在1區,則將2區升級數據發(fā)送給遠程終端,否則將2區升級數據發(fā)送給遠程終端。由于地形和環(huán)境因素的影響,GPRS網(wǎng)絡(luò )在遠程通信過(guò)程中可能出現阻塞或斷開(kāi)的情況。
如果服務(wù)器在一定的時(shí)間內沒(méi)有收到遠程終端的應答信號,則重發(fā),如果三次重發(fā)失敗則保存成功接收到的數據塊ID號和數據校驗碼,進(jìn)入斷點(diǎn)續傳。升級文件傳輸完畢則發(fā)送跳轉指令,使遠程終端執行新的程序代碼。
3.3 服務(wù)器端西己置表
服務(wù)器端升級配置表中重要字段的配置如下:
這些字段將服務(wù)器和遠程終端緊密地聯(lián)系起來(lái),使得編程思路更加清晰,Update ID標志了用戶(hù)程序目前所在存儲區;Update User Zone為升級做好文件配置準備工作,LastOrder為斷點(diǎn)續傳做好準備,保證整個(gè)程序的緊密性以及可靠性。
4 結 語(yǔ)
該方案采用應答機制、斷點(diǎn)續傳、CRC校驗等技術(shù),充分利用ARM芯片內部FLASH存儲器資源,通過(guò)GPRS網(wǎng)絡(luò ),實(shí)現對ARM嵌入式終端的系統軟件進(jìn)行遠程在線(xiàn)升級,解決了大型分布式監控系統遠程嵌入式終端系統軟件的在線(xiàn)升級和維護問(wèn)題。該方案已經(jīng)成功地應用在南京航道局的航標自動(dòng)監測系統中,該系統有600多盞安裝有嵌入式終端的航標燈,對該系統進(jìn)行在線(xiàn)升級僅耗時(shí)20 min,且一次性升級成功。實(shí)踐證明,該方案的實(shí)施可有效降低工程復雜度,縮短升級時(shí)間,節約升級、維護成本,同時(shí)具有升級成功率高和升級速度快的特點(diǎn)。
存儲器相關(guān)文章:存儲器原理
評論