《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于CC1110單片機(jī)的無(wú)線升級(jí)方法研究
基于CC1110單片機(jī)的無(wú)線升級(jí)方法研究
來(lái)源:電子技術(shù)應(yīng)用2012年第11期
生鳳中, 荊 雷, 李建業(yè)
燕山大學(xué) 信息科學(xué)與工程學(xué)院,河北 秦皇島 066004
摘要: 針對(duì)現(xiàn)有嵌入式設(shè)備無(wú)線升級(jí)方法中存在的占用資源多、升級(jí)程序類(lèi)型不靈活以及功耗消耗大等問(wèn)題,設(shè)計(jì)了一種基于CC1110無(wú)線單片機(jī)的應(yīng)用程序裝載系統(tǒng)來(lái)實(shí)現(xiàn)應(yīng)用程序的無(wú)縫切換。介紹了系統(tǒng)無(wú)線升級(jí)的模型及方法,并分析了裝載程序的長(zhǎng)度和無(wú)線傳輸數(shù)據(jù)包長(zhǎng)度與裝載時(shí)間及能量消耗的關(guān)系。經(jīng)試驗(yàn)平臺(tái)測(cè)試表明,該方案具有較強(qiáng)的可靠性、及時(shí)性、靈活性和較好的節(jié)能性。
中圖分類(lèi)號(hào): TP368.1;TP311
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 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ù)、計(jì)算機(jī)技術(shù)和通信技術(shù)的迅猛發(fā)展,單片機(jī)、DSP等嵌入式系統(tǒng)已廣泛應(yīng)用于工業(yè)、軍事、通信、及家電等領(lǐng)域。但嵌入式設(shè)備在安裝部署方面的局限性使得傳統(tǒng)的在線升級(jí)程序的方法難以實(shí)現(xiàn)。而應(yīng)用可編程IAP(In Application Programming)技術(shù)為嵌入式系統(tǒng)無(wú)線升級(jí)程序提供了良好的解決方案,并受到廣泛關(guān)注[1-2]。

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

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

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

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

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

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

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

3 實(shí)例分析及評(píng)價(jià)
3.1 程序裝載時(shí)間與裝載程序代碼長(zhǎng)度的關(guān)系

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

 

 

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