专利名称:一种软件升级的方法及系统的制作方法
技术领域:
本发明涉及软件领域,尤其涉及一种软件升级的方法及系统。
技术背景现有的软件升级和回退的方法为首先将软件的新版本通过命令加载到 系统的FLASH或EPROM中,之后,复位系统,即重启系统,在系统启动过 程中从FLASH或EPROM中读出、并运行该FLASH或EPROM中的软件,实现 软件升级,如
图1所示;在软件的新版本无法使用的情况下,将软件原有的版 本通过命令加载到系统的FLASH或EPROM中,重新运行,实现软件回退。从上述内容可以看出,系统在使用软件的新版本进行升级后,可能因为 某种原因,导致该软件的新版本功能出现异常,使得软件加载的命令无法使 用,软件就无法回退到原有的版本;另外,升级后的新版本软件可能会出现 无法启动的情况,造成无法通过命令更新FLASH中的软件版本;再有, FLASH属于慢速设备,写FLASH的过程会需要较长的时间,使得软件的回退 时间较长。现有技术存在的这些缺陷,使得系统在进行软件升级的时候,不 可避免的存在很大的风险,可能对相关的业务造成较大的影响。发明内容本发明的实施例提供了一种软件升级的方法及系统,解决现有技术存在 的问题,从而达到在软件升级后,若出现异常情况,保证系统快速回退到该 软件的原来版本,最大程度地保证业务不因软件升级出现的异常而受影响。本发明的实施例是通过以下技术方案实现一种软件升级的方法,软件保留区中存储有软件的新版本,所述方法包括判断所述软件的新版本是否已被读取;当所述软件的新版本没有被读取过时,从所述软件保留区读取并运行所 述软件的新版本,进行软件升级;当所述软件的新版本已被读取过时,读取并运行所述软件的稳定版本, 所述稳定版本包括所述软件的原来版本;所述软件保留区为快速存储设备中预先指定的 一块区域。一种软件升级的方法,软件保留区中没有软件的新版本存在时,读取并 运行所述软件的稳定版本,所述稳定版本包括所述软件的原来版本。一种软件升级的系统,所述系统包括存储模块、外部存储媒介模块、判 断模块和运行模块;存储模块设置于快速存储设备的指定区域中,用于存储软件的新版本;外部存储媒介模块用于存储软件的稳定版本,所述稳定版本包括软件的 原来版本;判断模块用于判断存储模块中的所述软件的新版本是否已经被读取 过,在确定存储模块中的所述软件的新版本没有被读取过时,通知运行模块 读取、运行存储模块中的所述软件的新版本;在确定存储模块中的所述软件 的新版本已被读取过时,通知运行模块读取、运行外部存储媒介模块中所述 软件的原来版本;运行模块用于根据判断模块的通知,读取、运行所述软件的指定版 本,所述指定版本包括所述软件的新版本和所述软件的原来版本。一种软件升级的系统,所述系统包括存储模块、外部存储媒介模块、判 断模块和运行模块,存储模块设置于快速存储设备的指定区域中,用于存储软件的新版本;外部存储媒介模块用于存储软件的稳定版本,所述稳定版本包括软件的 原来版本;判断模块用于判断存储模块中有没有软件的新版本存在,在确定存储 模块中没有所述软件的新版本存在时,通知运行模块读取、运行外部存储媒 介模块中的所述软件的原来版本;运行模块用于根据判断模块的通知,读取、运行所述软件的原来版本。由上述本发明的实施例提供的技术方案可以看出,本发明的实施例提供 了一种软件升级的方法及系统,实现在软件升级后,若出现异常情况,保证 系统快速回退到原有的软件版本,最大程度地保证业务不因软件升级出现异 常而受影响。 附困说明图1为现有技术提供的软件升级流程示意图;图2为本发明的实施例提供的加载软件新版本的流程示意图;图3为本发明的实施例提供的软件升级的流程示意图。
具体实施方式
作为软件产品,每开发到一定阶段、可执行指定功能后,都需要将当前 的软件固化下来,以版本形式作为产品发布。每当一个软件有新版本发布 时,该软件的旧版本可能会有升级的需要,但软件升级后如果影响了软件的 基本功能,就必须在最短的时间内回退到该软件的原来版本,避免对相关业 务造成过多的影响。本发明的实施例提供的软件升级的方法及系统很好地解决了现有软件升 级技术中存在的问题,并且在软件升级失败的情况下,能够快速回退到原来 的软件版本,最大程度地保证业务不受软件升级失败的影响。实现本发明的实施例所提供的软件升级的技术方案,需要预先在快速存 储设备中划分一块固定的区域,用于存储软件的最新版本,所述区域被称之 为快速存储设备的软件保留区;在设备重新启动后,如果快速存储设备的软 件保留区内有软件的新版本存在,本发明实施方式需要判断所述软件保留区 中软件的新版本是否已经被读取过;如果所述软件保留区内没有软件的新版 本存在,则可以直接从外部存储媒介(如FLASH)中读取所述软件的原来版 本。当所述软件保留区中软件的新版本没有被读取过时,从所述软件保留区 读取并运行所述软件的新版本,进行软件升级;当所述软件保留区中软件的新版本已经被读取过时,清除所述软件保留 区中软件的新版本,从外部存储媒介中读取并运行该软件的稳定版本,该稳定 版本可以为该软件的原来版本,也可以为该软件采用新版本升级后的稳定版 本。需要说明的是,这里判断所述软件的新版本是否已经被读取过,可以通 过判断所述软件的新版本是否有已读取标识来实现。所述软件的新版本在第 一次被读取时,会被设置已读取标识;已读取标识可以设置在所述软件保留 区中;由于进行了已读取判断,所以在软件的新版本升级出现故障时,可以 直接读取软件的原来版本,避免了加载命令出现故障,无法回退到软件的原 来版本的现象,而且,也避免了将软件的原来版本写入到FLASH的过程,从 而提高了软件回退的可靠性,减少了软件回退的延迟时间。在实现软件的快 速回退的同时,可以清除所述软件保留区内软件的新版本,也可以不清除所 述软件保留区内软件的新版本。所述软件保留区中可以保存至少一个软件的新版本,即,所述软件保留 区中的软件的新版本的数量可以是多个,所述软件的种类可以是一种,也可 以是多种。这里提到的快速存储设备是相对于外部存储々某介而言,比如内存就是一 种快速存储设备,在下面的说明中,以内存作为快速存储设备一个具体例子 来说明本发明实施例提供的技术方案。在内存中划分固定区域的方式有多种,在此,仅以VXWORKS (嵌入式 实施操作系统)内存划分方式为例,说明一种内存划分的方式。VXWORKS 的文件系统,其内存划分在编译时就可以确定,只需在程序中通过编写代码 的方式,指定一段内存地址,并不对指定的这段内存地址进行任何其他的操 作,仅用于保存软件的最新版本,通过这种方式,就能预留一块"软件保留 区"。系统重启过程中,不清除这块固定区域中的内容。本发明的实施例中提供的软件升级的技术方案适用于系统软件,也适用 于应用软件。下面,结合图2和图3分别说明本发明的实施例提供的加栽软件的最新版 本的流程以及软件升级的方法的具体步骤如图2所示,加栽软件的最新版本时,需要通过系统命令,将软件的最新 版本保存在亊先为其预留的内存的软件保留区中,即将软件的最新版本写入 所述软件保留区;然后复位系统即可完成加栽。复位系统即重启系统。如图3所示,本发明实施例提供的软件升级的方法的具体步骤为步骤30,系统重启时,判断内存的软件保留区中是否有软件的新版本存 在;确定所述软件保留区中没有软件的新版本存在时,执行步骤31;确定所 述软件保留区中有软件的新版本存在时,执行步骤32;步骤31,系统从FLASH中读取、运行软件的原来版本即可,所述软件的 原来版本指的是该软件升级前的版本;需要说明的是,在此,FLASH仅仅是 作为一种存储媒介,用户也可以根据自己的需要选择其他的存储媒介,比如 EPROM或者移动硬盘;步骤32,所述软件保留区内有软件的最新版本存在,判断内所述软件保留区中的软件的新版本是否已经设置"已读取"标志;确定所述软件的新版本未设置"已读取"标志时,执行步骤33;确定所述软件的新版本设置"已 读取"标志时,执行步骤34;步骤33,从软件保留区中读取、运行所述软件保留区内的未设置"已读 取"标志的软件的新版本,同时为所述软件的新版本设置"已读取"标志; 执行步骤35;步骤34,清除软件保留区中的已设置"已读取"标志的软件的新版本, 执行步骤31,实现软件回退的功能;这是因为系统无法启动软件的新版本, 或者是系统在正常启动软件的新版本后出现异常而被复位,系统再次启动 时,发现"软件保留区"中的软件版本已经设置了 "已读取"标志,则清除 "软件保留区"内容,运行FLASH中软件的原来版本,启动所述软件,实现 软件回退;步骤35,在指定时间内连续运行该软件,判断所述软件的新版本在指定 时间内的运行是否正常;确定所述软件的新版本在指定时间内的运行正常 时,执行步骤36;否则,执行步骤34;步骤36,确定所述软件的新版本在指定时间内运行正常时,即完成软件 升级功能;将所述软件保留区中保存的所述软件的新版本写入FLASH,同时 清除所述软件保留区中保存的所述软件的新版本,也可以不清除所述软件保 留区中保存的所述软件的新版本;这是因为所述软件的新版本经过在指定时间内的运行后,可以保证该软 件的正常使用,且所述软件的新版本已足够稳定,此时将所述软件的新版本 写入FLASH中,作为该软件的稳定版本保存,保证该软件在以后的升级过程 中出现异常时可以迅速回退到该软件的稳定版本,这里需要说明的是,将所 述软件的新版本写入FLASH的过程可以为将所述软件的原来版本更新为所述 软件的新版本,即用所述软件的新版本覆盖所述软件的原来版本,也可以为直接将所述软件的新版本写入到FLASH中,不用覆盖所述软件的原来版本; 同时清除内存的软件保留区中的软件的新版本,腾出存储空间,为保存该软 件的下一个最新版本或者其他软件的最新版本估文准备,也可以不清除内存的 软件保留区中的软件的新版本。下面对本发明的实施例提供软件升级的系统进行说明 所述系统包括存储模块、外部存储媒介模块、判断模块、运行模块和清 除模块;存储模块设置于内存中预先指定的区域内,用于存储软件的最新版本;判断模块主要用于判断存储模块中的所述软件的新版本是否已经被读取 过,判断模块可以通过存储模块中所述软件的新版本是否被设置已读取标 志,判断所述软件的新版本是否已经被读取过;在判断模块判断所述软件的新版本是否被设置已读取标志之前,需要判 断存储模块中是否有软件的新版本存在;当判断模块确定存储模块中没有软件的新版本存在时,判断模块通知运 行模块读取、运行外部存储媒介模块中软件的稳定版本;当判断模块确定存储模块中有软件的新版本存在,且存储模块中的软件 版本已设置了已读取标志时,可以通知清除模块清除所述软件的新版本,也 可以不通知清除模块清除所述软件的新版本,同时通知运行模块读取、运行 外部存储媒介模块中所述软件的稳定版本;这里需要特别说明的是存储模块中的软件版本已设置已读取标志的情 况可以包括以下两种情况,第一种情况指的是存储模块中的软件版本已经执 行了该软件的升级操作,并且升级成功,这种情况下,如果判断模块没有通 知清除模块清除该软件版本,那么在系统执行到这个步骤时,就会发现该软 件版本被设置了已读取标志,这种情况,外部存储媒介模块中稳定版本为该 软件升级成功的软件版本;第二种情况指的是存储模块中的软件版本业已执行该软件的升级操作,但是由于升级失败,而使得系统重启,这种情况下, 判断模块也会发现存储模块中的该软件版本被设置已读取标志,判断模块通 知清除模块清除存储模块中的软件版本,这种情况下,外部存储媒介模块中稳定版本为该软件升级前的软件版本,即软件的原来版本;在判断模块确定存储模块中软件的新版本没有被设置已读取标志,即没有被读取过时,通知运行模块读取、运行存储模块中的所述软件的新版本;在运行模块运行所述软件的新版本时,判断模块需要判断所述软件的新 版本在指定时间内是否能够正常运行;判断模块确定指定时间内所述软件的 新版本正常运行时,通知运行模块将存储模块中所述软件的新版本写入外部 存储媒介模块,同时清除存储模块中所述软件的新版本,需要注意的是,在 此,也可以不清除存储模块中所述软件的新版本;判断模块确定指定时间内 所述软件的新版本不能正常运行,即出现故障时,系统重新启动,即出现存 储模块中的软件版本已设置已读取标志的第二种情况,系统按照前述步骤执 行操作即可以实现软件回退。所述运行模块用于根据判断模块的通知,读取、运行所述软件的指定版 本;并在初次读取存储模块中所述软件的新版本时,为其设置已读取标志。所述外部存储媒介模块用于存储软件的稳定版本,该稳定版本包括该软 件的原来版本,在判断模块确定运行模块在指定时间内能够运行正常所述软 件的新版本时,判断模块通知运行模块将存储模块中所述软件的新版本写入 所述外部存储媒介模块'中,此时被写入外部存储媒介模块中的该软件的新版 本也是该软件的稳定版本;所述外部存储媒介模块可以为FLASH或 EPROM,也可以是硬盘等存储媒介。上述内容中提到的软件的新版本指的是软件用于升级的软件版本,软件 的原来版本指的是软件升级前的软件版本,随着软件的不断升级,软件的原 来版本、软件的新版本会不断地被更新,因此,软件的新版本和软件的原来版本均为相对的。从上述内容可以看出,本发明的实施例提供了 一种软件升级的方法及系 统,在软件升级后,若出现异常情况,保证系统快速回退到软件的原有版 本,最大程度地保证业务不因软件升级出现异常而受影响。以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不 局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可 轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明 的保护范围应该以权利要求书的保护范围为准。
权利要求
1. 一种软件升级的方法,其特征在于,软件保留区中存储有软件的新版本,所述方法包括判断所述软件的新版本是否已被读取;当所述软件的新版本没有被读取过时,从所述软件保留区读取并运行所述软件的新版本,进行软件升级;当所述软件的新版本已被读取过时,读取并运行所述软件的稳定版本,所述稳定版本包括所述软件的原来版本;所述软件保留区为快速存储设备中预先指定的一块区域。
2、 根据权利要求1所述的方法,其特征在于,所述方法包括当判断出所述软件的新版本已被读取时,清除软件保留区中所述软件的 新版本。
3、 根据权利要求1所述的方法,其特征在于,所述运行所述软件的新版 本的步骤包括所述软件的新版本在指定时间内运行正常时,将所述软件的 原来版本更新为所述软件的新版本,并清除所述软件保留区中所述软件的新 版本。
4、 一种软件升级的方法,其特征在于,软件保留区中没有软件的新版本 存在时,读取并运行所述软件的稳定版本,所述稳定版本包括所述软件的原 来版本。
5、 根据权利要求1所述的方法,其特征在于,所述快速存储设备为内 存,所述软件的原来版本存储于非易失性存储介质FLASH中。
6、 一种软件升级的系统,其特征在于,所述系统包括存储模块、外部存 储媒介模块、判断模块和运行模块;存储模块设置于快速存储设备的指定区域中,用于存储软件的新版本; 外部存储媒介模块用于存储软件的稳定版本,所述稳定版本包括软件的 原来版本;判断模块用于判断存储模块中的所述软件的新版本是否已经被读取过,在确定存储模块中的所述软件的新版本没有被读取过时,通知运行模块读取、运行存储模块中的所述软件的新版本;在确定存储模块中的所述软件的新版本已被读取过时,通知运行模块读取、运行外部存储媒介模块中所述软件的原来版本;运行模块用于根据判断模块的通知,读取、运行所述软件的指定版 本,所述指定版本包括所述软件的新版本和所述软件的原来版本。
7、 根据权利要求6所述的系统,其特征在于,所述系统还包括清除模 块,所述清除模块用于在判断模块确定所述软件的新版本已被读取过时,清 除软件保留区中的所述软件的新版本。
8、 根据权利要求6所述的系统,其特征在于,所述快速存储设备为内存。
9、 根据权利要求6所述的系统,其特征在于,判断模块判断所述运行模 块在指定时间内是否能够正常运行存储模块中软件的新版本;判断模块确定 指定时间内所述软件正常运行时,判断模块通知运行模块将所述软件在存储 模块中的软件的新版本写入所述外部存储媒介模块,并通知清除模块清除存 储模块中的所述软件的新版本;所述外部存储媒介模块包括非易失性存储介 质FLASH 。
10、 一种软件升级的系统,其特征在于,所述系统包括存储模块、外部 存储媒介模块、判断模块和运行模块,其中,存储模块设置于快速存储设备的指定区域中,用于存储软件的新版本; 外部存,介模块用于存储软件的稳定版本,所述稳定版本包括软件的 原来版本;判断模块用于判断存储模块中有没有软件的新版本存在,在确定存储 模块中没有所述软件的新版本存在时,通知运行模块读取、运行外部存储媒 介模块中的所述软件的原来版本;运行模块用于根据判断模块的通知,读取、运行所述软件的原来版本。
全文摘要
本发明的实施例涉及软件领域,尤其涉及软件升级领域。本发明的实施例提供了一种软件升级的方法及系统,在软件保留区中存储有软件的新版本时,判断所述软件的新版本是否已被读取;确认所述软件的新版本没有被读取过时,从所述软件保留区读取并运行所述软件的新版本,进行软件升级;确认所述软件的新版本已被读取过时,读取并运行所述软件的原来版本;解决现有技术存在的问题,从而达到在软件升级后,若出现异常情况,保证系统快速回退到原有的软件版本,最大程度地保证业务不因软件升级出现的异常而受到影响。
文档编号G06F11/14GK101231592SQ200710007509
公开日2008年7月30日 申请日期2007年1月26日 优先权日2007年1月26日
发明者王震宇, 勇 邹 申请人:华为技术有限公司