文獻標識碼: A
文章編號: 0258-7998(2012)11-0139-04
隨著電子技術、計算機技術和通信技術的迅猛發展,單片機、DSP等嵌入式系統已廣泛應用于工業、軍事、通信、及家電等領域。但嵌入式設備在安裝部署方面的局限性使得傳統的在線升級程序的方法難以實現。而應用可編程IAP(In Application Programming)技術為嵌入式系統無線升級程序提供了良好的解決方案,并受到廣泛關注[1-2]。
建立備份數據區的機制[3],采用設計應用程序鏡像文件存儲區的方法對Flash的布局進行重新設計,實現嵌入式設備遠程自動更新,達到更新升級程序的目的。但該方法只能更新比現有程序版本更高的程序,靈活性較差。基于GPRS(General Packet Radio Service)的無線升級方法[4],通過GPRS網絡將要升級的程序代碼傳輸下載到目標終端,然后采用IAP技術進行軟件的升級,該方法具有GPRS遠程、高速傳輸的特點。但采用GPRS技術需要支付相關費用,并且對系統資源要求較高。基于Zigbee的無線升級方法[5],通過Zigbee無線網絡技術進行更新程序代碼數據傳輸,采用IAP技術對嵌入式設備進行程序的在線升級,該方法具有快捷簡便、硬件成本低及通信誤碼率低等優點。然而使用Zigbee協議較為復雜,需要2.4 GHz的載波頻率,資源和能量消耗較多。
本文提出了無線升級程序的方法,嵌入式設備載波頻率采用ISM頻段的433 MHz,通過簡單可靠的無線通信協議進行程序代碼的傳輸,終端設備接收到代碼數據后,采用IAP技術進行程序的無縫切換。該方法需要的硬件資源較少,協議簡單可靠,能夠有效減少來自同頻電波和障礙物的干擾,裝載延時可在人們的容忍限度之內,能量消耗較少。
1 系統無線升級模型與方法
1.1 無線系統升級模型
嵌入式設備的無線升級系統主要由服務器設備、終端設備兩部分組成。設備之間通過無線通信技術進行裝載程序代碼的傳輸。通過IAP技術進行程序的更新與升級[6,10],由此實現嵌入式設備的無線升級, 程序結構如圖1所示。
1.2 無線系統升級方法
在IAP編程模式中,嵌入式設備內部在結構上有兩塊存儲區,一塊被稱為Boot Loader區;另外一塊被稱為用戶裝載程序區。設備上電運行在Boot Loader區,如果滿足外部改寫程序的條件,則對用戶裝載程序區的程序進行改寫操作,程序指針跳到用戶裝載程序區完成程序切換。本系統所涉及的關鍵技術主要包括:無線通信協議、內存映射、用戶裝載程序代碼的生成和中斷向量的處理。
(1) 無線通信協議
本系統采用點對點無線通信協議。通信時首先采用基本的請求/應答握手機制來占用通信媒介(類似于IEEE802.11協議[7]中的RTS/CTS機制),可以有效地防止干擾信號和誤操作的產生。為了保證傳輸代碼的可靠性和有效性,在通信協議中采用應答機制和錯誤重傳機制。本系統采用的無線通信協議如圖2所示,如果終端設備發送裝載程序請求幀(REQ),服務器設備接收到請求幀后將提取幀信息發送至應答幀(MACK),應答幀指示終端設備進行接收代碼準備,并與服務器設備采用的應答機制和錯誤重傳機制進行程序代碼傳輸。
(2) 內存映射
為了保證系統的可靠運行,需要將單片機Flash內存分為Boot Loader代碼區和用戶裝載程序代碼區。Boot Loader代碼區用來存放Boot Loader代碼,由于單片機結構及軟件編程的特點將Boot Loader代碼區開辟在0X0000~0X1FFF區域[8-9],用戶需要裝載的程序存儲在0X2000~0X7FFF區域。
(3) 用戶裝載程序代碼的生成
為了使裝載程序有效地運行在終端設備,服務器設備中裝載程序代碼的生成同樣需要在code區開辟的0X2000~0X7FFF區域。生成方法即在IAR嵌入式編譯環境中,將鏈表code區的-D_CODE_START=0X0000修改為-D_CODE_START=0x2000。
(4) 中斷向量的處理
由于Boot Loader存儲區域和用戶裝載程序在Flash中的code區域不同,如果程序采用中斷功能,則會面臨中斷向量沖突問題。本文采用在 Boot Loader中調用仲裁函數方法進行處理,仲裁函數就是Boot Loader中的中斷服務程序。當中斷發生在Boot Loader時,則執行Boot Loader中的函數,中斷發生在用戶裝載程序時,則執行跳轉指令(LJMP 0X2000+中斷向量值),跳轉到裝載執行程序中相應的位置。
2 無線升級系統的軟硬件實現
2.1系統硬件實現
本系統使用兩個TI公司提供的具有無線收發功能的CC1110F32單片機[8]作為節點。其中一個作為服務器節點(SN),另一個作為終端節點(EN)。SN負責發送程序代碼,EN就是需要裝載程序的單片機。硬件系統框圖如圖3所示。
通過TI提供的SmartRFStudio軟件進行發送與接收寄存器的配置,載波頻率為433 MHz,無線調制方式為GFSK,數據傳輸率設置為38.4 kBaud。
2.2 系統軟件設計流程
2.2.1服務器節點的流程
服務器節點用于將終端節點請求裝載的程序代碼發送到終端節點。服務器節點上電運行(或者軟件復位)后,首先進行硬件平臺初始化,包括CPU及外設的初始化、無線模塊的初始化等。然后打開無線接收模塊,等待接收終端節點的裝載代碼請求,接收到請求后將代碼分段傳輸,無線通信采用請求/應答/數據/應答通信機制進行代碼的傳輸。此協議采用錯誤重發機制保證代碼有效可靠地傳輸。
2.2.2 終端節點的流程
終端節點即進行無線更新升級程序的節點。終端節點上電運行(或者軟件復位)后,首先進行硬件平臺的初始化,包括CPU及外設的初始化、無線模塊的初始化等。如果需要進行無線升級,則首先將系統復位(按下復位按鍵進行復位),然后執行Boot Loader程序,等待用戶按鍵選擇裝載程序類型。選定裝載程序后,將裝載請求發送至服務器節點,然后采用請求/應答/數據/應答通信機制分段接收程序代碼,并對接收的每一段代碼進行CRC校驗,判斷接收是否正確,通過向服務器節點發送應答信號來指示該段代碼的接收情況。終端節點在無線更新升級程序中的工作流程如圖4所示。
3 實例分析及評價
3.1 程序裝載時間與裝載程序代碼長度的關系
為了研究裝載時間與裝載代碼長度以及傳輸數據包長度的關系,采用5種不同長度的裝載程序代碼進行測試,對于每種長度的程序分別采用240 B、128字節和64 B的數據包進行傳輸。為了保證實驗數據的可靠性,對于每種長度的程序采用同一數據包長度傳輸時,分別進行了10次測量,10次測量所用裝載的時間幾乎沒有差別(幾毫秒),對10次測量數據取平均值作為此次程序的裝載時間。在不同數據包長度傳輸情況下,裝載程序所用時間與裝載程序長度的關系如圖5所示。
3.2 不同裝載代碼長度與消耗能量的關系
為了研究裝載程序所用功耗與裝載代碼長度以及傳輸數據包長度的關系,分別對3種不同長度的程序代碼進行裝載測試。裝載程序長度分別為1 440 B、1 024 B、480 B。本實驗采用數據包長度(每幀傳輸的代碼數)分別為240 B、200 B、128 B和64 B。為了保證實驗數據的可靠性,對于每種長度的程序采用同一數據包長度傳輸時,分別進行了10次測量,對10次測量功耗數據取平均值作為此次程序裝載的功耗。采用不同程序代碼長度進行傳輸時,裝載程序所用功耗與每幀傳輸字節數的關系如圖6所示。
3.3 不同功能程序裝載切換實例測試
為了驗證系統的可靠性,分別采用LED閃爍程序、按鍵中斷程序和串口通信程序進行裝載切換測試,每種功能程序分別進行了50次裝載測試,測試結果如表1所示。該系統裝載程序的成功率達到99%以上,并且所裝載的程序不受功能限制,具有較高的通用性、可靠性。由按鍵觸發裝載功能,使用方便靈活,易于操作。
3.4 系統評價
通過對程序裝載時間、裝載程序長度、以及數據包長度的實驗測試可以明顯看出,采用同一數據包長度傳輸數據時,隨著裝載程序長度的增加,裝載延時也將延長,基本呈線性關系。對同一程序采用不同數據包長度時,數據包長度越大,則所耗費的時間越短,裝載長度為1 024 B時,若采用的數據包長度為64 B,則裝載時間為1 550 ms;而采用數據包長度為240 B時的裝載時間為820 ms。當有沖突發生時,采用數據包越長,重傳時所用的無效傳輸數據越多,傳輸的效率越低。因此用戶可以根據需要選擇不同的數據包長度進行傳輸,增加了系統的靈活性。
傳輸數據的數據包越長,程序裝載所需的功耗越低, 程序長度為1 024 B,數據包長度為64 B時,平均功耗為275.8 mW;數據包長度為240 B時,則平均功耗為155.2 mW。裝載同一程序時,傳輸數據的數據包越長,裝載時間越短。因此可以得出隨著數據包長度的增加,裝載程序所消耗的能量越小。對于能量消耗要求嚴格的嵌入式設備(如手持電池供電設備、無線傳感器網絡節點等)進行無線更新升級程序時,可以采用較大的數據包來裝載程序。
本文設計了一種基于CC1110單片機的無線更新升級程序的應用系統。經測試驗證該系統具有較高的可靠性、及時性、靈活性、低功耗等特點,應用方便靈活。對于解決應用中的無線嵌入式設備程序升級是一種比較理想的方法。該方法通用性較強,適用于任何具有無線通信功能含有Flash單片機及嵌入式設備。
參考文獻
[1] 黃家升.基于IAP的單片機軟件遠程升級[J]. 艦船電子對抗,2007,30(3):95-97.
[2] 冉曉蓉, 楊志義, 張凡, 等. 基于CAN總線在線更新機制的設計與實現[J]. 計算機工程與科學, 2008,30(1):
125-128.
[3] 王恒,王颋,王泉,等. 基于Boot Loader的可靠嵌入式軟件遠程更新機制[J].微計算機信息,2007,23(20):57-59.
[4] 陶維青, 王付軍,等.基于GPRS網絡的MSP430單片機Flash遠程更新方法[J].電測與儀表,2007,44(7):33-36.
[5] 袁璐,宋華. 基于Zigbee和IAP的在線升級方案.測控技術[J]. 2008,27(10):79-84.
[6] 朱飛龍,楊鳴.基于IAP功能單片機的遠程更新系統設計[J]. 機電工程,2010,27(9):76-79.
[7] GAST M. 802.11 wireless networks[M]. The definitive guide.O′Reilly Media, 2005.
[8] Texas Instruments. CC1110 Data sheet[EB/OL].[2008-7-11]http://www.ti.com.
[9] TI Application Note AN101.Boot loader for CC2510,CC2511,CC1110 and CC1111SoC (System-on-Chip) Transceivers [EB/OL]. [2011-09-08].http://www.ti.com.
[10] KIM J S, BROAD A. Network reprogramming [R]. University of California at Berkeley, Berkeley,CA,USA, 2003.