网络升级嵌入式系统固件的方法

文档序号:6448057阅读:262来源:国知局
专利名称:网络升级嵌入式系统固件的方法
技术领域
本发明涉及嵌入式系统,具体地,涉及嵌入式系统固件升级方法。
背景技术
众所周知,嵌入式系统中的固件不时地需要升级,以便在产品发布后仍可升级其功能或修正其错误,这种升级有许多使用FLASH(闪存)来进行的。然而,随着网络的普及,一个嵌入式系统支持网络升级固件的功能具有了非凡的意义。这是因为,工业上网络环境复杂,覆盖范围广,现场维护成本高,甚至于在无线环境下嵌入式系统设备都在移动中,在不确定的场所,根本不可能找到每一个设备进行现场维护,因此网络升级固件就变得非常必要。它使得网络环境下的设备维护和升级变得轻松快捷,也为系统功能可扩展性打下良好基础。
如图1所示,目前可网络升级固件的嵌入式系统,一般包括ROM(只读存储器)、FLASH(闪存)及RAM(随机存储器)几个部分,其中,ROM(只读存储器)用于存放系统的BSP(Board Support Program电路板硬件支持程序),它是系统上电执行的第一块程序,而BSP(电路板硬件支持程序)的作用是提供系统硬件驱动,此外把Flash(闪存)中的固件装载到RAM(随机存储器)中去,然后执行此固件;Flash用于存放系统的固件,它里面通常包括了嵌入式操作系统和应用程序两部分;RAM(随机存储器)是系统实时运行程序的地方。
由于BSP(电路板硬件支持程序)通常与系统中的硬件组成有关,只要硬件不变,BSP(电路板硬件支持程序)就不用变,因此也不用升级;而操作系统的配制,应用程序的具体功能代码往往是系统升级的主要对象,因此,所谓的固件升级就是指的用新版本的固件替换这部分内容,这样,在系统重启之后就达到了升级的目的。
但是,目前网络升级固件的成功率较低,原因有以下三个方面1)网络的不稳定无论何种网络环境,都存在着很多不稳定因素,如果使用边下载新固件边写Flash(闪存),万一网络突然断掉,Flash(闪存)中的新固件就成为不完整的片断。重启后就不能正确运行,整个系统呈现为死机状态。
2)写Flash(闪存)的不稳定一般Flash(闪存)都有一个特性,就是读可以无限次,而写的次数有限,例如好的十万次,差的一千次,超过写次数上限就不能再写了,而且很多品牌的Flash(闪存)写的成功率不高,必须要写完之后再读出来校验,然而固件这样的数据万一出错,重写超过一定次数只好放弃,同样造成固件不完整而系统死机。
3)被升级的设备在升级过程中发生意外掉电或因其他不稳定因素而重启,终止升级的完成,同样造成固件不完整而系统死机。

发明内容
本发明的目的是提供一种网络升级嵌入式系统固件的方法,利用双备份技术使网络升级的成功率有很大的提高,从而可极大地发挥嵌入式系统的可扩展性和可远程维护的功能。
为实现上述目的,本发明提供一种网络升级嵌入式系统固件的方法,该系统包括用于存放系统BSP(电路板硬件支持程序)的ROM(只读存储器),用于存放系统固件的FLASH(闪存)以及用于实时运行程序的RAM(随机存储器),该方法包括以下步骤在FLASH(闪存)的最前面写入有效程序位置标志,并将其后分成第一块固件程序位置及第二块固件程序位置;在BSP(电路板硬件支持程序)根据有效程序位置标志将固件程序装入第一或第二块固件程序位置;在RAM(随机存储器)中执行该装入的第一或第二块固件程序。
所述的在BSP(电路板硬件支持程序)将固件程序装入第一或第二块固件程序位置的步骤还包括读取有效程序位置标志的步骤。
本发明还包括当第一和第二两块固件程序位置都无效时使BSP(电路板硬件支持程序)启动下载固件程序的步骤。
所述的下载固件程序的步骤包括启动接收固件程序;在固件程序接收成功后读取有效程序位置标志;根据有效位置标志将接收到的固件程序烧录在相应的第一或第二位置;重新启动系统。
上述步骤还包括在固件程序烧录成功后改写有效程序位置标志的步骤。


图1是目前嵌入式系统的结构组成示意图。
图2是本发明嵌入式系统的结构组成示意图。
图3是本发明BSP(电路板硬件支持程序)流程框图。
图4是本发明下载固件任务流程图。
具体实施例方式
本发明针对固件升级成功率低的根本原因,即不稳定因素造成固件不完整的特性,设计了双备份切换技术网络升级固件的方法,参阅图2,其基本思想是采用扩大Flash(闪存)容量的方法,即在硬件设计的时候就采用绝对可容得下最大尺寸的固件的两倍大小的Flash(闪存)。具体步骤包括把Flash(闪存)均分为两块,最前面写有效程序位置标志,然后改写BSP(电路板硬件支持程序),在原本的装载过程之前加判断有效头标志位来决定装载哪一块固件的逻辑,而在网络下载新版固件后,烧录到Flash(闪存)的时候也加上判断有效标志位决定烧录到空闲的那块程序位置的逻辑,这样,虽然各种不稳定因素仍然存在,但不至于造成万一烧录失败就必须到现场更换设备的痛苦,只需要重试一次就好了。
图3为本发明的BSP(电路板硬件支持程序)的流程图,由图可知,本发明BSP(电路板硬件支持程序)在上电并且执行硬件初始化后,加入一个读有效程序位置标志的步骤,图中约定,0x55表示第一块固件程序位置中的固件有效,0xAA表示第二块固件程序位置中的固件有效,当读值为0x55时下一步进入装载第一块固件程序,并将此固件装入RAM(随机存储器)且执行该第一块固件程序;同理,当读值为0xAA时则装入第二块固件程序并执行及其后在RAM(随机存储器)中的相应的程序;另外,图中还显示,当读到不同于上述0x55或0xAA的其它值时,程序则进入等待下载固件的任务模块。
图4为本发明的下载固件任务流程图,一般来说必须在固件中实现。由图可知,本发明下载固件程序依次包括启动;初始化;下载等待;下载命令有效性的判断;接收固件程序,并在判断接收成功后转至读有效程序位置标志的步骤,其中设定当接收例如三次失败后系统将重新启动;以下步骤的主要思路是把新固件写到空闲块,然后改写有效位置标志使之指向下一个空闲块,因此,无论是写固件不成功或写有效位置标志不成功都不影响原有固件的执行。如上所示,由于许多不稳定因素的存在,所以在程序中设定了失败时重试的次数,例如流程图中显示的三次,之后则只能作放弃处理。
虽然本发明方法需要付出较高的Flash(闪存)成本,但是它却保证了系统升级的高成功率,而对于有成千上万台的网络设备升级,哪怕只有1%的失败率,现场更换设备的费用就不可估量了,更不用谈在无线网络环境和车载环境下要找到那台设备是多么的麻烦的事。
权利要求
1.一种网络升级嵌入式系统固件的方法,该系统包括用于存放系统BSP(电路板硬件支持程序)的ROM(只读存储器),用于存放系统固件的FLASH(闪存)以及用于实时运行程序的RAM(随机存储器),该方法包括以下步骤在FLASH(闪存)的最前面写入有效程序位置标志,并将其后分成第一块固件程序位置及第二块固件程序位置;在BSP(电路板硬件支持程序)根据有效程序位置标志将固件程序装入第一或第二块固件程序位置;在RAM(随机存储器)中执行该装入的第一或第二块固件程序。
2.如权利要求1所述的方法,其特征在于,所述的在BSP(电路板硬件支持程序)将固件程序装入第一或第二块固件程序位置的步骤还包括读取有效程序位置标志的步骤。
3.如权利要求1所述的方法,其特征在于,还包括当第一和第二两块固件程序位置都无效时使BSP(电路板硬件支持程序)启动下载固件程序的步骤。
4.如权利要求3所述的方法,其特征在于,所述的下载固件程序的步骤包括启动接收固件程序;在固件程序接收成功后读取有效程序位置标志;根据有效位置标志将接收到的固件程序烧录在相应的第一或第二位置;重新启动系统。
5.如权利要求4所述的方法,其特征在于,还包括在固件程序烧录成功后改写有效程序位置标志的步骤。
全文摘要
本发明公开一种网络升级嵌入式系统固件的方法,该系统包括用于存放系统BSP(电路板硬件支持程序)的ROM(只读存储器),用于存放系统固件的FLASH(闪存)以及用于实时运行程序的RAM(随机存储器),该方法包括以下步骤在FLASH(闪存)的最前面写入有效程序位置标志,并将其后分成第一块固件程序位置及第二块固件程序位置;在BSP(电路板硬件支持程序)根据有效程序位置标志将固件程序装入第一或第二块固件程序位置;在RAM(随机存储器)中执行该装入的第一或第二块固件程序。
文档编号G06F9/445GK1536488SQ0311618
公开日2004年10月13日 申请日期2003年4月4日 优先权日2003年4月4日
发明者张志 , 张 志 申请人:上海交大达通电子信息有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1