您的位置:首頁>科技>正文

基於類比BIOS的可穿戴設備固件線上升級實現

何國鋒, 李月婷, 劉宇紅

(貴州大學 大資料與資訊工程學院, 貴州 貴陽550025)

可穿戴設備需要不斷地進行系統升級以達到良好的使用者體驗度, 產品升級方法和安全性是最為直觀的用戶體驗。 針對以MSP430晶片為核心的可穿戴設備, 通過研究晶片內部的程式啟動方式, 借鑒了電腦中BIOS啟動載入系統的方法, 將Flash劃分成不同空間, 一塊內固化了BIOS程式, 類比電腦BIOS, 另外兩塊空間類比了C盤和光碟機, 實現了一種線上升級方案。

可穿戴設備;線上升級;BIOS;嵌入式;Flash

中圖分類號: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.

0 引言

據統計, 2013年全球可穿戴設備出貨量在700萬件以上[1], 2014年則達到了2 890萬件, 國內市場規模更是達到了22億人民幣, 年增長率在144%[2], 2015年全球可穿戴設備出貨量已達到7 610萬件, 與2014年相比增長了163.6%, 預計2016年年底, 可穿戴設備的出貨量將達到1.1億。 如此龐大數量的產品想要長期保持市場的佔有量與使用性能, 就要對產品進行週期性的優化與升級, 使產品在使用過程中修正BUG, 優化、增加新的功能。 對產品進行固件升級有多種方式, 如JTAG、BSL等, 這些方式只適用於產品未出廠時使用, 對於已經售出的產品, 就需要通過互聯網、無線傳輸等方法, 隨時控制更新產品中的固件, 以發揮可穿戴設備的性能。

這些對於固件的更新, 將對用戶的體驗度產生很大的影響。 本文以基於MSP430F1611為處理器的可穿戴設備為例, 通過類比BIOS程式, 對Flash分塊操作來實現設備的固件升級。

1 線上升級總體架構

2 固件升級原理

2.1 系統從Flash啟動過程

MSP430F1611單片機[3]是德州儀器公司推出的一款具有10 KB片內RAM和48 KB+256 B片內Flash的16 bit超低功耗處理器,

擁有豐富的外設資源, 常被用在智慧可穿戴設備中, 以達到低功耗的目的。

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

2.2 自動更新原理

圖2為電腦中BIOS程式引導作業系統過程的簡化框圖。 在電腦上電時,

會啟用固化在主機板空間內的一段BIOS引導程式進入POST階段, 該階段主要工作為初始化和檢測相關的硬體資源。 然後進入作業系統引導階段, 首先根據BIOS設置來檢測光碟機或U盤中有無引導系統, 如果有則將引導系統加入到記憶體0000:7C00H中, 執行引導系統;如果沒有, 則搜索硬碟第一個磁區, 將內容載入到記憶體0000:7C00H中, 運行系統。

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

asm(“mov &0xFFDE”);

因為在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]

2.4 使用者程式實現

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

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

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

3 藍牙通信

3.1 藍牙技術簡介

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

3.2 藍牙模組

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

3.3 AT指令配置藍牙模組

在使用藍牙模組前需要通過串口通信對藍牙模組初始化,BLK-MD-HC-05支援AT指令,藍牙模組預設的串列傳輸速率為9 600,因此串口需要調整到9 600後方能與藍牙模組進行資料交互。表1為藍牙模組初始化需要用到的AT指令。

4 結語

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

參考文獻

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

[2] 鄧俊傑,劉紅.可穿戴智慧設備的現狀及未來發展趨勢展望[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].單片機與嵌入式系統應用,2011(10):23-24.

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

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

1個使用者程式。在開機時進入BIOS,由BIOS決定是否將程式入口指標切換到使用者程式。切換到使用者程式需使用彙編指令將PC指標移到使用者程式的重定向量位址0xFFDE中指向的位址[4],即C盤起始位址:

asm(“mov &0xFFDE”);

因為在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]

2.4 使用者程式實現

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

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

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

3 藍牙通信

3.1 藍牙技術簡介

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

3.2 藍牙模組

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

3.3 AT指令配置藍牙模組

在使用藍牙模組前需要通過串口通信對藍牙模組初始化,BLK-MD-HC-05支援AT指令,藍牙模組預設的串列傳輸速率為9 600,因此串口需要調整到9 600後方能與藍牙模組進行資料交互。表1為藍牙模組初始化需要用到的AT指令。

4 結語

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

參考文獻

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

[2] 鄧俊傑,劉紅.可穿戴智慧設備的現狀及未來發展趨勢展望[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].單片機與嵌入式系統應用,2011(10):23-24.

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

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

Next Article
喜欢就按个赞吧!!!
点击关闭提示