樓亮亮,金彥亮,鮑星合, 趙康
(1.上海大學 特種光纖與光接入網省部共建重點實驗室,上海 200072;2.中國科學院 上海微系統與信息技術研究所)
?
物聯網設備無線固件升級技術的研究*
樓亮亮1,2,金彥亮1,鮑星合2, 趙康2
(1.上海大學 特種光纖與光接入網省部共建重點實驗室,上海 200072;2.中國科學院 上海微系統與信息技術研究所)
針對物聯網設備升級維護困難的問題,提出了一種基于物聯網技術的無線程序更新機制,并通過一個具體的農業物聯網監控系統設計方案,分析了該機制的系統結構、實現原理及流程。實際應用測試表明,無線升級機制穩定可靠,大大提高了物聯網設備固件更新的效率。
物聯網;無線固件升級;遠程更新
隨著對系統功能、性能要求的不斷提高,或為了消除缺陷,用戶常常需要對物聯網終端設備軟件進行升級[1]。物聯網終端軟件升級需要對FLASH存儲器的數據進行擦除和寫入,目前對FLASH存儲器的編程主要包括了JTAG、ISP和IAP三種方式[2]:JTAG編程方式主要用于初期系統的實驗室開發和調試;ISP方式需提供硬件資源和中止軟件運行才能完成升級[3];IAP方式則允許在應用程序正常運行下對FLASH存儲器中另一段區域的程序代碼進行讀/寫操作。這3種方式都要人工連接相應的線纜或者設備進行固件升級。
物聯網技術的逐步發展,使其在很多領域的應用越來越廣泛[4]。而物聯網設備在實際使用過程中存在兩種問題[5]:一是用戶在使用過程中,可能需要改進或增加功能;二是程序本身有缺陷導致無法正常工作。物聯網是由很多個終端設備組成,具有分布區域廣、設備小巧等特點[6],要解決上述兩個問題,實現固件更新的任務費時費力。因此,本文提出一種無線升級固件的方法,通過對固件進行數據分段壓縮,減少數據的傳輸次數和提高無線升級的成功率,進而降低維護成本、提高工作效率。
一個農業物聯網監控系統由多個獨立的能夠完成一定功能的物聯網傳感終端和一個用于對整個系統進行升級控制的物聯網數據網關設備組成。每個物聯網傳感終端在出廠的時候都會通過JTAG裝載獨立的引導程序。該引導程序中嵌入無線通信程序,正常工作情況下每個終端運行用戶程序,實現特定的功能并上報數據到數據網關。當需要對某個無線終端進行固件升級時,則通過電腦控制數據網關向特定的物聯網傳感終端設備發送升級指令,終端設備一旦接收到升級指令即跳轉至引導程序,并等待網關設備發送的固件升級數據,一直等待到固件數據升級結束之后再跳回至應用程序[7],系統架構如圖1所示。
1.1 引導程序的實現
本文的具體設計方案,采用TI公司低功耗單片機MSP430F5438為主控芯片,其片上主存儲區的類型為Flash,在正常工作電壓下,程序可對Flash進行擦寫操作,因此特別適合程序升級。物聯網傳感終端系統中將Flash分成3個區域:一個為引導程序區;一個為信息存儲區,存儲應用程序和引導程序共用的數據,如升級標志信息、CRC校驗值、固件大小、版本信息等;最后一個區為應用程序區。Flash分區如圖2所示。

圖1 無線固件升級架構

圖2 單片機Flash分區
主控芯片在上電復位后,首先執行引導程序。引導程序主要工作是重新映射中斷向量地址,將除復位中斷外的所有中斷映射到應用程序中,讀取信息區中的數據,判斷是需要升級還是跳轉至應用區執行應用程序。這兩個區域通過特定的指令可以實現相互跳轉,并以此實現無線升級。
1.2 數據壓縮
在無線固件升級過程中,有兩種情況可能導致升級的失敗或升級時間較長:(1)由于傳輸鏈路不穩定可能導致同一包數據需要多次發送;(2)升級程序數據量大,而傳輸速率較低,不完整的升級代碼或不正確的升級代碼都會使系統癱瘓[8]。考慮到整個終端設備的成本,很多遠程升級系統會通過引導程序接收升級程序數據[9-11]。如果能夠將這些數據進行壓縮處理,不僅減小數據的存儲空間,降低產品成本,增加產品的競爭力,而且減少了傳輸的數據包,提高了固件升級技術的可靠性。所以本文通過引入壓縮技術,利用PC機對固件數據進行無損壓縮,而在引導程序實現對壓縮的固件數據解壓,并把解壓的數據寫到用戶裝載程序區來實現物聯網終端設備的固件升級。
由于單片機系統內存有限,在實際應用中需要將原始固件數據分解成單片機內存所能容納的一個個小文件,進行分塊壓縮[12]。分塊后的固件由于內部數據特征的差異導致了每個分塊固件數據壓縮率的不同,所以要對壓縮后的文件進行結構化處理。具體編排方式是將所有文件按先后順序編號,建立文件地址索引表,并在分塊壓縮后的固件中保存壓縮前的固件長度、壓縮后的固件長度及當前分塊固件的序列號,在解壓階段每個分段只需指出所用數據的序列號、數據壓縮前后的文件大小,即可通過調用解壓程序取得壓縮前的數據。本文所涉及的系統選擇了以4 KB大小的段進行壓縮,基本結構如圖3所示。

圖3 分段壓縮結構
目前數據壓縮技術的方法有很多種,但由于單片機系統運行速度不快,內存資源有限,所以傳統的數據壓縮技術不適合在單片機上運行。為此,本文選用了在單片機上實現起來較為理想、壓縮率較高、編譯碼算法也較為簡單的兩種無損壓縮算法進行評測:MiniLzo與LZSS,并在壓縮率、解壓時間、所消耗的資源等方面做了一些比較。本文選取了大小為123 072字節的原始固件進行測試,其中整體壓縮是該固件沒有通過分塊進行壓縮之后的結果;分塊壓縮是采用4 KB為單位進行壓縮之后的結果;解壓程序所占的ROM大小是在編譯軟件IAR編譯出來的結果;解壓時間是在PC機上測試的結果,具體數值如表1所列。

表1 LZSS與MiniLzo性能比較
從表1中可以看出,LZSS解壓程序比MiniLzo更節省ROM空間,特別適合存儲資源比較緊張的單片機;LZSS整體壓縮與分塊壓縮比率也優于MiniLzo。但是兩種算法在同一臺電腦的解壓運算時間相差比較大,LZSS解壓需要的時間差不多是MiniLzo的10倍。這將帶來兩個不利因素:一方面解壓的時間延長會導致物聯網終端設備功耗的增加;另一方面解壓時間過長增強了系統不穩定性。雖然MiniLzo需要更多的ROM空間,但是即使內存資源有限的單片機也完全可以接受,所以無線固件升級方案壓縮解壓縮算法選用MiniLzo。
1.3 數據完整性校驗
進行數據完整性校驗是為保證數據的完整性,用一種指定的算法對原始數據計算出一個校驗值。CRC已經廣泛應用于錯誤數據的偵測,而生成多項式的選擇是CRC算法實現中最重要的部分,所選擇的多項式必須有最大的錯誤檢測能力,同時保證總體的碰撞概率最小。多項式最重要的屬性是它的長度,也就是最高非零系數的數值,因為它會直接影響計算校驗和的長度。
從理論角度講,CRC不能完全可靠的驗證數據完整性,因為CRC多項式是線性結構,很容易通過改變數據方式達到CRC碰撞,假設一串帶有CRC校驗的代碼在傳輸中,如果連續出現差錯,當出錯次數達到一定次數時,幾乎可以肯定會出現一次碰撞(值不對但CRC結果正確),但隨著CRC數據位增加,碰撞幾率會顯著降低。
根據參考文獻[13]中的公式g(x)=p(x)(1+x),可以得出一個CRC多項式與最大錯誤檢測位數:
Bitmax length= 2r-1-1
(1)
式中,r為CRC校驗用的監督碼。根據式(1)可以得出每種多項式對應的最大不沖突數據字節數,如表2所列。

表2 不同的CRC多項式對應最大不沖突數據字節數
當物聯網終端設備接收到一個完整的固件之后,必須進行一次CRC校驗,以保證數據的正確性。根據表2所得,為了保證總體的碰撞概率最小,當固件大小大于16 KB的時候,CRC-32成為校驗整個新固件數據的首選。
1.4 斷點續傳功能
在傳輸過程中,終端升級文件分成段進行傳送,可能存在數據丟失、終端丟線、掉電等故障,導致升級文件傳送不全。而傳輸程序文件與傳輸一般數據參數文件不同,需要強調傳輸的可靠性和完整性[14-16]。為了防止由于無線網絡信號差等造成文件傳輸中斷,而使升級文件全部重新傳送的情況發生,本系統設計斷點續傳的功能。
在單片機引導程序中定義一段變量空間,并用__no_init來修飾該變量空間,禁止系統啟動時,該變量空間初始化,并且通過修飾符@定位這段空間到指定的地址上。這些全局變量用來記錄當前升級數據包的序列號、長度及其他相關參數數據,保證單片機由于外界干擾導致重啟或升級失敗的時候,能迅速找到上一個升級包處理成功時所記錄下來的參數,并能從上一次升級會話的斷點處繼續升級。斷點續傳功能不僅可以節省網絡資源,降低系統運行成本,而且可以大大提高無線升級的效率[10]。
在無線固件升級的過程中,PC機通過有線的鏈路控制網關設備實現物聯網終端設備的固件升級,無線終端固件升級流程如圖4所示。

圖4 終端設備升級流程
主要操作步驟如下:
① 當要升級的終端設備正在運行應用程序,由PC機控制網關設備向該終端設備發送固件升級指令,終端節點響應該升級指令,跳轉至引導程序,并等待網關設備特定的數據包。
② 終端節點周期性申請固件數據包,并在一個復位時不會被初始化的變量中記錄當前升級狀態,如上次斷點處、故障原因等,保證終端設備固件升級的斷點續傳。
③ 終端節點收到網關設備的固件數據包,當接收完一個完整的壓縮分段固件后,利用解壓縮函數實現對固件的解壓縮,并把解壓縮后的固件寫入指定存儲空間。
④ 網關設備發送完終端設備固件之后,再向該終端設備發送當前升級固件的版本信息、校驗值。終端設備收到該數據之后,對整個解壓后的固件進行校驗,如果成功,則更新版本信息到信息段之中。
⑤ 終端設備固件數據校驗成功,則向網關設備發送升級成功指令,并跳轉到應用程序中運行;否則,發送固件升級失敗指令,重新等待升級。
為了驗證遠程程序更新機制的有效性和可靠性,選擇了與網關設備相距不同距離的物聯網終端設備進行固件升級測試,無線通信速率為100 kbps,其中信號強度是網關設備收到終端設備數據包時所反映出來的RSSI數值,相關測試統計數據如表3所列。
從測試結果可以看出,對于網關設備無線信號比較強的終端設備來說,固件升級過程中的數據傳輸速度較快且很多時候都能一次性完成,固件升級效率非常高。而在無線信號相對比較弱的終端節點,會導致數據丟包,固件數據傳輸的速度相對較慢,而且傳輸中斷的次數也隨無線信號質量變差而增多。斷點續傳技術的引入,在信號較差的地方,有助于提高固件升級成功的概率。

表3 固件無線升級測試結果

[1] 賀翔,陳崇森.基于WiFi的車載終端遠程軟件升級方法[J].單片機與嵌入式系統應用,2014,14(5):22-25.
[2] 杜列波,涂青,羅武勝,等.基于麒麟嵌入式操作系統的車載智能終端軟件遠程升級的設計與實現[J].國防科技大學學報,2012,34(4):95-98.
[3] 韋文祥,劉曉莉,曾位發.基于ARM和GPRS的嵌入式遠程IAP在配變監控終端上的實現[J].電氣應用,2006,25(9):88-92.
[4] 任彧,郭太磊.基于ZigBee的LED路燈固件遠程在線升級研究[J].機電工程,2012,29(1):120-123.
[5] 田建偉,劉晶,劉瀟瀟,等.用電信息采集終端遠程升級平臺設計與實現[J].計算機應用與軟件, 2014,31(1).
[6] 朱洪波,楊龍祥,朱琦.物聯網技術進展與應用[J].南京郵電大學學報:自然科學版,2011,31(1): 1-9.
[7] 陳良勇,郭兵.CAN 總線分布式嵌入式系統的升級設計[J].單片機與嵌入式系統應用,2012,12(3): 68-69.
[8] 丁鵬飛,法林.STM32F205VB 在遠程系統升級中的應用[J].自動化儀表,2013,35(5):80-83.
[9] 李衛紅,張凌云,陳天喜,等.基于IAP程序遠程更新設計在車載乘客信息顯示器中的應用[J].機車電傳動,2012(2):79-81.
[10] 尹恒,嚴華.一種針對嵌入式遠程升級安全的存儲解決方案[J].計算機應用,2011,31(4):942-944.
[11] 孫鋼,朱忠常,景振興.煤礦安全監控分站遠程升級方案[J].工礦自動化,2012(3):58-60.
[12] 沈鴻星,雷紅華.LZSS數據壓縮技術在單片機系統上的應用研究[J].微計算機應用,2004,25(3):321-324.
[13] Cyclic redundancy check[EB/OL].[2014-12].http://en.wikipedia.org/wiki/Cyclic_redundancy_check.
[14] 陳林,林金朝.一種基于嵌入式系統的遠程程序更新機制[J].微計算機信息,2007(26):4-6.
[15] 蔣建春,王正樹,馮輝宗,等.基于軟件觸發的IAP在線升級技術的設計與實現[J].計算機應用,2012,32(6):1721-1723.
[16] 丁鵬飛,法林.STM32F205VB 在遠程系統升級中的應用[J].自動化儀表,2013,35(5):80-83.
樓亮亮(碩士研究生),主要研究方向為物聯網, 嵌入式系統應用;金彥亮(碩士生導師)、鮑星合(助理研究員)、趙康(副研究員),主要研究方向為無線通信、無線局域網、 ad hoc 網絡和無線傳感器網絡。
藍牙技術聯盟針對物聯網推出Bluetooth Developer Studio
藍牙技術聯盟(Bluetooth Special Interest Group,簡稱SIG)于頂級無線產業盛會——藍牙世界大會上發布了“Bluetooth Developer Studio”(Beta版本)。“Bluetooth Developer Studio”是一款藍牙應用開發工具包,革命性地縮減開發者的藍牙技術學習時間,并顯著加速產品開發速度。物聯網市場的興起為消費者帶來了眾多基于藍牙無線技術的智能互聯設備,包括牙刷、血糖儀、心率監測儀、門鎖、燈泡,乃至餐叉。有了“Bluetooth Developer Studio”,無論是新手還是經驗豐富的開發者,利用藍牙技術構建物聯網的過程都將變得簡單無比。
藍牙技術聯盟開發者項目總監何根飛(Steve Hegenderfer)先生表示:“藍牙技術聯盟在構建工具和開設項目上投入巨大精力,以幫助開發者盡快將產品推向市場并縮減學習時間,Bluetooth Developer Studio就是一項代表作。此類開發工具讓開發者、創新者,甚至任何對物聯網有想法的人,都能夠快速、低成本地將產品理念推向市場。”
“Bluetooth Developer Studio”是一個圖形化的、基于通用屬性配置文件GATT(Generic Attribute Profile)的應用開發和調試工具,有效縮減多達50%的藍牙學習時間。開發者能夠輕松獲取教程和代碼實例,迅速著手開發。來自初級用戶和資深藍牙開發者的反饋表明,“Bluetooth Developer Studio”能夠將開發時間縮短多達70%,開發者可利用其拖放功能找到所需的藍牙協議,快速創建自己的項目。工具能夠為第三方(藍牙芯片和模塊供應商)解決方案自動生成代碼,且針對虛擬和實體設備均能開展測試。
Technology of Wireless Firmware Upgrading Based on IoT Devices
Lou Liangliang1,2,Jin Yanliang1,Bao Xinghe2,Zhao Kang2
(1.Key Laboratory of Specialty Fiber Optics and Optical Access Networks,Shanghai University,Shanghai 200072,China;2.Shanghai Institute of Micro-system and Information Technology,Chinese Academy of Sciences)
Aiming at the problems in remote upgrade of the IoT devices,this paper proposes a wireless reprogram mechanism based on IoT network technology.System structure,theory and implementation flow are analyzed through a specific agricultural monitoring system of IoT.The actual application of the test indicates that the wireless upgrade mechanism is stable and reliable,and greatly improves the efficiency of the IoT device firmware update.
IoT;wireless firmware upgrade;remote upgrade
國家科技重大專項資助,面向南水北調工程安全的傳感器網絡技術研發(課題編號2014ZX03005001-002);上海市重點學科項目(SKLSFO2012-04)資助。
TN923
A
士然
2014-12-18)