《电子技术应用》

基于模拟BIOS的可穿戴设备固件在线升级实现

2017年电子技术应用第3期
何国锋,李月婷,刘宇红
(贵州大学 大数据与信息工程学院,贵州 贵阳550025)
摘要: 可穿戴设备需要不断地进行系统升级以达到良好的用户体验度,产品升级方法和安全性是最为直观的用户体验。针对以MSP430芯片为核心的可穿戴设备,通过研究芯片内部的程序启动方式,借鉴了计算机中BIOS启动加载系统的方法,将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.

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 在线升级总体架构

    可穿戴设备进行固件在线升级时,首先要接收服务器推送的最新固件包。图1为升级包从服务器到达设备中的过程图,对于能够连接互联网的设备,可以直接内嵌一个到服务器的接口,直接下载升级包,如图中虚线所示;对于许多体积小无法连接网络的设备,如常见的智能手环,可以如图中实线所示,通过手机从网络中接收升级包,然后通过蓝牙等无线方式下载到设备中。

qrs5-t1.gif

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中,运行系统。

qrs5-t2.gif

    基于这种思想,本文模拟设计了一段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”);

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会将固件包通过蓝牙下发到设备中。用户程序在接收固件包的同时,将固件包保存在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频段上,可以连接多个设备,方便数据共享传输。蓝牙通信无需取得执照许可,因此被广泛用于工业、医疗、手机、平板等电子设备中。

3.2 蓝牙模块

    设计中采用了BLK-MD-HC-05蓝牙模块,该模块采用了英国CSR公司的BlueCore4-Ext芯片,遵循V2.0+EDR蓝牙规范[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] 耿怡,安晖,李扬,等.可穿戴设备发展现状和前景探析[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. 



作者信息:

何国锋,李月婷,刘宇红

(贵州大学 大数据与信息工程学院,贵州 贵阳550025)

继续阅读>>