嵌入式操作系统自更新机制的设计与应用

发布者:科技创新实践者最新更新时间:2009-02-02 来源: 单片机与嵌入式系统应用关键字:嵌入式系统  自更新机制  进程  Flash 手机看文章 扫描二维码
随时随地手机看文章

      引言

  随着嵌入式系统的发展和广泛应用,必不可少的维护工作变得日益繁重。如移动电话在用户使用过程中,部分未能在软件研发阶段发现的缺陷会逐渐暴露,不可避免地增加了维护成本。又如在设备运行期间,用户往往会基于原有软硬件对产品提出新功能或更高的性能要求,这对软件重用性提出了挑战。在移动设备数量较多, 而且使用地点无法预知的情况下, 采用传统的人工更新方式会耗费大量的人力物力。自更新技术在嵌入式系统中分为两个相互联系又相互独立的阶段:首先是将更新包下载至本地移动设备中,然后在本地移动设备中实现自更新。

  将自更新技术嵌入RTOS中的关键在于自更新后系统启动的稳定性。嵌入式移动系统一般都有独立的bootloader对系统进行初始化并引导加载内核。这种启动基于bootloader,该自更新机制决定了bootloader不仅仅起到加载内核镜像这一基本功能,而是被看作是一个虚拟系统。

  1 自更新机制的架构

  支持自更新功能的嵌入式系统由服务器端和客户端两部分组成。服务器端通过OMA协议,与客户端建立无线连接。客户端采用基于ARM9的微处理器,配有8MB的RAM和32 MB的NOR Flash存储器,及其他相关外围设备,具有相对可见的bootloader程序。自更新机制架构如图1所示。

图1 自更新机制架构图

  自更新机制总体流程如下: a. 设备厂商根据需求,生成包括升级到新版本或返回到旧版本的多个更新包。b. 这些更新包将被送至无线服务提供商处进行统一管理,并最终将更新包提供给用户。c. 在更新包提供给用户前,每个单独的移动设备将会选择最优方案(即网络提供商)。d. 服务器端通过传输机制(如OMADL 1.0协议标准或网络提供商标准)与客户端建立会话连接,客户端将下载并存储更新包。e. 更新应用程序将与用户交互以获得更新权限并进入更新进程。整个更新过程由bootloader完全控制,直到更新成功。f. 更新后的目标设备重启,并将更新结果发送至服务器端。

  2 更新系统的设计

  2.1 Flash 存储器的布局

  原有嵌入式系统Flash存储器的布局如图2(a)所示。系统启动时从Flash的首地址开始执行,而bootloader和RTOS都位于code区,也就是bootloader并不独立于内核。将原本与代码区相邻的文件系统区后移,用于存储更新包。这种布局也是很多嵌入式系统所采用的,尤其是许多商业系统。系统在更新过程中根据自更新算法与原有代码区进行比对,烧写到Flash中。这种Flash部署方法有一个致命的缺点,就是没有考虑到更新过程中可能遇到的突发事件。比如,在更新过程中因为不可预料的掉电使得烧写错误,完全可能导致软件更新后系统无法启动,出现这种情况后必须人工重新烧写原有软件。

图2 存储器布局

  为了在原有基础上使系统具有高稳定性与扩展性,需要对Flash进行重新布局, 如图2(b)所示。将代码区划分为两个区域:bootloader区,这个区域不可被擦写更新;RTOS区域,存放内核及应用程序。将更新包存储区设计为4部分。其中一个用来存储系统启动和更新过程的标识参数,这些数据极为重要,掉电后仍需保存于Flash中。另一个存储区用于存放更新时用到的更新包, 称为更新包区。第三个区域存储下载的更新包,称为更新包备份区。最后一个区域存放设备出厂时的软件版本。bootloader固定在第一个分区,这样的设计具有很强的可扩展性,涵盖了更新算法。为了使人机接口更人性化,此区域包括LCD及其控制器的驱动和应用程序,使更新过程对用户可见。系统启动时设置异常向量表,初始化内存、堆栈指针寄存器、I/O器件、系统需求的RAM变量,使能中断,然后根据启动地址和更新标识这两个参数跳转执行相应代码,每次更新都不改变bootloader区域的内容。其中,启动地址指向bootloader要执行的代码,更新标识用于记录更新阶段。

  2.2 更新进程的设计

  系统每次启动后, 服务器端主动报告当前有无可更新的软件包。如果客户端响应并发起会话,则随后检查Flash上的更新包备份区,存储下载的更新包,并更新标识。为了增强传输过程的安全性, 在应用层设计一套具有校验、确认和断点续传功能的收发协议, 以保证数据能够准确地通过移动通信系统传输到客户端。

  当更新包下载完毕后, 先将更新包由备份区拷贝至更新包区,更新进程根据已经设定的代码区在Flash中的地址,调用Flash的读写函数通过比对算法将更新包写入代码区。更新结束后设置标识,如果由于某种原因没有更新成功则标识位不变,系统复位后继续更新直到更新成功。可参考如下代码:

  更新进程的程序流程如图3 所示。

图3 更新进程流程

      2.3 更新后的启动流程

  通过以上更新流程,系统完成了一次软件版本的升级。重新部署Flash后,客户端具有相对独立的bootloader,并固化在Flash的低地址处,能够保证系统启动后总是先进入bootloader。bootloader通过读取对比标识存储区的启动地址参数来跳转执行代码。在正常情况下, 启动地址总是指向RTOS。当更新完成重新启动客户端后, bootloader便会引导新的镜像文件。

  为了确保软件更新后系统启动的稳定性,通过设计异常处理程序来加载代码备份存储区的文件防止系统瘫痪。当bootloader引导更新后的镜像文件失败后, 系统进入异常处理函数, 在此函数中将启动地址指向代码备份区,并设置标识位。代码备份区保存的是设备出厂时最初版本的image文件,具有非常高的稳定性,这样就保证系统功能正常运行,并确保服务器端与客户端正常通信。异常处理流程如图4所示。

图4 异常处理流程图

  当软件更新过程中遇到致命异常时,通过异常处理程序,系统能够重新启动备份的软件版本, 有效地提高了嵌入式系统自更新机制的安全性, 避免了系统彻底崩溃。

  3 测试

  为了评估自更新机制的稳定性和安全性,确保其适用于真实设备与网络,测试应尽可能覆盖现实情况中可能遇到的情况。用户能看到的升级性能主要有更新包下载时间和自更新时间。设备厂商关注的是高稳定性和安全性,以及更新包所占Flash的比例。测试中应考虑到各种版本,制作测试矩阵,然后按顺序测试,包括回退更新。

  在一个实际运行的移动设备中验证和测试更新机制的性能。首先测试更新进程的通信状况。结果表明, 每次均能正确地与服务器端建立会话,并进行数据传输;更新包均能通过无线网络准确下载并存储至客户端。测试的重点是系统更新结束后新程序启动的稳定性和安全性。对软件更新过程进行干扰,以测试bootloader能否正确启动。测试中模拟了两大类情况:一类是更新包随机挑选版本的相互升级,另一类是人为设置导致更新包出现不能启动错误的数据,然后进行升级。设计三种具体方案进行测试, 每个方案测试30 次,查看系统能否按预期结果启动程序。测试方案及结果如表1所列。

表1 启动可靠性测试结果

  从测试结果看出, 系统更新后,每次均能正确启动程序;此外,更新机制对代码区具有较强的修复能力,防止了由于数据异常而导致的无法启动。本更新机制能有效地提高嵌入式软件更新后重新启动的稳定性和可靠性。

  结语

  本文提出了一种具有较高稳定性和安全性、基于bootloader的嵌入式软件自动更新机制。该更新机制同时保存了3个文件, 需要较多的Flash存储空间,但同时降低了维护成本。其创新点在于设置1个标识区、3个程序存储区并设计了异常机制,提高了嵌入式系统更新过程的稳定性,尤其能够有效地防止软件更新后系统启动失败的情况,具有较高的实用价值。

关键字:嵌入式系统  自更新机制  进程  Flash 引用地址:嵌入式操作系统自更新机制的设计与应用

上一篇:Windows CE下基于TSC2101的音频系统设计
下一篇:U-Boot在基于S3C4480开发板上的移植

推荐阅读最新更新时间:2024-05-02 20:45

谷歌等公司成立RISE联盟,以加速RISC-V生态系统的软件进程
RISC-V 对 Arm 正在构成更大威胁,一个新的行业联盟计划通过加速 RISC-V 架构开源软件的开发来增加这种灭绝威胁。该联盟的成员本周宣布成立 RISC-V 软件生态系统 (RISE) 项目。 RISC -V指令集架构 (ISA) 是一种微处理器架构,始于 2010 年加州大学伯克利分校 (UC Berkeley) 的一个学术项目。从那时起,开源 RISC-V ISA一直呈现增长势头。 早在 1990 年代,Arm 处理器就大放异彩,几乎融入了每部手机的核心。在 2000 年代,他们又淘汰了大部分分散在嵌入式领域的专有微控制器 (MCU) 架构。 如今,Arm 越来越有可能在这些领域以及其他领域失去领导地位。虽
[嵌入式]
谷歌等公司成立RISE联盟,以加速RISC-V生态系统的软件<font color='red'>进程</font>
WAIC 2022:多维视角加速绿色计算进程,英特尔以“芯”之力推动数字化转型
WAIC 2022:多维视角加速绿色计算进程,英特尔以“芯”之力推动数字化转型 2022年9月1日,上海——今日,以 “智联世界 元生无界” 为主题的2022世界人工智能大会(WAIC 2022)拉开帷幕,英特尔公司高级首席工程师、视频事业部全球首席技术官、物联网事业部中国区首席技术官张宇博士在大会期间发表了以“用‘芯’助力基于绿色计算的数字化转型”为主题的演讲,全面阐述了英特尔如何通过产品设计和技术创新,以软硬件并行发展的战略赋能端到端智能数字基础架构,大力驱动绿色计算和绿色低碳数据中心的发展进程,助力加速“碳中和”与“碳达峰”目标的实现。 自2018年创办以来,作为人工智能行业极具国际影响力的顶尖盛会,世界人工
[嵌入式]
WAIC 2022:多维视角加速绿色计算<font color='red'>进程</font>,英特尔以“芯”之力推动数字化转型
物联网、5G以及人工智能的演进,兆易创新迎来巨大增长潜力
北京兆易创新科技股份有限公司于2005-04-06在北京市工商行政管理局登记成立。法定代表人朱一明,公司经营范围包括微电子产品、计算机软硬件、计算机系统集成等。 根据摩根斯坦利发布的报告,今年第二季度时,NOR Flash的库存为60天左右。第三季度NOR Flash产品基本会达到供需平衡,甚至需求超过供给。 NOR Flash做为通用型器件应用广泛,兆易创新重点专注6大应用领域,产品种类多样,例如宽电压、低功耗、高性能、大容量以及安全等针对不同特性已形成非常全面的产品体系。 但从去年Q4到今年Q1,受贸易战、需求放缓、信心不足等影响,市场环境不太景气;直到今年3月份之后,尤其Q2、Q3兆易创新的订单量逐渐提升。值得注
[嵌入式]
物联网、5G以及人工智能的演进,兆易创新迎来巨大增长潜力
图形液晶显示模块在嵌入式系统中的应用
      图形点阵式液晶显示模块具有尺寸小、功耗低、寿命长、成本低、可显示各种图像与文本信息等优点,因此在各种仪器仪表、电子设备、移动通讯及家用电器中得到广泛的应用 。本文结合笔者在“便携式电力故障录波仪”项目中的实践经验,着重介绍如何把液晶显示模块应用做嵌入式DSP系统人机界面的问题,仅用四个按键相互配合,通过软件编程实现多层菜单和动态波形的显示。软件部分采用C语言编制,模块化设计,具有很强的可移植性,可以直接应用到其他的嵌入式系统中。 1. 模块的工作原理 1.1 基本功能         OCM4×8C液晶显示模块是128×64点阵的汉字图形型液晶显示模块,内置国标GB2312码简体中文字库(16×16点阵)、126个字
[嵌入式]
外挂Flash的引导装载设计
1 Bootloader分析 TI公司的DSP芯片出厂时,在片内ROM中固化有引导装载程序Bootloader,其主要功能就是将外部的程序装载到片内RAM中运行,以提高系统的运行速度。 TMS320VC5409是TI公司的一款定点DSP芯片,其指令周期可达10ns,片内有32K%26;#215;16位的RAM,性价比极高,被广泛应用在嵌入式系统、数据采集系统中。TMS320VC5409的Bootloacler程序位于片内ROM的0F800H~0FBFFH空间。系统上电时,DSP将检查外部引脚MP/MC的状态,如果该引脚为高电平,则DSP按微处理器模式启动;如果该引脚为低电平,则DSP按微计算机模式启动。此时
[应用]
NAND Flash缺货涨价,SLC NAND“华丽转身”机遇在哪里?
在日本福岛外海发生7.3 级强震之后,日本半导体厂商因为中断生产期间所造成的产品减少供应,其已对当前 NAND Flash市场供应吃紧造成了影响,这将使得NAND Flash的报价可能较之前进一步的提高。 NAND Flash的缺货涨价是当前半导体产业的缩影。近年来,存储芯片一直都是集成电路市场份额占比较大的类别产品,2018年存储芯片占全球集成电路市场规模的比例高达40.21%,成为全球集成电路市场销售份额占比最高的分支。 在当前全球芯片缺货涨价背景下,NAND Flash行业现状如何?随着消费端对大容量3D NAND的需求增大,SLC NAND的市场份额会被进一步挤压甚至替代吗?国内厂商如何在国际大厂策略调整下助力SLC NA
[手机便携]
NAND <font color='red'>Flash</font>缺货涨价,SLC NAND“华丽转身”机遇在哪里?
单片机与嵌入式系统有什么区别与联系
  随着电子信息科学技术信息化,智能化,网络化的发展,单片机与嵌入式也获得了广阔的应用空间。本文简单分析了单片机与嵌入式系统的联系、组成结构对比等基础知识,并列举了几种适用于PIC18F系列单片机的几种嵌入式实时操作系统。   单片机与嵌入式系统组成结构对比   (1)单片机基本结构   单片机由运算器、控制器、存储器、输入输出设备构成。   (2)嵌入式系统成部分:   嵌入式系统一般由以下几组嵌入式微处理器、外围硬件设备、嵌入式操作系统、特定的应用程序。   嵌入式系统设计的第一步是结合具体的应用,综合考虑系统对成本、性能、可扩展性、开发周期等各个方面的要求,确定系统的主控器件,并以之为核心搭建系统硬件平台。   单
[单片机]
单片机与<font color='red'>嵌入式系统</font>有什么区别与联系
FLASH操作程序设计与存储器结构
1,FLASH操作程序设计 下面我们来学习编程的内容。在学习编程前,我们要先了解一下FLASH存储模块的控制寄存器。 FLASH存储模块的所有操作都通过控制相关的控制寄存器来实现的。包括FCTL1、FCTL2、FCTL3三个控制寄存器,其中FCTL1主要包含对FLASH的编程和擦除操作的控制位;FCTL2主要定义进入时序发生器前的时钟源和分频系数;FCTL3保存FLASH存储模块的一些标志位。 2, FCTL1控制寄存器 FWKEY:FLASH存储模块的安全键值。共8位,对FLASH操作时应该向其中写入对应的安全键值,否则会引起PUC信号以及KEYV信号。0x96:读取时的安全键值;0x5A:写入时的安全键值。
[单片机]
<font color='red'>FLASH</font>操作程序设计与存储器结构
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved