《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于CC1110單片機的無線升級方法研究
基于CC1110單片機的無線升級方法研究
來源:電子技術(shù)應(yīng)用2012年第11期
生鳳中, 荊 雷, 李建業(yè)
燕山大學(xué) 信息科學(xué)與工程學(xué)院,河北 秦皇島 066004
摘要: 針對現(xiàn)有嵌入式設(shè)備無線升級方法中存在的占用資源多、升級程序類型不靈活以及功耗消耗大等問題,設(shè)計了一種基于CC1110無線單片機的應(yīng)用程序裝載系統(tǒng)來實現(xiàn)應(yīng)用程序的無縫切換。介紹了系統(tǒng)無線升級的模型及方法,并分析了裝載程序的長度和無線傳輸數(shù)據(jù)包長度與裝載時間及能量消耗的關(guān)系。經(jīng)試驗平臺測試表明,該方案具有較強的可靠性、及時性、靈活性和較好的節(jié)能性。
關(guān)鍵詞: Bootloader CC1110 IAP 無線升級
中圖分類號: TP368.1;TP311
文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2012)11-0139-04
Research of wireless upgrade method based on CC1110 MCU
Sheng Fengzhong, Jing Lei, Li Jianye
Institute of Information Science and Technology, Yanshan University, Qinhuangdao 066004, China
Abstract: Aiming at the problems for existing embedded equipment that occupy large resources, the type of upgrading program is not flexible and high power consumption. A wireless program upgrading system based on CC1110 SCM to seamlessly switch on-demand applications is designed. Introduce the system of wireless upgrade model and method, analyzes the relationship of among the length of the loading program, wireless transmission packet length, loading time and the energy consumption. The test platform shows that this scheme has a strong reliability, acceptable delay, flexibility, good energy efficiency.
Key words : Boot Loader; CC1110; IAP; wireless upgrade

    隨著電子技術(shù)、計算機技術(shù)和通信技術(shù)的迅猛發(fā)展,單片機、DSP等嵌入式系統(tǒng)已廣泛應(yīng)用于工業(yè)、軍事、通信、及家電等領(lǐng)域。但嵌入式設(shè)備在安裝部署方面的局限性使得傳統(tǒng)的在線升級程序的方法難以實現(xiàn)。而應(yīng)用可編程IAP(In Application Programming)技術(shù)為嵌入式系統(tǒng)無線升級程序提供了良好的解決方案,并受到廣泛關(guān)注[1-2]。

    建立備份數(shù)據(jù)區(qū)的機制[3],采用設(shè)計應(yīng)用程序鏡像文件存儲區(qū)的方法對Flash的布局進(jìn)行重新設(shè)計,實現(xiàn)嵌入式設(shè)備遠(yuǎn)程自動更新,達(dá)到更新升級程序的目的。但該方法只能更新比現(xiàn)有程序版本更高的程序,靈活性較差?;贕PRS(General Packet Radio Service)的無線升級方法[4],通過GPRS網(wǎng)絡(luò)將要升級的程序代碼傳輸下載到目標(biāo)終端,然后采用IAP技術(shù)進(jìn)行軟件的升級,該方法具有GPRS遠(yuǎn)程、高速傳輸?shù)奶攸c。但采用GPRS技術(shù)需要支付相關(guān)費用,并且對系統(tǒng)資源要求較高。基于Zigbee的無線升級方法[5],通過Zigbee無線網(wǎng)絡(luò)技術(shù)進(jìn)行更新程序代碼數(shù)據(jù)傳輸,采用IAP技術(shù)對嵌入式設(shè)備進(jìn)行程序的在線升級,該方法具有快捷簡便、硬件成本低及通信誤碼率低等優(yōu)點。然而使用Zigbee協(xié)議較為復(fù)雜,需要2.4 GHz的載波頻率,資源和能量消耗較多。
   本文提出了無線升級程序的方法,嵌入式設(shè)備載波頻率采用ISM頻段的433 MHz,通過簡單可靠的無線通信協(xié)議進(jìn)行程序代碼的傳輸,終端設(shè)備接收到代碼數(shù)據(jù)后,采用IAP技術(shù)進(jìn)行程序的無縫切換。該方法需要的硬件資源較少,協(xié)議簡單可靠,能夠有效減少來自同頻電波和障礙物的干擾,裝載延時可在人們的容忍限度之內(nèi),能量消耗較少。
1 系統(tǒng)無線升級模型與方法
1.1 無線系統(tǒng)升級模型

  嵌入式設(shè)備的無線升級系統(tǒng)主要由服務(wù)器設(shè)備、終端設(shè)備兩部分組成。設(shè)備之間通過無線通信技術(shù)進(jìn)行裝載程序代碼的傳輸。通過IAP技術(shù)進(jìn)行程序的更新與升級[6,10],由此實現(xiàn)嵌入式設(shè)備的無線升級, 程序結(jié)構(gòu)如圖1所示。

1.2 無線系統(tǒng)升級方法
    在IAP編程模式中,嵌入式設(shè)備內(nèi)部在結(jié)構(gòu)上有兩塊存儲區(qū),一塊被稱為Boot Loader區(qū);另外一塊被稱為用戶裝載程序區(qū)。設(shè)備上電運行在Boot Loader區(qū),如果滿足外部改寫程序的條件,則對用戶裝載程序區(qū)的程序進(jìn)行改寫操作,程序指針跳到用戶裝載程序區(qū)完成程序切換。本系統(tǒng)所涉及的關(guān)鍵技術(shù)主要包括:無線通信協(xié)議、內(nèi)存映射、用戶裝載程序代碼的生成和中斷向量的處理。
    (1) 無線通信協(xié)議
    本系統(tǒng)采用點對點無線通信協(xié)議。通信時首先采用基本的請求/應(yīng)答握手機制來占用通信媒介(類似于IEEE802.11協(xié)議[7]中的RTS/CTS機制),可以有效地防止干擾信號和誤操作的產(chǎn)生。為了保證傳輸代碼的可靠性和有效性,在通信協(xié)議中采用應(yīng)答機制和錯誤重傳機制。本系統(tǒng)采用的無線通信協(xié)議如圖2所示,如果終端設(shè)備發(fā)送裝載程序請求幀(REQ),服務(wù)器設(shè)備接收到請求幀后將提取幀信息發(fā)送至應(yīng)答幀(MACK),應(yīng)答幀指示終端設(shè)備進(jìn)行接收代碼準(zhǔn)備,并與服務(wù)器設(shè)備采用的應(yīng)答機制和錯誤重傳機制進(jìn)行程序代碼傳輸。

    (2) 內(nèi)存映射
    為了保證系統(tǒng)的可靠運行,需要將單片機Flash內(nèi)存分為Boot Loader代碼區(qū)和用戶裝載程序代碼區(qū)。Boot Loader代碼區(qū)用來存放Boot Loader代碼,由于單片機結(jié)構(gòu)及軟件編程的特點將Boot Loader代碼區(qū)開辟在0X0000~0X1FFF區(qū)域[8-9],用戶需要裝載的程序存儲在0X2000~0X7FFF區(qū)域。
    (3) 用戶裝載程序代碼的生成
    為了使裝載程序有效地運行在終端設(shè)備,服務(wù)器設(shè)備中裝載程序代碼的生成同樣需要在code區(qū)開辟的0X2000~0X7FFF區(qū)域。生成方法即在IAR嵌入式編譯環(huán)境中,將鏈表code區(qū)的-D_CODE_START=0X0000修改為-D_CODE_START=0x2000。
    (4) 中斷向量的處理
    由于Boot Loader存儲區(qū)域和用戶裝載程序在Flash中的code區(qū)域不同,如果程序采用中斷功能,則會面臨中斷向量沖突問題。本文采用在 Boot Loader中調(diào)用仲裁函數(shù)方法進(jìn)行處理,仲裁函數(shù)就是Boot Loader中的中斷服務(wù)程序。當(dāng)中斷發(fā)生在Boot Loader時,則執(zhí)行Boot Loader中的函數(shù),中斷發(fā)生在用戶裝載程序時,則執(zhí)行跳轉(zhuǎn)指令(LJMP 0X2000+中斷向量值),跳轉(zhuǎn)到裝載執(zhí)行程序中相應(yīng)的位置。
2 無線升級系統(tǒng)的軟硬件實現(xiàn)
2.1系統(tǒng)硬件實現(xiàn)

    本系統(tǒng)使用兩個TI公司提供的具有無線收發(fā)功能的CC1110F32單片機[8]作為節(jié)點。其中一個作為服務(wù)器節(jié)點(SN),另一個作為終端節(jié)點(EN)。SN負(fù)責(zé)發(fā)送程序代碼,EN就是需要裝載程序的單片機。硬件系統(tǒng)框圖如圖3所示。

    通過TI提供的SmartRFStudio軟件進(jìn)行發(fā)送與接收寄存器的配置,載波頻率為433 MHz,無線調(diào)制方式為GFSK,數(shù)據(jù)傳輸率設(shè)置為38.4 kBaud。
2.2 系統(tǒng)軟件設(shè)計流程
2.2.1服務(wù)器節(jié)點的流程

    服務(wù)器節(jié)點用于將終端節(jié)點請求裝載的程序代碼發(fā)送到終端節(jié)點。服務(wù)器節(jié)點上電運行(或者軟件復(fù)位)后,首先進(jìn)行硬件平臺初始化,包括CPU及外設(shè)的初始化、無線模塊的初始化等。然后打開無線接收模塊,等待接收終端節(jié)點的裝載代碼請求,接收到請求后將代碼分段傳輸,無線通信采用請求/應(yīng)答/數(shù)據(jù)/應(yīng)答通信機制進(jìn)行代碼的傳輸。此協(xié)議采用錯誤重發(fā)機制保證代碼有效可靠地傳輸。
2.2.2 終端節(jié)點的流程
    終端節(jié)點即進(jìn)行無線更新升級程序的節(jié)點。終端節(jié)點上電運行(或者軟件復(fù)位)后,首先進(jìn)行硬件平臺的初始化,包括CPU及外設(shè)的初始化、無線模塊的初始化等。如果需要進(jìn)行無線升級,則首先將系統(tǒng)復(fù)位(按下復(fù)位按鍵進(jìn)行復(fù)位),然后執(zhí)行Boot Loader程序,等待用戶按鍵選擇裝載程序類型。選定裝載程序后,將裝載請求發(fā)送至服務(wù)器節(jié)點,然后采用請求/應(yīng)答/數(shù)據(jù)/應(yīng)答通信機制分段接收程序代碼,并對接收的每一段代碼進(jìn)行CRC校驗,判斷接收是否正確,通過向服務(wù)器節(jié)點發(fā)送應(yīng)答信號來指示該段代碼的接收情況。終端節(jié)點在無線更新升級程序中的工作流程如圖4所示。

3 實例分析及評價
3.1 程序裝載時間與裝載程序代碼長度的關(guān)系

    為了研究裝載時間與裝載代碼長度以及傳輸數(shù)據(jù)包長度的關(guān)系,采用5種不同長度的裝載程序代碼進(jìn)行測試,對于每種長度的程序分別采用240 B、128字節(jié)和64 B的數(shù)據(jù)包進(jìn)行傳輸。為了保證實驗數(shù)據(jù)的可靠性,對于每種長度的程序采用同一數(shù)據(jù)包長度傳輸時,分別進(jìn)行了10次測量,10次測量所用裝載的時間幾乎沒有差別(幾毫秒),對10次測量數(shù)據(jù)取平均值作為此次程序的裝載時間。在不同數(shù)據(jù)包長度傳輸情況下,裝載程序所用時間與裝載程序長度的關(guān)系如圖5所示。

 

 

3.2 不同裝載代碼長度與消耗能量的關(guān)系
    為了研究裝載程序所用功耗與裝載代碼長度以及傳輸數(shù)據(jù)包長度的關(guān)系,分別對3種不同長度的程序代碼進(jìn)行裝載測試。裝載程序長度分別為1 440 B、1 024 B、480 B。本實驗采用數(shù)據(jù)包長度(每幀傳輸?shù)拇a數(shù))分別為240 B、200 B、128 B和64 B。為了保證實驗數(shù)據(jù)的可靠性,對于每種長度的程序采用同一數(shù)據(jù)包長度傳輸時,分別進(jìn)行了10次測量,對10次測量功耗數(shù)據(jù)取平均值作為此次程序裝載的功耗。采用不同程序代碼長度進(jìn)行傳輸時,裝載程序所用功耗與每幀傳輸字節(jié)數(shù)的關(guān)系如圖6所示。
3.3 不同功能程序裝載切換實例測試
    為了驗證系統(tǒng)的可靠性,分別采用LED閃爍程序、按鍵中斷程序和串口通信程序進(jìn)行裝載切換測試,每種功能程序分別進(jìn)行了50次裝載測試,測試結(jié)果如表1所示。該系統(tǒng)裝載程序的成功率達(dá)到99%以上,并且所裝載的程序不受功能限制,具有較高的通用性、可靠性。由按鍵觸發(fā)裝載功能,使用方便靈活,易于操作。
3.4 系統(tǒng)評價
     通過對程序裝載時間、裝載程序長度、以及數(shù)據(jù)包長度的實驗測試可以明顯看出,采用同一數(shù)據(jù)包長度傳輸數(shù)據(jù)時,隨著裝載程序長度的增加,裝載延時也將延長,基本呈線性關(guān)系。對同一程序采用不同數(shù)據(jù)包長度時,數(shù)據(jù)包長度越大,則所耗費的時間越短,裝載長度為1 024 B時,若采用的數(shù)據(jù)包長度為64 B,則裝載時間為1 550 ms;而采用數(shù)據(jù)包長度為240 B時的裝載時間為820 ms。當(dāng)有沖突發(fā)生時,采用數(shù)據(jù)包越長,重傳時所用的無效傳輸數(shù)據(jù)越多,傳輸?shù)男试降汀R虼擞脩艨梢愿鶕?jù)需要選擇不同的數(shù)據(jù)包長度進(jìn)行傳輸,增加了系統(tǒng)的靈活性。
    傳輸數(shù)據(jù)的數(shù)據(jù)包越長,程序裝載所需的功耗越低, 程序長度為1 024 B,數(shù)據(jù)包長度為64 B時,平均功耗為275.8 mW;數(shù)據(jù)包長度為240 B時,則平均功耗為155.2 mW。裝載同一程序時,傳輸數(shù)據(jù)的數(shù)據(jù)包越長,裝載時間越短。因此可以得出隨著數(shù)據(jù)包長度的增加,裝載程序所消耗的能量越小。對于能量消耗要求嚴(yán)格的嵌入式設(shè)備(如手持電池供電設(shè)備、無線傳感器網(wǎng)絡(luò)節(jié)點等)進(jìn)行無線更新升級程序時,可以采用較大的數(shù)據(jù)包來裝載程序。
    本文設(shè)計了一種基于CC1110單片機的無線更新升級程序的應(yīng)用系統(tǒng)。經(jīng)測試驗證該系統(tǒng)具有較高的可靠性、及時性、靈活性、低功耗等特點,應(yīng)用方便靈活。對于解決應(yīng)用中的無線嵌入式設(shè)備程序升級是一種比較理想的方法。該方法通用性較強,適用于任何具有無線通信功能含有Flash單片機及嵌入式設(shè)備。
參考文獻(xiàn)
[1] 黃家升.基于IAP的單片機軟件遠(yuǎn)程升級[J]. 艦船電子對抗,2007,30(3):95-97.
[2] 冉曉蓉, 楊志義, 張凡, 等. 基于CAN總線在線更新機制的設(shè)計與實現(xiàn)[J]. 計算機工程與科學(xué), 2008,30(1):
125-128.
[3] 王恒,王颋,王泉,等. 基于Boot Loader的可靠嵌入式軟件遠(yuǎn)程更新機制[J].微計算機信息,2007,23(20):57-59.
[4] 陶維青, 王付軍,等.基于GPRS網(wǎng)絡(luò)的MSP430單片機Flash遠(yuǎn)程更新方法[J].電測與儀表,2007,44(7):33-36.
[5] 袁璐,宋華. 基于Zigbee和IAP的在線升級方案.測控技術(shù)[J]. 2008,27(10):79-84.
[6] 朱飛龍,楊鳴.基于IAP功能單片機的遠(yuǎn)程更新系統(tǒng)設(shè)計[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.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。