《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于模擬BIOS的可穿戴設備固件在線升級實現
基于模擬BIOS的可穿戴設備固件在線升級實現
2017年電子技術應用第3期
何國鋒,李月婷,劉宇紅
貴州大學 大數據與信息工程學院,貴州 貴陽550025
摘要: 可穿戴設備需要不斷地進行系統(tǒng)升級以達到良好的用戶體驗度,產品升級方法和安全性是最為直觀的用戶體驗。針對以MSP430芯片為核心的可穿戴設備,通過研究芯片內部的程序啟動方式,借鑒了計算機中BIOS啟動加載系統(tǒng)的方法,將Flash劃分成不同空間,一塊內固化了BIOS程序,模擬計算機BIOS,另外兩塊空間模擬了C盤和光驅,實現了一種在線升級方案。
中圖分類號: TN609;TP368.1
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2017.03.015
中文引用格式: 何國鋒,李月婷,劉宇紅. 基于模擬BIOS的可穿戴設備固件在線升級實現[J].電子技術應用,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 引言

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

1 在線升級總體架構

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

qrs5-t1.gif

2 固件升級原理

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

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

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

2.2 自動更新原理

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

qrs5-t2.gif

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

    asm(“mov &0xFFDE”);

qrs5-t3.gif

    因為在Flash中重新為用戶程序分配了中斷向量表,需要使用匯編指令對15個中斷向量表進行映射[6]。如對第一個中斷向量映射的代碼如下:

    #pragma vector=0

    __interrupt void intec_0(void)

    {

        asm(“br &0xFFC0”);

    }

2.3 BIOS引導程序固化

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

qrs5-t4.gif

2.4 用戶程序實現

    用戶程序的實現需要通過藍牙連接手機或電腦App,當有新版本的固件包時,App會將固件包通過藍牙下發(fā)到設備中。用戶程序在接收固件包的同時,將固件包保存在0xB000~0xFFBF范圍內的Flash空間中,本設計因為用戶程序代碼量少,將程序保存在0xB000地址后,如果用戶程序過大,可以考慮通過擴展片外Flash解決。用戶程序流程圖如圖5所示。

qrs5-t5.gif

    用戶程序需要放在0x6000~0xAFFF范圍內,因此同樣需要修改工程文件中的xcl文件,修改代碼段、常量的地址范圍為0x6000~0xAFFF。另外因為原中斷向量地址被BIOS程序所占據,需要修改xcl文件中的中斷向量地址為0xFFC0~0xFFDF,重啟向量地址為0xFFDE。要將應用程序作為固件更新包推送到設備終端,因此要選擇生成txt格式的16進制Hex文件。圖6所示是一簡單的文件生成的txt文件內容,傳輸過程中可以考慮加密及錯誤驗證。

qrs5-t6.gif

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

3 藍牙通信

3.1 藍牙技術簡介

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

3.2 藍牙模塊

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

qrs5-t7.gif

3.3 AT指令配置藍牙模塊

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

qrs5-b1.gif

4 結語

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

參考文獻

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

[2] 鄧俊杰,劉紅.可穿戴智能設備的現狀及未來發(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程序自升級的實現原理及過程[EB/OL][2008-12-08].http:www.microcontrol.cn.

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

[6] 張群,楊絮.藍牙模塊串口通信的設計與實現[J].實驗室研究與探索,2012,319(3):79-82.

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



作者信息:

何國鋒,李月婷,劉宇紅

(貴州大學 大數據與信息工程學院,貴州 貴陽550025)

此內容為AET網站原創(chuàng),未經授權禁止轉載。