《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于模擬BIOS的可穿戴設(shè)備固件在線升級實(shí)現(xiàn)
基于模擬BIOS的可穿戴設(shè)備固件在線升級實(shí)現(xiàn)
2017年電子技術(shù)應(yīng)用第3期
何國鋒,,李月婷,,劉宇紅
貴州大學(xué) 大數(shù)據(jù)與信息工程學(xué)院,貴州 貴陽550025
摘要: 可穿戴設(shè)備需要不斷地進(jìn)行系統(tǒng)升級以達(dá)到良好的用戶體驗(yàn)度,,產(chǎn)品升級方法和安全性是最為直觀的用戶體驗(yàn),。針對以MSP430芯片為核心的可穿戴設(shè)備,,通過研究芯片內(nèi)部的程序啟動方式,借鑒了計(jì)算機(jī)中BIOS啟動加載系統(tǒng)的方法,,將Flash劃分成不同空間,,一塊內(nèi)固化了BIOS程序,模擬計(jì)算機(jī)BIOS,,另外兩塊空間模擬了C盤和光驅(qū),,實(shí)現(xiàn)了一種在線升級方案。
中圖分類號: TN609,;TP368.1
文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.2017.03.015
中文引用格式: 何國鋒,,李月婷,劉宇紅. 基于模擬BIOS的可穿戴設(shè)備固件在線升級實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2017,,43(3):63-65,,69.
英文引用格式: He Guofeng,Li Yueting,,Liu Yuhong. Firmware online upgrade implementation for wearable devices based on simulating BIOS[J].Application of Electronic Technique,,2017,43(3):63-65,,69.
Firmware online upgrade implementation for wearable devices based on simulating BIOS
He Guofeng,,Li Yueting,Liu Yuhong
College of Big Data and Information Engineering,,Guizhou University,,Guiyang 550025,China
Abstract: Wearable devices need to upgrade its system constantly in order to achieve a good user experience,,and in this process,,product update method and security make the most intuitive. Focusing on the wearable devices based on MSP430 MCU,though studying how the program start inside the chip and then referencing the step of how BIOS load system on computer,,this paper diveded the Flash into different spaces,one for BIOS,and the other two were simulated to C drive and CD-ROM.At last,,it released a scheme for online update.
Key words : wearable device;online upgrade,;BIOS,;embedded;Flash

0 引言

    據(jù)統(tǒng)計(jì),,2013年全球可穿戴設(shè)備出貨量在700萬件以上[1],,2014年則達(dá)到了2 890萬件,國內(nèi)市場規(guī)模更是達(dá)到了22億人民幣,,年增長率在144%[2],, 2015年全球可穿戴設(shè)備出貨量已達(dá)到7 610萬件,與2014年相比增長了163.6%,,預(yù)計(jì)2016年年底,,可穿戴設(shè)備的出貨量將達(dá)到1.1億。如此龐大數(shù)量的產(chǎn)品想要長期保持市場的占有量與使用性能,,就要對產(chǎn)品進(jìn)行周期性的優(yōu)化與升級,,使產(chǎn)品在使用過程中修正BUG,優(yōu)化,、增加新的功能,。對產(chǎn)品進(jìn)行固件升級有多種方式,如JTAG,、BSL等,,這些方式只適用于產(chǎn)品未出廠時(shí)使用,,對于已經(jīng)售出的產(chǎn)品,就需要通過互聯(lián)網(wǎng),、無線傳輸?shù)确椒?,隨時(shí)控制更新產(chǎn)品中的固件,以發(fā)揮可穿戴設(shè)備的性能,。這些對于固件的更新,,將對用戶的體驗(yàn)度產(chǎn)生很大的影響。本文以基于MSP430F1611為處理器的可穿戴設(shè)備為例,,通過模擬BIOS程序,,對Flash分塊操作來實(shí)現(xiàn)設(shè)備的固件升級。

1 在線升級總體架構(gòu)

    可穿戴設(shè)備進(jìn)行固件在線升級時(shí),,首先要接收服務(wù)器推送的最新固件包,。圖1為升級包從服務(wù)器到達(dá)設(shè)備中的過程圖,對于能夠連接互聯(lián)網(wǎng)的設(shè)備,,可以直接內(nèi)嵌一個(gè)到服務(wù)器的接口,,直接下載升級包,如圖中虛線所示,;對于許多體積小無法連接網(wǎng)絡(luò)的設(shè)備,,如常見的智能手環(huán),可以如圖中實(shí)線所示,,通過手機(jī)從網(wǎng)絡(luò)中接收升級包,,然后通過藍(lán)牙等無線方式下載到設(shè)備中。

qrs5-t1.gif

2 固件升級原理

2.1 系統(tǒng)從Flash啟動過程

    MSP430F1611單片機(jī)[3]是德州儀器公司推出的一款具有10 KB片內(nèi)RAM和48 KB+256 B片內(nèi)Flash的16 bit超低功耗處理器,,擁有豐富的外設(shè)資源,,常被用在智能可穿戴設(shè)備中,以達(dá)到低功耗的目的,。

    從MSP430F1611數(shù)據(jù)手冊上可以查找到內(nèi)部資源空間地址表,。其中0x4000~0xFFFF為Flash地址空間,共48 KB,,這其中從0xFFE0~0xFFFF為中斷向量地址,,其他空間都可以由用戶進(jìn)行操作。當(dāng)向芯片中燒寫程序時(shí),,程序代碼被寫入到Flash中,寫入的起始位置即程序的入口地址,。系統(tǒng)上電后,,PC指針指到中斷向量表的復(fù)位向量,從中讀取程序起始地址入口,,然后跳轉(zhuǎn)到這個(gè)入口處執(zhí)行程序,。這個(gè)地址在代碼編譯過程中會自動生成,,用戶可以修改,指定將固件燒寫到Flash中其他地址,。

2.2 自動更新原理

    圖2為計(jì)算機(jī)中BIOS程序引導(dǎo)操作系統(tǒng)過程的簡化框圖,。在計(jì)算機(jī)上電時(shí),會啟用固化在主板空間內(nèi)的一段BIOS引導(dǎo)程序進(jìn)入POST階段,,該階段主要工作為初始化和檢測相關(guān)的硬件資源,。然后進(jìn)入操作系統(tǒng)引導(dǎo)階段,首先根據(jù)BIOS設(shè)置來檢測光驅(qū)或U盤中有無引導(dǎo)系統(tǒng),,如果有則將引導(dǎo)系統(tǒng)加入到內(nèi)存0000:7C00H中,,執(zhí)行引導(dǎo)系統(tǒng);如果沒有,,則搜索硬盤第一個(gè)扇區(qū),,將內(nèi)容加載到內(nèi)存0000:7C00H中,運(yùn)行系統(tǒng),。

qrs5-t2.gif

    基于這種思想,,本文模擬設(shè)計(jì)了一段BIOS引導(dǎo)程序,將Flash劃分區(qū)域,,一塊相當(dāng)于光驅(qū),,起始地址記為A,一塊相當(dāng)于C盤,,起始地址記為C,。在系統(tǒng)上電時(shí),檢測Flash上A地址后有無新版固件,,如果有,,則將該固件復(fù)制到Flash上地址C后的空間,完成從光驅(qū)安裝系統(tǒng)到C盤,。復(fù)制完成后刪除A空間內(nèi)容,,相當(dāng)于光驅(qū)彈出的動作,重啟系統(tǒng),;如果檢測到起始地址為A的空間內(nèi)無文件存在,,則通過匯編指令,將PC指針指到C地址,,系統(tǒng)將從C盤啟動,。總體架構(gòu)流程圖如圖3所示,,其中用虛線圍起來的部分不屬于BIOS引導(dǎo)程序中的內(nèi)容,,而是操作系統(tǒng),即用戶程序,。這樣,,單片機(jī)中相當(dāng)于有2個(gè)程序:1個(gè)BIOS程序,,1個(gè)用戶程序。在開機(jī)時(shí)進(jìn)入BIOS,,由BIOS決定是否將程序入口指針切換到用戶程序,。切換到用戶程序需使用匯編指令將PC指針移到用戶程序的復(fù)位向量地址0xFFDE中指向的地址[4],即C盤起始地址:

    asm(“mov &0xFFDE”);

qrs5-t3.gif

    因?yàn)樵贔lash中重新為用戶程序分配了中斷向量表,,需要使用匯編指令對15個(gè)中斷向量表進(jìn)行映射[6],。如對第一個(gè)中斷向量映射的代碼如下:

    #pragma vector=0

    __interrupt void intec_0(void)

    {

        asm(“br &0xFFC0”);

    }

2.3 BIOS引導(dǎo)程序固化

    BIOS引導(dǎo)程序編寫完成后,需要修改工程中的xcl文件,,將BIOS引導(dǎo)程序固化到指定位置,,芯片的主Flash地址范圍為0x4000~0xFFFF,其中0xFFE0~0xFFF為中斷向量表,,其余的為用戶空間,。將用戶空間分成4部分,如圖4所示,,整個(gè)灰色部分為原來的用戶空間,。其中0x4000~0x5FFF為BIOS程序空間;0x6000~0xAFFF為用戶程序空間,,類似電腦上的C盤,; 0xB000~0xFFBF為存儲空間,類似電腦上的光驅(qū),,用來存儲接收到的新固件,;0xFFC0~0xFFDF為用戶中斷向量表。修改xcl文件[4,,5],,將BIOS程序代碼段、常量的地址范圍改為0x6000~0xAFFF后編譯工程,,將生成的BIOS文件通過下載器燒寫到單片機(jī)中,,完成BIOS引導(dǎo)程序的固化。

qrs5-t4.gif

2.4 用戶程序?qū)崿F(xiàn)

    用戶程序的實(shí)現(xiàn)需要通過藍(lán)牙連接手機(jī)或電腦App,,當(dāng)有新版本的固件包時(shí),,App會將固件包通過藍(lán)牙下發(fā)到設(shè)備中。用戶程序在接收固件包的同時(shí),,將固件包保存在0xB000~0xFFBF范圍內(nèi)的Flash空間中,,本設(shè)計(jì)因?yàn)橛脩舫绦虼a量少,將程序保存在0xB000地址后,,如果用戶程序過大,,可以考慮通過擴(kuò)展片外Flash解決。用戶程序流程圖如圖5所示,。

qrs5-t5.gif

    用戶程序需要放在0x6000~0xAFFF范圍內(nèi),,因此同樣需要修改工程文件中的xcl文件,修改代碼段,、常量的地址范圍為0x6000~0xAFFF,。另外因?yàn)樵袛嘞蛄康刂繁籅IOS程序所占據(jù),需要修改xcl文件中的中斷向量地址為0xFFC0~0xFFDF,,重啟向量地址為0xFFDE,。要將應(yīng)用程序作為固件更新包推送到設(shè)備終端,因此要選擇生成txt格式的16進(jìn)制Hex文件,。圖6所示是一簡單的文件生成的txt文件內(nèi)容,,傳輸過程中可以考慮加密及錯(cuò)誤驗(yàn)證。

qrs5-t6.gif

    圖6中@6000代表程序的起始地址為6000,,這段代碼會被放在以0x6000為起始地址的Flash內(nèi),;@FFDE表示程序的復(fù)位向量地址為0xFFDE,其中保存子程序入口地址,,即0x6000,;q表示程序結(jié)束。

3 藍(lán)牙通信

3.1 藍(lán)牙技術(shù)簡介

    為了實(shí)現(xiàn)無線接收,,本文在設(shè)備上使用了藍(lán)牙技術(shù)來進(jìn)行數(shù)據(jù)傳送,。藍(lán)牙技術(shù)[6]最初是在1994年時(shí)由電信巨頭愛立信公司推出,用來替代RS232標(biāo)準(zhǔn)的一種短距離(10 m~100 m)無線通信技術(shù),。藍(lán)牙通信工作在2.4 GHz ISM頻段上,,可以連接多個(gè)設(shè)備,方便數(shù)據(jù)共享傳輸,。藍(lán)牙通信無需取得執(zhí)照許可,,因此被廣泛用于工業(yè)、醫(yī)療,、手機(jī),、平板等電子設(shè)備中。

3.2 藍(lán)牙模塊

    設(shè)計(jì)中采用了BLK-MD-HC-05藍(lán)牙模塊,,該模塊采用了英國CSR公司的BlueCore4-Ext芯片,,遵循V2.0+EDR藍(lán)牙規(guī)范[7],支持UART,、USB,、SPI、PCM,、SPDIF等豐富的接口,,支持AT指令集,簡化了操作,。圖7為藍(lán)牙模塊架構(gòu)與MCU之間通過UART口連接圖,。

qrs5-t7.gif

3.3 AT指令配置藍(lán)牙模塊

    在使用藍(lán)牙模塊前需要通過串口通信對藍(lán)牙模塊初始化,,BLK-MD-HC-05支持AT指令,藍(lán)牙模塊默認(rèn)的波特率為9 600,,因此串口需要調(diào)整到9 600后方能與藍(lán)牙模塊進(jìn)行數(shù)據(jù)交互,。表1為藍(lán)牙模塊初始化需要用到的AT指令。

qrs5-b1.gif

4 結(jié)語

    本文通過模擬BIOS來實(shí)現(xiàn)固件更新,,經(jīng)過不同大小的固件包反復(fù)推送測試,,可以順利地完成在線升級。升級過程安全可靠,,具有較好的可行性,,在應(yīng)用中,將推送的升級包進(jìn)行加密和解密過程,,會更加完善,。同時(shí),本文將Flash進(jìn)行分割,,其中一部分作為BIOS和光驅(qū)空間,,雖然犧牲了Flash空間,但通常情況下Flash空間都會有剩余,,不會造成對可靠性的影響,。

參考文獻(xiàn)

[1] 耿怡,安暉,,李揚(yáng),,等.可穿戴設(shè)備發(fā)展現(xiàn)狀和前景探析[J].電子科學(xué)與技術(shù),2014(2):238-245.

[2] 鄧俊杰,,劉紅.可穿戴智能設(shè)備的現(xiàn)狀及未來發(fā)展趨勢展望[J].黑龍江科技信息,,2015(28):135.

[3] Texas Instruments.MSP430x1xx family user's guide[EB/OL].[2006-02-28].http://www.ti.com.cn/cn/lit/ug/slau049f/slau049f.pdf.

[4] 喬海坤.微控論壇特約,DC,,微控論壇版主.MSP430程序自升級的實(shí)現(xiàn)原理及過程[EB/OL][2008-12-08].http:www.microcontrol.cn.

[5] 張園,,萬眾.MSP430單片機(jī)串口的程序升級方法[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2011(10):23-24.

[6] 張群,,楊絮.藍(lán)牙模塊串口通信的設(shè)計(jì)與實(shí)現(xiàn)[J].實(shí)驗(yàn)室研究與探索,,2012,319(3):79-82.

[7] 練杰,,聶俊飛.基于MSP430單片機(jī)的多功能藍(lán)牙溫度檢測系統(tǒng)[J].儀表技術(shù),,2015(8):36-38. 



作者信息:

何國鋒,李月婷,,劉宇紅

(貴州大學(xué) 大數(shù)據(jù)與信息工程學(xué)院,,貴州 貴陽550025)

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