软件更新方法、设备和系统的制作方法

文档序号:6431363阅读:188来源:国知局
专利名称:软件更新方法、设备和系统的制作方法
技术领域
本发明通常涉及一种用于更新位于远程的电子装置内的软件的方法、设备和系统。更具体的,本发明涉及一种用于更新位于远程的连接到网络的电子装置内的软件的方法、系统和设备,在此网络中,该装置可从更新失败中恢复,并通过网络完成更新。
背景技术
许多普通电子装置包括可重写存储器,其在当关断装置电源时,允许更改或替换在该装置内持续存在的软件或数据。目前,这样的可重写存储器通常是快速存储器(flash memory)或类似物,尽管可以采用其它类型的存储器或存储装置。快速存储器是一种非易失性的固态类型存储器,因为当关闭电源时它不丢失数据,同时可重写以容纳不同的数据。快速存储器流行是因为它紧凑、耐用、快速并可重写。例如,蜂窝电话使用快速存储器以保存实现电话功能、快速拨号号码,振铃音调、固件更新等的软件。因此,当实施新功能或故障修理(bugfixes)时,电子装置内的固件可以更新。
然而,快速存储器或其等同物不是没有缺点的。一个缺点就是,快速存储器非常贵。在制造商需要使消费者花费较低的装置中,必需设计该装置以最小化所需的快速存储器量。
虽然明确期望具有更新在所使用装置中的固件或其它软件或数据的能力,但是,更新电子装置内的快速存储器并不总是十分简单。例如,当多数蜂窝电话需要固件或其它软件更新时,必需将蜂窝电话带到当地服务中心,在那里将蜂窝电话经有线数据链路连接到保存更新软件的更新站来更新软件。如果在更新会话期间传送新软件出现问题,则将导致装置进入未知或不能工作的状态,能够重新设置该装置,并且简单地重新传送新软件,直至传送完成且装置运行正常为止。
然而,这不是一项吸引人的选择,因为它需要用户的主动参与或合作,他必需访问服务中心。对于一些装置,例如无线本地环用户站,把用户站带到服务中心意味着,除到服务中心的并不方便的旅程之外,在用户站通常在的驻留位置会暂时没有电话或数据服务。
先前已经做出通过装置所连接的网络来提供更新给装置内的非易失性可重写存储器。例如,蜂窝电话可以通过为其服务的无线网络接收用于其快速存储器软件更新。然而,这种技术中存在的问题是,如果传输失败或因为任何原因中断,装置可能进入未知或不工作状态。在这种情况下,和以上在服务中心进行更新的例子不同,试图重发射更新软件是不可能的,并将给用户留下一个不工作的装置,直至将此装置返回到服务中心。
对此问题的一个现有解决方案是,提供可重写存储器的独立存储库(bank)。Hansson的美国专利6,023,620教导了一种蜂窝电话系统,其中可重写存储器的一半是用于维持当前软件版本的存储库,而将更新软件下载到可重写存储器的另一半存储库中。一旦蜂窝电话确定传送成功,例如通过验证CRC,蜂窝电话切换到使用存储器的更新存储库,且包含旧软件的存储库可用于接收下一次更新。在Narayanaswamy等的美国专利6,275,931中教导了另一个类似现有技术解决方方案。这些配置防止在更新期间发生不能恢复的错误,但是需要两倍的昂贵的可重写存储器。
同样,以上讨论的现有技术更新方法通常需要装置用户的合作和参与,或者要求他们访问服务中心,或者要求他们通过网络接受或启动更新数据的传送。诸如那些对于网络运营者将要改进网络中的稳定性和容量的关键的更新会由于对用户不方便性而遭到他们的拒绝或另外推迟。此外,对于发明人已知的现有技术方法,必需独立执行网络中的各个装置的更新。
期望能有一种方法和系统,其能可靠更新连接到网络的装置的非易失性可重写存储器内的软件或数据,且其不需要在装置内双倍量的非易失性可重写存储器,并且其在多个装置上同时以及自动实现。

发明内容
本发明的一个目的是提供一种新的方法,系统和设备,其用于通过网络来更新电子装置内的软件,其避免或减轻至少现有技术上述已知缺点之一。
根据本发明的一个第一方面,提供了一种用于通过通信链路来远程更新至少一个电子装置的系统。该系统包括更新服务器,易失性存储器,在所述至少一个电子装置内的非易失性可重写存储单元,以及在装置上执行的更新客户端。更新服务器操作用于通过通信链路传送包括核心固件以及辅助软件的更新到至少一个电子装置。易失性存储器用于暂时存储从更新服务器接收的传送。非易失性可重写存储单元被分为至少第一和第二分区,第一分区存储核心固件和辅助软件的版本之一,且第二分区存储核心固件和辅助软件的另一版本。更新客户端在装置上执行,以操作用于(i)用接收到的存储在易失性存储器内的更新核心固件来重写存储在第一和第二分区之一内的辅助软件的版本,并验证该写入的成功;(ii)当下一次重新启动装置时,配置装置,以执行存储在(i)内的核心固件;(iii)用接收到的存储在易失性存储器内的更新辅助软件来重写存储在第一和第二分区另一个内的核心固件的版本,并验证该写入的成功;以及(iv)重新启动装置,以执行更新的核心固件以及更新的辅助软件。
根据本发明的另一方面,提供了一种更新连接到网络的多个远程装置内的软件的方法。该方法包括以下步骤(i)将更新放在更新服务器上,该更新包括至少一个核心固件更新;(ii)标识连接到网络上的要更新的装置;(iii)从更新服务器通过网络传送更新到所标识的装置,每个所标识装置验证更新的接收,请求重新传输并接收任何先前未正确接收的更新部分;(iv)将所接收更新的核心固件部分写入到所分区的非易失性可重写存储单元并对其进行验证,该核心固件部分重写包含先前存储软件版本的分区,同时确保核心固件先前版本的有效副本总是存在于存储单元内;(v)将验证的更新核心固件分区标识为装置要使用的有效核心固件,并将核心固件的先前版本标识为不可用;以及(iv)重新启动装置,以装载并执行更新的软件。
可选的,在所接收到更新的核心固件部分被写入所分区的非易失性可重写存储单元之前,核心固件的先前版本可在存储在存储单元之内的辅助软件上复制并对其进行验证,将此副本标识为装置要使用的有效核心固件,且然后将原始的标识为不可用。
同样,更新可以包括更新辅助软件。由装置来接收并验证辅助软件,且然后在装置重新启动之前,用更新的辅助软件来重写不可用的核心固件的先前版本。
根据本发明的另一个方面,提供了一种用于通过通信链路来远程更新在至少一个电子装置内的核心固件的系统。该系统包括在电子装置内的存储子系统,以及操作用于通过通信链路来传送更新到电子装置的更新服务器,该更新包括至少核心固件的更新版本。该存储子系统包括非易失性可重写存储器,在其内存储有核心固件且足够大以存储辅助软件,但不足够大到可以同时存储核心固件、核心固件的更新版本、以及辅助软件。核心固件包括指令,其用于(i)将核心固件更新版本写入非易失性可重写存储器中,从而不重写核心固件的先前版本,并可选地验证该写入,以及然后(ii)禁用核心固件的先前版本,从而在重新启动至少一个电子装置时可以装载并执行核心固件的更新版本。
核心固件还可以包括指令,其用于写入辅助软件更新版本到非易失性可重写存储器内,从而重写至少禁用的核心固件先前版本的部分,但不重写核心固件的更新版本。可选地,该写入能够被验证。
存储子系统还可以包括非易失性存储器,在其中存储了指令,该指令在当电子装置重新启动时被执行,并致使对非易失性可重写存储器进行扫描来寻找未禁用的核心固件版本。当查找到未禁用的核心固件版本时,则装载并执行该版本。
根据本发明的又一另一方面,提供了一种用于通过通信链路来远程更新至少一个电子装置内的核心固件和辅助软件的系统。该系统包括在至少一个电子装置内的存储单元,其用于存储核心固件和辅助软件,以及更新服务器,其操作用于通过通信链路来传送更新到至少一个电子装置。该存储单元包括非易失性可重写存储器,其内在第一分区存储有包括核心固件的第一存储内容,以及在足够大以存储第一存储内容的第二分区中,存储有足够小以被存储在第一分区的且包括辅助软件的第二存储内容。核心固件包括更新客户端,其在接收到第一存储内容的更新版本后,将第一存储内容的更新版本写入到重写第二存储内容的第二分区,可选地对该写入进行验证,并禁用包含在第一分区中的第一存储内容,并且然后,在接收到第二存储内容的更新版本后,将第二存储内容的更新版本写入到重写所禁用的第一存储内容的第一分区,并重新启动电子装置。该存储单元还包括非易失性存储器,其内存储有当电子装置重新启动时所执行的引导装载指令。该引导装载指令包括指令,当执行该指令时,搜索非易失性可重写存储器以寻找未禁用的第一存储内容版本,以及当查找到一个时将电子装置的控制移交给存储在该存储内容中的核心固件。
另一选择是,在接收到第一存储内容的更新版本之后,更新客户端可将第一存储内容复制到重写第二存储内容的第二分区,将第一存储内容的更新版本写入到重写第一存储内容的第一分区,可选的验证该写入,并在接收到第二存储内容的更新版本之后,将第二存储内容的更新版本写入到第二分区,可选的验证该写入,并重新启动电子装置。
同样,另一选择是,在接收到第一存储内容的更新版本之后,更新客户端可减少第二分区的大小,从而它刚好足够大到可以存储第一存储内容的更新版本,将第一存储内容的更新版本写入到重写第二分区先前内容的第二分区,可选的验证该写入,并禁用存储在第一分区内的第一存储内容的版本,并且然后,在接收到第二存储内容的更新版本之后,增加第一分区的大小,以包括不是第二分区中的非易失性可重写存储器的任何部分,将第二存储内容的更新版本写入到重写第一分区先前内容的第一分区,可选的验证该写入,并重新启动电子装置。
可选的,更新客户端可进一步操作用于向更新服务器通知在给定时间该至少一个电子装置是否可用于更新,更新服务器响应于从更新客户端所接收的信息,以在当电子装置不可用于更新时推迟对电子装置的更新。更新服务器还可以为更新设定优先级,从而更新客户端可使在另外情况下不可用的电子装置可用于更新。
根据本发明的另一个方面,提供了一种用在电子装置内的存储子系统,该电子装置包括在其内存储有核心固件和辅助软件的非易失性可重写存储器。核心固件包括指令,其用于将核心固件更新版本写入到非易失性可重写存储器内,从而重写至少辅助软件的一部分、但不重写核心固件的先前版本,验证核心固件更新版本,以及禁用核心固件先前版本,从而在重新启动电子装置时装载和执行核心固件更新版本。核心固件可以包括指令,其用于将辅助软件更新版本写入到非易失性可重写存储器中,从而重写所禁用的核心固件先前版本的至少一部分,但不重写核心固件的更新版本。存储子系统还包括非易失性存储器,其存储有指令,该指令在当电子装置重新启动时被执行,并致使对非易失性可重写存储器进行扫描以寻找未禁用核心固件版本,以及装载并执行该未禁用核心固件版本。
根据本发明的另一个方面,提供了一种用在电子装置内的存储子系统,该电子装置包括非易失性可重写存储器,在其中存储有核心固件且其足够大到可以存储核心固件和辅助软件,但不足够大到可以同时存储核心固件。核心固件包括指令,其用于将核心固件更新版本写入到非易失性可重写存储器内,从而不重写核心固件先前版本,验证核心固件更新版本,以及禁用核心固件先前版本,从而在重新启动电子装置时装载和执行核心固件更新版本。核心固件可包括指令,其用于将辅助软件更新版本写入到非易失性可重写存储器中,从而重写核心固件先前版本的至少一部分,但不重写核心固件的更新版本。存储子系统还包括非易失性存储器,其存储有指令,该指令在当电子装置重新启动时被执行,并致使对非易失性可重写存储器进行扫描以寻找未禁用核心固件版本,以及装载并执行该未禁用核心固件版本。
根据本发明的另一方面,提供一种用于电子装置内,能执行所存储的指令并接收这种指令的更新版本,一个用于存储这种指令的存储子系统,其包括非易失性可重写存储器以及非易失性存储器。在该非易失性存储器中,存储了当电子装置重新启动时所执行的引导装载指令。在该非易失性可重写存储器中,在第一分区存储有第一存储内容,其包括至少允许电子装置重新启动、或当进行更新时如果电子装置重新启动则继续更新非易失性可重写存储器所需的指令;以及在足够大到可以存储第一存储内容的第二分区,存储有第二存储内容,其足够小到可以被存储在第一分区,并包括所有没有包含在电子装置重新启动之后正常操作所需的第一存储内容中的指令。存储在第一存储内容中的指令包括指令,其在当接收到第一存储内容更新版本之后被执行时,将第一存储内容更新版本写入到重写第二存储内容的第二分区中,并禁用包含在第一分区的第一存储内容;以及指令,其在当接收到第二存储内容更新版本之后被执行时,将第二存储内容更新版本写入到重写所禁用的第一存储内容的第一分区,并重启电子装置。
另一选择是,存储在第一存储内容中的指令包括指令,其在当接收到第一存储内容更新版本之后执行时,将第一存储内容复制到重写第二存储内容的第二分区,将第一存储内容的更新版本写入到重写第一存储内容的第一分区;以及指令,其在当接收到第二存储内容更新版本之后执行时,将第二存储内容更新版本写入到重写所禁用的第一存储内容的第二分区,并重新启动电子装置。
另一选择是,存储在第一存储内容中的指令还包括指令,其在当接收到第一存储内容更新版本之后执行时,如果可能则减少第二分区的大小,从而它刚好可以足够大到可以存储第一存储内容更新版本,将第一存储内容的更新版本写入到重写第二分区先前内容的第二分区,并禁用存储在第一分区内的第一存储内容版本;以及指令,其在当接收到第二存储内容更新版本之后执行时,如果可能则增加第一分区的大小,以包括不是在第二分区内的非易失性可重写存储器的任何部分,将第二存储内容更新版本写入到重写第一分区先前内容的第一分区,并重新启动电子装置。
根据本发明的又一个方面,提供一种安装更新到存储在非易失性可重写存储器内的软件的方法,该非易失性可重写存储器没有足够大到同时保存更新和软件。该方法包括以下步骤将更新划分为包括分离可写部分,其包括可存储在不大于非易失性可重写存储器一半的核心部分;将非易失性可重写存储器划分为分离可重写部分,其包括核心部分,该核心部分包括不大于非易失性可重写存储器一半并包含对应于所更新核心部分的软件部分以及恰好足够大到可以保存更新的核心部分的辅助部分;将更新的核心部分写入到非易失性可重写存储器的辅助部分,并对它进行验证;禁用包含在非易失性可重写存储器核心部分的先前软件版本;将不包含在更新的核心部分的更新部分写入到非易失性可重写存储器的、不包括在非易失性可重写存储器核心部分的部分,并对它进行验证。
附图简要说明现在将参考附加


本发明的实施例,仅为示例起见,其中图1是根据本发明一个实施例的允许更新电子装置的网络框图;图2是根据本发明一个实施例的更新站的框图;图3是根据本发明一个实施例的可更新电子装置的框图,其包括存储单元;图4a、4b和4c是根据本发明一个实施例的图3电子装置内的存储单元的框图;图5a、5b和5c是根据本发明另一个实施例的图3电子装置内的存储单元的框图;图6是根据本发明一个实施例的更新系统的分级结构框图;图7是本发明更新处理实施例的流程图。
发明详细说明现在参考图1,用标记号码20来一般性指示能更新至少一个电子装置内的软件或数据的无线网络。网络20包括至少一个更新站,在此例子中是无线基站24,其操作用于通过双向通信链路32发射软件更新。网络20还包括至少一个电子装置,例如用户站28a,28b,……,28n,其用于能够进行语音和数据的无线本地环。用户站28可以是在用于语音和数据的无线本地环内的客户房屋设备,销售终端的无线点,或任何其他诸如具有调制解调器的个人数目助理(PDA)、蜂窝电话、电缆调制解调器、膝上型电脑的电子装置,以及其他本领域技术人员想到的、和能通过通信链路32通信的合适电子装置。
由基站24服务的用户站的数目n根据可用无线带宽数量或用户站28的配置和要求而进行改变。为清楚目的,在此提及的对电子装置的更新仅对用户站28作出。然而,其他例如以上提及的、以及能通过通信链路32接收软件更新的电子装置也在本发明范围之内。
在网络20中,基站24可通过适当网关以及回程34连接到至少一个电信网络,例如基于陆线的数据交换网络30,公共交换电话网络33。回程34可以是例如T1,T3,E1,E3,OC3或其他适当陆线链路的链路,或可以是卫星或其他无线或微波信道链路,或任何其他本领域技术人员想到的适于作为回程操作的链路。基站24还可以包括或通过回程34或其他方式连接到软件更新服务器36,它包含用户用户站28软件负载。基站24还连接到位于更新服务器36内或在位于别处的为此目的而提供独立数据库服务器(未示出)内的用户数据库,例如在中心网络操作中心(将在以下讨论)内,它保存用户站28的当前软件负载记录。
在无线网络20内,在基站24和每个用户站28之间经无线波建立通信链路32,尽管可以采用包括导线、红外以及超声方法的其他物理连接方法。通信链路32可以在基站24和各自用户站28a,28b……,28n之间如所需的承载语音和数据信息。可以通过多种多路复用技术来实现通信链路32,包括TDMA,FDMA,CDMA,OFDM或例如GSM等的混合系统。此外,可将通信链路32安排到承载不同数据类型(例如语音通信、或数据传输、或为诸如最终用户通信或控制网络20的不同目的而采用的)的不同信道。在图1的实施例中,通信链路32上发射的数据是作为IP(互联网协议)分组发射,但也可采用任何适当类型的分组。
图2更详细显示了基站24的例子。基站24包括一个或多个天线40,其用于在通信链路32上接收和发射无线通信。天线40连接到无线部分44,该无线部分接下来又连接到调制解调器48。调制解调器48连接到微处理器-路由器组件52,例如由Intel制造的Pentium IIITM处理器系统以及相关装置。应当理解微处理器-路由器组件52可如所期望的包括多个微处理器。此外,如果希望,可在独立单元内提供微处理器-路由器组件52的路由器功能。在微处理器-路由器组件52内实现的路由器功能以任何适当方式连接到回程34,从而将基站和至少一个电信网络30,33连接。基站24还可直接连接或通过回程34连接到更新服务器36,如上所述。
现在参考图3,更详细显示了用户站28的例子。用户站28包括一个或多个天线60,用于在通信链路32上接收和发射无线通信。天线60连接到无线部分64,该无线部分64又连接到调制解调器68。调制解调器68连接到微处理器组件72,该组件连接到存储单元78。
微处理器组件72可以包括,例如Intel制造的StrongARM处理器,并执行多种功能,包括实现A/D-D/A转换,滤波器,编码器,解码器,数据压缩器,解压缩器和/或拆分分组。如图3所示,微处理器组件72还和调制解调器68以及一个或多个端口76相互连接,这些端口可以用于将用户站28连接到数据装置以及电话装置。电话装置的一个例子是电话。数据装置的例子包括个人计算机、PDA等。相应的,微处理器组件72操作用于处理端口76和调制解调器68之间的数据。
在用户站28中,存储单元78包括两个主要的组成部分(1)易失随机访问存储器(RAM)82,它可以是动态RAM(DRAM)或同步DRAM(SDRAM),微处理器组件72将其用于存储操作用户站28所需的指令以及数据;以及(2)非易失性可重写存储单元RSU86,它在用户站28内是快速存储器,用于存储数据,其包括指令,当关断用户站28电源时该指令不会丢失。存储单元78操作用于包含所有用户站28正常和期望功能所需的指令以及数据,包括引导软件,操作系统,软件应用,无线资源管理软件,装置驱动器,以及数据文件。
正如本领域技术人员已知的,RAM82通常快于RSU86内使用的快速存储器,因此,在当前用户站28的优选实施例中,在多数情况下,在执行之前,微处理器组件72将指令和数据从RSU86复制到RAM82。在一些情况下,对于本领域技术人员来说是十分明显的,是直接从RSU86将指令和数据读取到微处理器组件72,然后在其上执行或操作。
微处理器组件72还操作用于如下所述的从RAM82将指令和数据写入到RSU86。
在用户站28,RAM82包含32M字节SDRAM,以及RSU86包含8M字节快速存储器。然而,并不特别限制RAM的数量和类型,并且可以使用其他类型非易失性可重写存储器,例如可以使用常规IDE和SCSI硬盘、光存储器存储装置以及EPROMS,而不是快速存储器。本领域技术人员可以想到其他类型的非易失性可重写存储器,同时他们也会理解,在本发明实施例的RSU86内使用此种其他可选非易失性可重写存储器需要对下述说明进行修正。
诸如在RSU86内所使用的快速存储器通常是按块读出和写入。块是可以写入以及在写入之前必需擦除的最小单位。(换句话说,快速存储器是“粒状的”(granular),如下面说讨论的,其对使用方式有影响。)本领域技术人员应当理解,该限制并不应用到可替换用户站28内的快速存储器的其他类型的非易失性可重写存储器的一些其他形式。目前用在用户站28内的特定快速存储器具有256K字节块的大小。现在参考图4a,示意地显示了RSU的初始分区。将RSU86划分为逻辑分区,该逻辑分区中每一个都是一个或多个逻辑连续的存储块。正如对本领域技术人员所显而易见的,术语“分区”和“逻辑分区”在此可互换使用。对于本发明的唯一限制是,除了在使用相同大小的分区的特定情况之外,这些分区应该是可以重新调整大小和/或重新部署。因此期望满足此要求的逻辑分区以及在某些例子中的物理分区都意图在本发明范围之内。
每个分区具有至少一个开始位置和为它所定义的长度/大小。正如本领域技术人员所知的,为某些目的将这些分区看作它们好像是独立的分离存储装置。例如,具有两个分区的硬盘对于运行在连接到该硬盘的计算机上的应用软件来说好像是两个独立硬盘。另外,本领域技术人员还知道,通常可以相加、移除、或重新调整逻辑分区以及某些物理分区的大小,从而在存储装置内提供灵活性。对于逻辑分区,通过修改存储在非易失性可重写存储器内的数据结构,或如在用户站28内的情况,按如下所述的在启动时重新构建来进行。数据结构包括诸如上述开始位置和大小/长度的数据,在存储装置内的物理位置和逻辑分区之间提供对应。逻辑分区还可以使不连续的存储位置对于应用看起来好像是连续存储块。例如,能这样划分快速ROM,从而对于应用来说偶数编号的块(即块0,2,4,6等)像是一个连续存储块,而对于应用来说奇数编号的块(即块1,3,5,7等)像是另一个连续存储块。本领域技术人员知道的许多其它分区方案以及安排都在本发明范围之内。在用户站28,RSU86初始被划分为三个分区,即引导分区104,核心固件分区108以及辅助软件分区112。
引导分区104位于RSU86的第一块内,并包含用于用户站28的引导装载固件。用户站28按以下方式配置启动(引导)时,微处理器组件72首先执行在RSU86的第一块内查找到的指令,尽管也可以采用其它方案,例如读取RSU86的最后一块等。初始将RSU86的剩余块按如下所述方式划分为核心固件分区108以及辅助软件分区112。在图4a中,显示核心固件分区108占用了紧跟在引导分区104之后的块,并且辅助软件分区112占用核心固件分区108的最后一块和RSU86末端之间的块。如下所述,可以颠倒核心固件分区108和辅助软件分区112的初始定位,并如下所述作为更新结果的颠倒(参见图4c,其中通过将“’”添加到参考标记上来显示颠倒的顺序)。
在用户站28,在引导分区104内提供引导装载固件,以避免需要在用户站28内提供额外的ROM或其他非易失性存储包。然而,正如本领域技术人员知道的,如果在存储单元78内或用户站28内其他地方提供这样的ROM或其他非易失性存储包,则可将引导分区104置于其内,并从RSU86内省略,然后可将该RSU86安排为两个分区108和112。术语“存储子系统”包括存储单元78以及,如果引导分区104存储在ROM或另一非易失性存储包中,则包括ROM或其他非易失性存储包。
需要提供给用户站28的至少最低功能的核心固件被初始写入核心固件分区108。核心固件负责提供用户站28的基本操作。这些基本操作包括存储器管理、任务处理、管理文件、输入/输出等,以及允许用户站28和基站24通信所需的至少最低量的功能 (但提供任何最终用户服务所需的足够功能不是必需的)。在用户站28,包括在核心固件内的操作系统包括版本2.4的Linux内核,并且引导分区104内的引导装载软件是Linux引导装载程序。分区108内的核心固件是cramfs文件系统,它是本领域技术人员已知的只读压缩文件系统。cramfs文件系统的文件可很容易获得(例如参见http//sourceforge.net/projects/cramfs/),在此不进一步讨论它的操作。
在启动时,一旦读取引导分区和执行此分区开始的内容,引导装载程序从RSU86的开始顺序地读取,以定位核心固件分区108的开始块以及大小。引导装载程序通过搜索超级块来完成此动作,如在cramfs文件系统中定义的。当查找到一个时,则将其假定为核心固件分区108内的压缩Linux内核的超级块。然后当操作系统开始时,引导装载程序使用存储在该超级块内的信息将内核镜像(image)解压缩到RAM82,并将核心固件分区108的开始块以及大小作为引导参数传递到Linux内核,从而可以确定RSU的分区。
虽然优选Linux,但是,其他操作系统的操作系统版本也在本发明范围之内。没有特别限定RSU86内的核心固件分区108的位置,并且当引导装载程序搜索RSU86的内容直至定位了有效核心固件分区108(即cramfs超级块时)的开始为止,可以占用在引导分区104之后的任何连续的逻辑块地址组(如果存在)。然而,从下面可以清楚,优选的,核心固件分区108位于紧跟在引导分区104之后,或在RSU86末尾,从而避免一个或多个存储块既不在核心固件分区108中也不在辅助软件分区112中的情况。
其余(balance)软件和数据之间存储在RSU86辅助软件分区112内。在下文中,软件即指辅助软件。没有特别限定辅助软件,并且其可以包括可选的装置驱动器,用户应用程序,系统软件应用程序,数据文件,软件以及诸如以下各项的最终用户应用电话呼叫处理软件、语音和音频编解码器、软件滤波器、防火墙、应用程序、帮助文件、用户数据文件、数字媒体文件、以及其它这样的应用,还有本领域技术人员能想到的其它数据文件等。
辅助软件可以按照压缩文件系统格式存储,例如上述cramfs格式,或按照本领域技术人员能想到的其他任何适当方式。如果辅助软件是整体式的(monolithic),即软件的改变或更新需要替换该分区的所有内容,则cramfs或类似文件/存储系统是优选的替代选择。另一选择是,如果辅助软件不是整体式的,从而可如所需的将软件组件装载和/或卸载到该分区,则可以采用例如由Axis Communications AB,Emdalavagen 14,S22369,Lund Sweden开发的JFFS(日志Flash文件系统)(Journaling Flash File System)的适当系统。
通常,用户站28和基站24通信不需要存储在辅助软件分区112内的辅助软件,虽然用户站28发出或接收语音呼叫需要存储在辅助软件分区112中的辅助软件,但是最终用户数据连接(例如http浏览器会话)或其他最终用户功能。没有特别限定RSU86内的辅助软件分区112的位置,且只需占用逻辑连续的块组,但如上所述,优选的在RSU86的末尾块或紧跟在引导分区104之后。
如图4a所示,核心固件分区108的大小小于辅助软件分区112。然而,如果可用于分区到核心固件分区108以及辅助软件分区112的块编号是偶数号码,则它们可大小相等。在本实施例的用户站28中,RSU86内的总可用存储空间是8M字节,引导分区104是256K字节,核心固件分区108具有最大3.75M字节的大小,且辅助软件分区112具有减去核心固件分区108的大小的7.75M字节大小。在此描述的特定实施例中,辅助软件块的最大大小是4M字节。
由于本实施例的RSU86内存储块的总数是偶数,并且由于一块用于引导分区104,因此,奇数块编号可用于分区到核心固件分区108和辅助软件分区112中,并且因此核心固件分区108和辅助软件分区112的大小不会相等。从以下说明中可以清楚,关键限制是核心固件分区108必需不大于辅助软件分区112。然后核心固件的更新总可以写入辅助软件分区112,而不用重写现有核心固件分区108。在读了一下说明之后会更清楚。
当期望更新在核心固件分区108内的核心固件时,从更新服务器36在通信链路32上传送更新核心固件到用户站28,如下面详细说明的。接收该核心固件并将其存储在用户站28内的RAM82中,直至到用户站28的更新核心固件和辅助软件的全部传送完成为止,虽然同样希望如果需要,在传送辅助软件之前能够传送核心固件并将其安装。根据更新的大小和RAM82的大小,可能需要终止运行在用户站28上的任何处理,它们需要大量的RAM82。如下面将要讨论的,终止这些处理的能力是在决定更新用户站28之前要考虑的状态标准。
期望可使用多种技术来从更新服务器36传送核心固件和辅助软件到用户站28,例如经UDP/IP或TCP/IP的按照分组的软件传输。因为用于传送软件的通信链路32或物理介质(有线连接等等)可能遭受故障或错误,因此,在使用之前验证接收到的传送软件的正确性。不特别限定用于验证这种正确性的特定方法,并可对全部传送或部分传送采用检查和、CRC、数字签名等,如本领域技术人员已知的。如果接收到的内容不正确,并包含一个或多个错误,则可从更新服务器36重新发射其软件或适当分区到用户站28,直至在用户站28接收到完全正确的副本。
一旦在用户站28接收到更新/替换核心固件的完全正确副本,即新的核心固件,并存储在RAM82内,则通过将新核心固件写入先前由辅助软件分区112占用的RSU86部分的全部或部分来继续更新处理。为执行此重写,终止任何正在用户站28上执行的、且要求对辅助软件分区112中的辅助软件进行读取访问的剩余处理。一旦终止了(如果有的话)这些程序,从RAM82复制新的核心固件,并将其写入RSU86。在图4b中用新核心固件分区108’指示新的核心固件。如在此使用的,期望术语“重写”和“被重写的”包括将新数据放入非易失性存储器中以替换先前数据的必需操作,并且包括在快速存储器的情况中,在将新数据写入其之前首先擦除该存储器(如果需要这一步骤)。
同样期望,为减少在RAM82内所需的存储器,可以像接收它时一样将更新核心固件以递增方式写入,例如在更新256K字节块中,假定在写入之前能够验证接收到的更新是正确接收的。在这样的例子中,由于在用户站28接收到给定数量的更新数据,因此,将其暂时存储在RAM82内并在RAM82验证,然后写入RSU86,同时下一接收的更新数据重写先前接收的、已被暂时存储在RAM82内的更新。这样,如下所述,可以在更新处理中无需终止下来自RAM82运行的各种应用和处理,至少直至用户站28重新启动时。
如图4b所示,在从所确定辅助软件分区112开始的偏移开始进行重写,从而新核心固件分区108’的末尾会和辅助软件分区112的末尾重合。在上面的例子中,如果RSU86总计大小是8M字节,且核心固件分区104大小是0.25M字节,辅助软件分区112大小是4M字节,且核心固件分区108大小是3.75M字节,则新核心固件分区108’重写到辅助软件分区112所在的偏移是从RSU86开始的4.25M字节,假定实际上核心固件分区104出现在RSU86的开始。
在写入新核心固件分区108’之后,由用户站28验证其内容,该用户站28从新核心固件分区108’读回内容,并将其和RAM82内的新核心固件副本比较。如果写入的新核心固件分区108’小于接收的来自RAM82的分区,则在下一接收分区重写暂时存储在RAM82内的上一分区之前,对这些更小分区的写入向RAM82内存储的分区进行验证。
在任何一种例子中,如果不能验证从新核心固件分区108’读取的内容,则新核心固件分区108’或新核心固件分区108’的相关部分的写入被再次执行,且验证/重写处理一直重复,直至内容得到验证为止。
当验证了新核心固件分区108’的内容是正确写入的时,对用户站28,将新核心固件分区108’标识为包含最新核心固件,并且然后通过将在核心固件分区108内的原始核心固件标记为“无效”来由用户站28执行对其的禁用。在用户站28,其中核心固件分区108以及108’包括cramfs格式的Linux内核等,通过将核心固件分区108的超级块重写来将在核心固件分区108内的核心固件标识为无效,从而将其改变为不再是有效超级块。一旦这样做,用户站28的下一次重新启动的引导装载程序将仅定位新核心固件分区108’的超级块,它是最新的有效核心固件分区,且用户站28从分区108’开始引导。
如从图4b中清楚看见的,以上在无效核心固件分区108内的结果以及辅助软件分区112的剩余分区不再包含有用数据(如果存在的话)。用户站28然后能够从RAM82将辅助软件写入(或如果还没有执行,则从更新服务器36将其下载到RAM82),以在核心固件分区108的存储空间内和辅助软件分区112的那个剩余分区(如果有的话)形成新的辅助软件分区112’,如图4c所示。另一选择是,用户站28可重新启动,以执行新的核心固件,并且可从更新服务器下载辅助软件,并将其存储在新的辅助软件分区112’。一旦以和上述用于核心固件相似的方式验证了新辅助软件的写入,用户站28可以执行辅助软件(假定它早已重新启动并正在运行新核心固件),或可以重新启动,从而让装载程序引导新核心固件分区108’内的更新的核心固件,并重启由核心固件和辅助软件两者所提供的所有服务。这样做时,操作系统会定位新核心固件分区108’的超级块,并且,如果辅助软件分区采用cramfs,则定位新辅助软件分区112’的超级块,并形成描述所重新分区的RSU86的数据结构。
如从上面说明所清楚的,RSU86内总是存在核心固件的有效副本,甚至在用户站28关闭、电源断开、需要重新启动、或其他更新处理中的中断时。在当用户站28在新核心固件分区108’写入和验证完成之前关闭,更新处理以被写入到辅助软件分区112上的新核心固件分区108’的情况中,用户站28将从旧核心固件分区108来引导,当下一次再开启该旧核心固件分区108时它仍是完整的。注意到缺少有效辅助软件分区112,且要么重新开始整个更新处理,要么从更新服务器36能够请求有效辅助软件的传送,并将其存储在RSU86内作为重新存储的辅助软件分区112,并且将更新处理推迟。例如当网络20使用过多,执行更新的容量不是立即可用时会选择后一选项。
假定执行了成功的更新,则每当期望再次更新用户站28内的核心固件时,新的核心固件分区108将重写辅助软件分区112’的一部分,以及新的辅助软件分区112将会重写旧的核心固件分区108’和旧的辅助软件分区112’的剩余分区,以再次获得图4a所示的配置。应当注意到,在新的核心固件分区108被验证之后并不是必需要擦除旧核心固件分区108’的超级块,因为如果在此阶段更新中断,则当发生重新启动时,引导装载程序会在到达旧核心固件分区108’之前定位并使用新的核心固件分区108。
每个随后的核心固件的更新都会导致用新核心固件分区重写现有辅助软件分区,并用新辅助软件分区重写旧的核心固件分区以及辅助软件分区的剩余部分。
应当注意,如在此使用的,期望术语“新辅助软件”包括以下两种情况辅助软件中未发生变化且新辅助软件仅指下载到用户站28的未改变软件的新副本的情况,以及其中下载更新的或另外改变的辅助软件版本到用户站28的情况。
如图5a所示,如果期望在正常操作中使分区108和112的位置在RSU86内恒定,则可将“旧”核心固件分区108复制到“旧”辅助软件分区112上,以形成复制的旧核心固件分区108”。然后验证此旧核心固件分区108”副本的写入,一旦得到验证,则通过重写原始核心固件分区108的超级块来将其标识为无效,从而改变它,或使用任何其他适当方式。如果因为任何原因用户站28在该点要重新启动,则引导装载程序将定位并使用复制的核心固件分区108”的内容。
下面,将“新”核心固件从RAM82重写到原始核心固件分区108,如图5b所示,并进行验证。直至核心固件分区108的剩余分区的内容被验证以前,不将原始核心固件分区108的新核心固件的超级块写入到原始核心固件分区108中,此后将超级块写入并对其进行验证。然后通过重写或改变所复制的核心固件分区108”的超级块或通过其他任何适当方式来将其标识为无效。用此方式,在验证新核心固件分区108的写入之前需要装载核心固件的重新启动或其他事件可以替代地采用所复制的核心固件分区108”。
最后,从RAM82复制新辅助软件,从而形成辅助软件分区112,如图5c所示,且在使用之前验证此分区,然后用户站28再次处在其常规操作配置中。虽然此处理导致分区108,112在RSU86内总具有相同位置,但它需要执行额外的写入和验证操作,以将核心固件分区108的内容复制到所复制的核心固件分区108”,这就增加了执行更新所需的时间,并且如果RSU86是快速存储器,则可能导致RSU86更快损坏。
在本发明的本实施例中,更新在用户站28内的软件是一个受管理的处理。这在诸如提供初级电话线替换的无线本地环的关键网络或“总是开启”网络中特别重要。图6显示网络20的管理系统层次,其包括网络操作中心(NOC)200,无线扇区管理器204,其用于网络20内基站24中的每个扇区,以及用户站更新客户端208,其用于由网络20服务的每个用户站28。
网络操作中心200是集中式设备,其由网络20的运营者控制,并且,除管理整个网络20的用户站更新之外,还执行其他网络管理功能,例如OAM&P等。无线扇区管理器204优选的位于网络20的各个基站24内,还可和更新服务器36其址或在其内实现。如果基站24是全向(单个扇区)基站,则在该基站24仅提供单个无线扇区管理器204。期望的是,更普遍的,基站24采用非全向(波束成形)天线,其允许基站服务于增强密度的用户站28。例如,如果采用60度波束成形天线,则基站24可配置成6个不同的无线扇区,每个扇区服务于由基站24服务的用户站28总数的一个子集。这样,在基站24提供6个无线扇区管理器204。最后,作为其核心固件的一部分的每个用户站28包括更新客户端208,它在用户站28上执行。
在图6中,期望用虚线显示的无线扇区管理器204代表多个这样的无线扇区管理器204和它们相关的更新客户端,因为NOC200可服务几百个无线扇区管理器204,并通过它们,通过它们的更新客户端208来服务几千或更多用户站28。
当创建了用户站28的辅助软件或核心固件的更新时,并且网络20的运营者希望实现时,网络操作中心200确定装载到由网络20所服务的每个用户站28内的软件当前版本。正如本领域技术人员所知道的,可用多种方式执行该确定。在本发明实施例中,每当用户站28开启和/或每次执行更新之后,每个用户站28的更新客户端208向服务该用户站的无线扇区管理器204报告装载到用户站28的软件的当前版本。无线扇区管理器204将此信息转发给网络操作中心200,在此将该信息存入适当数据库。正如本领域技术人员已知的,可采用不同技术确定每个用户站28的当前装载软件,包括以适当间隔轮询更新客户端208等。
一旦确定了网络内20或网络20内用户站28的兴趣子集内的(例如,网络运营者可能仅对更新特定城市内的用户站28感兴趣)每个用户站的当前软件装载,网络操作中心200确定应当更新的用户站28。通常,期望更新网络20内的所有用户站28,但还期望要求能更新用户站28的选定子集,或甚至是单个用户站28。
网络操作中心200确保所期望更新软件在更新服务器或服务器36上是可用的,该服务器服务具有要更新用户站28的无线扇区管理器204,如果需要,则传送更新的软件到更新服务器36。然后,网络操作中心200指示具有要更新用户站28的无线扇区管理器204识别那些用户站28,并指示它们起动更新。
一旦无线扇区管理器204从网络操作中心200接收到更新指示,它确定它所管理的要更新的用户站28的活动级别或状态。理想的,仅当它们在通信链路32上所需容量不再另外需要、和/或用户站28没有执行会使更新处理中断的最终用户处理时才执行更新。相应的,无线扇区管理器204首先确定它可以在通信链路32上空闲出和/或具有发射更新的容量。期望的是,通常在最终用户未使用通信链路32的深夜或凌晨执行这样的更新。然而,同样期望能由指示无线扇区管理器204的网络操作中心200给基本更新(例如稳定网络20操作或提供增强的安全性所需的更新等)分配更新优先级,以尽早执行更新,终止或中断其它对通信链路32容量的使用和/或在要更新的用户站28中断,降级或中止最终用户的活动。
一旦由无线扇区管理器204确定在通信链路32上它具有发射更新到用户站28的容量,或在产生了容量的优先级更新的情况中,它查询每个要更新的用户站28中的更新客户端208,以确定这些用户站28的状态。该状态指示目前在该用户站28上发生的活动的级别和/或类型。
例如,用户站28可以指示它已空闲了10分钟(没有最终用户活动),或指示当前正进行用于最终用户的http会话等。因为通常将更新下载的传送首先存储在RAM存储器82内,如果选定来存储下载的必要存储器数量(该数量可以是对所有更新而预定的数量,或可由无线扇区管理器204在它的状态查询中提供给更新客户端208)在RAM存储器82内不可用,则用户站28将在其给无线扇区管理器204的状态报告中包含此信息。另一选择是,用户站23内的更新客户端208可以确定它是否能终止使用RAM的处理和/或应用,从而腾空存储器空间,并且如果可能,将在发送状态响应至无线扇区管理器204之前就这样做。
无线扇区管理器204检查从每个要更新的用户站28接收的状态响应,并确定此时可以将哪些用户站包括在更新中。然后,这些用户站28中每一个的更新客户端208从无线扇区管理器204接收更新信息传输,该无线扇区管理器204通知用户站28它们会经历更新,并指明要在其上发射更新的通信链路32的信道。
然后无线扇区管理器204启动从更新服务器36到被指示处理更新的用户站28的对更新的多点传送传输。在本发明的实施例中,经是以多点传送传输经UDP在IP上来发射更新,且每个发射分组包括CRC校验和,以验证分组的正确接收以及顺序编号或其他唯一标识符,从而每个用户站28可以确定它是否正确接收到所有必需分组。在由用户站28不正确接收或连同丢失一个或多个分组的情况中,当传输进行时,该用户站28可以发送重新发射请求给无线扇区管理器204,且所请求的分组能够被重新发射。优选的,在多点传送信道上执行此重新传输,并可用于所有正在更新的用户站28(在多于一个用户站请求重新传输相同分组的情况中),尽管也期望为此目的在由无线扇区管理器204为用户站28所建立通信链路32的专用信道上进行此重新传输至用户站。
在实施例中,一旦下载并验证了整个更新,在用户站中的更新客户端必须确定何时执行RSU86的更新。因为更新将要求重新启动(重新开启)用户站28,因此,更新客户端208试图选择对最终用户出现最小服务中断(如果有的话)的更新时间。同样,期望这种更新通常在深夜或凌晨或最终用户使用用户站28的可能性低的任何其他时间执行。
然而,在用户站28内的更新客户端208还可以通过确定发生哪些最终用户活动和/或自从上次最终用户活动的时间来作出关于何时执行更新的智能决定。例如,多于20分钟以前进行上次最终用户语音或数据连接的用户站28可以做出合理假设,它在随后执行更新的几分钟内不会被最终用户所使用。
同样,还期望某些更新对网络20操作具有充分的重要性,它们将具有分配给它们的优先级,该优先级能使更新客户端208终止在用户站上的最终用户活动,以确保执行更新。
当更新客户端208已确定可以执行更新时,执行上述讨论的处理,用新固件分区108’或复制分区108等重写辅助软件分区112。
一旦执行了成功的更新,并且用户站28已重新启动并执行新的核心固件和/或辅助软件,则发送更新状态消息给无线扇区管理器204,通知其更新已完成,并且验证由用户站28执行的软件版本编号。然后无线扇区管理器204更新它对已被更新以及那些仍需要更新的用户站28的记录。
然后无线扇区管理器204通过一次或多次迭代,来对剩余的要更新的用户站28重复该处理。期望直至无线扇区内预先选定比例的要更新的用户站28可用于更新时才开始更新。例如能够选定除非至少其扇区内50%的要更新的用户站28可用于更新,否则无线扇区管理器204不会开始更新。如果没有达到此阈值,则将更新推迟直至满足此阈值,或直至网络操作中心降低此阈值(例如到35%),或增加更新优先级,从而强迫用户站28实施更新。
由无线扇区管理器204通知网络操作中心200更新的状态。因此,网络操作中心200可以确定已更新的用户站28的数量,以及剩余要更新的数量。如果网络操作中心200观察到少于其预期的用户站28执行了更新,则它可为更新提供优先级,从而强迫用户站28准备好进行更新等。
虽然期望在多数情况下核心固件和辅助软件更新可作为一个更新来发向射,但是,同时也期望某些情况下需要首先发射核心固件更新,在用户站28成功安装该更新之后再发射辅助软件更新。还期望在某些情况中需要仅更新辅助软件。在此种情况下时,不更新核心固件,并在现有辅助软件分区112写入更新的辅助软件。
图7显示上述更新处理的流程图。当网络操作中心200想要更新网络20内的装置时,在步骤300,确定需要安装更新的装置。在步骤304,传送更新到更新服务器36(或多个服务器)或使该对更新服务器36(或多个服务器)可用,此将更该新传送到要更新的装置。
在步骤308,每个无线扇区管理器204确定它服务的哪些装置可用于更新。在步骤312,无线扇区管理器204指示那些装置它们将被更新,并提供更新通信的细节,例如多点传送参数等。
在步骤316,发射更新到要更新的装置。每个预期装置或者在传输完成时或者在传输发生时验证传输更新的接收,且在步骤320,具有所接收的错误传输部分或具有所丢失的接收传输部分的装置向无线扇区管理器204通知这一事实,并且该无线扇区管理其204会重新发射这些部分。
在步骤324,一旦装置获得更新的正确副本,则该装置确定执行更新的适当时间。如上所述,该确定可以是无关重要的(即不考虑装置状态就执行更新),或取决于装置的状态,包括例如当前在装置上执行的处理,自从执行最终用户处理的时间等的因素。
当获得更新和装置的重新启动时,在步骤328,该装置向管理它的无线扇区管理器204通知它已被更新,并能够提供其当前装载软件的细节。
在步骤332,每个无线扇区管理器204确定是否有它管理的装置要更新。如果存在这样的装置,根据需要再次执行步骤308到328。如果没有这样的装置,更新程序在步骤336完成。
虽然在此说明的实施例是本发明的特定实施,但是应当理解,这些实施例的组合、子集以及变化都在本发明范围内。
上述本发明的实施例仅是本发明的例子,并且本领域技术人员还可以实现它的替代方案和修正,而不背离仅有附随权利要求限定的本
权利要求
1.一种更新在多个远程装置内的软件的方法,该装置中每一个具有的非易失性可重写存储容量都不足够大到可以存储软件的更新和先前的版本这两者,且该装置中每一个都连接到网络,该方法包括以下步骤(i)将更新放在更新服务器上,该更新包括至少核心固件更新;(ii)标识连接到网络的要更新的装置;(iii)从更新服务器通过网络传送更新到所标识的装置,每个所标识的装置验证该更新的接收,请求重新传输并接收任何先前未正确接收的更新部分;(iv)将所接收更新的核心固件部分写入到非易失性可重写存储单元中,从而不重写目前存储在存储单元内的核心固件的先前版本;(v)验证写入到存储单元的所接收更新的核心固件部分;(vi)将所验证的更新核心固件标识为要由该装置所使用的有效核心固件,并将核心固件的先前版本标识为不可用;以及(vii)重新启动该装置以装载并执行所更新的软件。
2.权利要求1的方法,其中在步骤(iii)和(iv)之间,将核心固件先前版本复制到存储在存储单元内的辅助软件上并对其进行验证,将该副本标识为要由该装置所使用的有效核心固件,并将原始的标识为不可用。
3.根据权利要求2的方法,其中更新进一步包括所更新的辅助软件,且由该装置接收并验证此辅助软件,以及其中在步骤(vi)和(vii)之间,用辅助软件更新来重写不可用的核心固件先前版本。
4.根据权利要求1的方法,其中更新进一步包括所更新的辅助软件,且由该装置接收并验证此辅助软件,以及其中在步骤(vi)和(vii)之间,用辅助软件更新来重写不可用的核心固件先前版本。
5.根据权利要求1-4中任何一个的方法,其中步骤(ii)还包括该装置向网络通知其是否可用于更新。
6.一种用于通过通信链路来远程更新在至少一个电子装置内的核心固件的系统,该系统包括在至少一个电子装置内的存储子系统,包括非易失性可重写存储器,在其中存储有核心固件,以及其足够大到可以存储辅助软件,但不够大到可以同时存储核心固件、核心固件更新版本以及辅助软件,该核心固件包括指令,其用于将核心固件更新版本写入到非易失性可重写存储器中,从而不重写核心固件先前版本,以及然后禁用核心固件先前版本,从而当重新启动该至少一个电子装置时,装载并执行核心固件更新版本;以及更新服务器,其操作用于通过通信链路来传送更新到至少一个电子装置,该更新包括核心固件的更新版本。
7.根据权利要求6的系统,其中核心固件包括指令,其用于将辅助软件的更新版本写入到非易失性可重写存储器,从而重写至少一部分禁用的核心固件先前版本,但不重写核心固件更新版本。
8.根据权利要求7的系统,其中存储子系统额外包括非易失性存储器,该非易失性存储器包括指令,该指令在当电子装置重新启动时被执行,并致使对非易失性可重写存储器进行扫描以寻找未禁用的核心固件版本,以及装载并执行那个核心固件版本。
9.一种用于通过通信链路来远程更新至少一个电子装置内的核心固件和辅助软件的系统,该系统包括在至少一个电子装置内的存储单元,其用于存储核心固件和辅助软件,包括非易失性可重写存储器,在其中存储有在第一分区,有包含核心固件的第一存储内容,以及在足够大到可以存储第一存储内容的第二分区,有足够小到可以存储在第一分区且包含辅助软件的第二存储内容,核心固件包括更新客户端,该更新客户端,在接收到第一存储内容的更新版本之后,将第一存储内容的更新版本写入到重写第二存储内容的第二分区,以及禁用包含在第一分区中的第一存储内容,以及然后在接收到第二存储内容的更新版本之后,将第二存储内容的更新版本写入到重写所禁用的第一存储内容的第一分区,并重新启动电子装置;以及非易失性存储器,其内存储有电子装置重新启动时所执行的引导装载指令,该引导装载指令包括指令,当执行该指令时,搜索非易失性可重写存储器以寻找未禁用的第一存储内容版本,以及当查找到一个时将电子装置的控制移交给存储在该存储内容中的核心固件,以及更新服务器,其操作用于通过通信链路传送更新到至少一个电子装置,该更新包含第一和第二存储内容的更新版本。
10.一种用于通过通信链路来远程更新至少一个电子装置内的核心固件和辅助软件的系统,该系统包括在至少一个电子装置内的存储单元,其用于存储核心固件和辅助软件,包括非易失性可重写存储器,其内存储有在第一分区,有包含核心固件的第一存储内容,以及在足够大到可以存储第一存储内容的第二分区,有足够小到可以存储在第一分区且包含辅助软件的第二存储内容,核心固件包括更新客户端,该更新客户端,在接收到第一存储内容的更新版本之后,将第一存储内容复制到重写第二存储内容的第二分区,将第一存储内容的更新版本写入到重写第一存储内容的第一分区,以及然后在接收到第二存储内容的更新版本之后,将第二存储内容的更新版本写入第二分区,并重新启动电子装置;以及非易失性存储器,其内存储有电子装置重新启动时所执行的引导装载指令,该引导装载指令包括指令,当执行该指令时,搜索非易失性可重写存储器以寻找未禁用的第一存储内容版本,以及当查找到一个时将电子装置的控制移交给存储在该存储内容中的核心固件,以及更新服务器,其操作用于通过通信链路传送更新到至少一个电子装置,该更新包含第一和第二存储内容的更新版本。
11.一种用于通过通信链路来远程更新至少一个电子装置内的核心固件和辅助软件的系统,该系统包括在至少一个电子装置内的存储单元,其用于存储核心固件和辅助软件,包括非易失性可重写存储器,其内存储有在第一分区,有包含核心固件的第一存储内容,以及在足够大到可以存储第一存储内容的第二分区,有足够小到可以存储在第一分区且包含辅助软件的第二存储内容,核心固件包括更新客户端,该更新客户端,在接收到第一存储内容的更新版本之后,如果可能,则减少第二分区的大小,从而它恰好足够大到可以存储第一存储内容的更新版本,将第一存储内容的更新版本写入到重写第二分区先前内容的第二分区,以及禁用存储在第一分区存储的第一存储内容版本,以及然后在接收到第二存储内容的更新版本之后,如果可能,增加第一分区的大小,以包括不在第二分区内的非易失性可重写存储器的任何部分,将第二存储内容的更新版本写入重写第一分区先前内容的第一分区,并重新启动电子装置;以及非易失性存储器,其内存储有电子装置重新启动时所执行的引导装载指令,该引导装载指令包括指令,当执行该指令时,搜索非易失性可重写存储器以寻找未禁用的第一存储内容版本,以及当查找到一个时将电子装置的控制移交给存储在该存储内容中的核心固件,以及更新服务器,其操作用于通过通信链路传送更新到至少一个电子装置,该更新包含第一和第二存储内容的更新版本。
12.根据权利要求6-11中任意一个的系统,其中写入到非易失性可重写存储器是经验证的。
13.根据权利要求12的系统,其中更新客户端进一步操作用于向更新服务器通知在给定时间该至少一个电子装置是否可用,更新服务器响应于从更新客户端接收的信息,以在当该电子装置不可用于更新时延迟到该电子装置的更新。
14.根据权利要求13的系统,其中更新服务器可以给更新优先级,从而更新客户端可使电子装置可用于在另外情况下是不可用的更新。
15.一种用于电子装置内的存储子系统,包括非易失性可重写存储器,其中存储有核心固件和辅助软件,核心固件包括指令,其用于将核心固件更新版本写入到该非易失性可重写存储器,从而重写至少一部分辅助软件,但不重写核心固件先前版本,验证核心固件更新版本,以及禁用核心固件先前版本,从而当重新启动该至少一个电子装置时,装载并执行核心固件更新版本。
16.一种用于电子装置内的存储子系统,包括非易失性可重写存储器,其中存储有核心固件,且其是足够大到可以存储核心固件和辅助软件,但不足够大到可以同时存储核心固件、核心固件的更新版本以及辅助软件,该核心固件包括指令,该指令用于将核心固件更新版本写入到该非易失性可重写存储器,从而不重写核心固件先前版本,验证核心固件更新版本,以及禁用核心固件先前版本,从而当重新启动该至少一个电子装置时,装载并执行核心固件更新版本。
17.根据权利要求15或16的存储子系统,其中核心固件包括指令,其用于将辅助软件的更新版本写入到非易失性可重写存储器,从而重写至少一部分禁用的核心固件先前版本,但不重写核心固件更新版本。
18.根据权利要求17的存储子系统,还包括非易失性存储器,其包含指令,该指令在当电子装置重新启动时执行,并致使扫描非易失性可重写存储器以寻找未禁用核心固件版本,以及装载并执行该未禁用的核心固件版本。
19.为用于能执行所存储的指令以及接收这种指令的更新版本的电子装置,一种用于存储这种指令的存储子系统,包括非易失性可重写存储器,其内存储有在第一分区,有第一存储内容,其包括至少允许电子装置重新启动、或当进行更新时如果电子装置重新启动则继续更新非易失性可重写存储器所需的指令;以及在足够大到可以存储第一存储内容的第二分区,有第二存储内容,其足够小到可以被存储在第一分区,并包括所有没有包含在电子装置重新启动之后正常操作所需的第一存储内容中的指令,在第一存储内容中所存储的指令包括指令,其在当接收到第一存储内容的更新版本之后被执行时,将第一存储内容更新版本写入到重写第二存储内容的第二分区中,并禁用包含在第一分区的第一存储内容;以及指令,其在当接收到第二存储内容更新版本之后被执行时,将第二存储内容更新版本写入到重写所禁用的第一存储内容的第一分区,并重启电子装置;以及非易失性存储器,其内存储有电子装置重新启动时所执行的引导装载指令,该引导装载指令包括指令,当执行该指令时,搜索非易失性可重写存储器以寻找未禁用的第一存储内容版本,以及当查找到一个时将电子装置的控制移交给存储在该存储内容中的指令。
20.为用于能执行所存储的指令以及接收这种指令的更新版本的电子装置,一种用于存储这种指令的存储子系统,包括非易失性可重写存储器,其内存储有在第一分区,有第一存储内容,其包括至少允许电子装置重新启动、或当进行更新时如果电子装置重新启动则继续更新非易失性可重写存储器所需的指令;以及在足够大到可以存储第一存储内容的第二分区,有第二存储内容,其包括所有没有包含在电子装置重新启动之后正常操作所需的第一存储内容中的指令,在第一存储内容中所在存储的指令包括指令,其在当接收到第一存储内容的更新版本之后被执行时,将第一存储内容复制到重写第二存储内容的第二分区中,将第一存储内容更新版本写入到重写第一存储内容的第一分区中,以及指令,其在当接收到第二存储内容更新版本之后被执行时,将第二存储内容更新版本写入到重写所禁用的第一存储内容的第一分区,并重启电子装置;以及非易失性存储器,其内存储有电子装置重新启动时所执行的引导装载指令,该引导装载指令包括指令,当执行该指令时,搜索非易失性可重写存储器以寻找未禁用的第一存储内容版本,以及当查找到一个时将电子装置的控制移交给存储在该存储内容中的指令。
21.为用于能执行所存储的指令以及接收这种指令的更新版本的电子装置,一种用于存储这种指令的存储子系统,包括非易失性可重写存储器,其内存储有在要么以非易失性可重写存储器的起始为开始、要么以非易失性可重写存储器的末尾为结束的连续的第一分区中,有第一存储内容,其包括至少允许电子装置重新启动、或当进行更新时如果电子装置重新启动则继续更新非易失性可重写存储器所需的指令,以及在占用不在第一分区之内的非易失性可重写存储器部分且足够大到可以存储第一存储内容的第二分区中,有第二存储内容,其包括所有电子装置重新启动之后正常操作所需的且没有包含在第一存储内容中的指令,在第一存储内容中所存储的指令包括指令,其在当接收到第一存储内容的更新版本之后被执行时,如果可能,则减少第二分区的大小,从而它恰好足够大到可以存储第一存储内容的更新版本,将第一存储内容的更新版本写入到重写第二分区先前内容的第二分区,以及禁用存储在第一分区的第一存储内容,以及指令,其在接收到第二存储内容的更新版本之后被执行时,如果可能,则增加第一分区的大小,以包括不是第二分区中的非易失性可重写存储器的任何部分,将第二存储内容的更新版本写入到重写第一分区先前内容的第一分区,并重新启动电子装置;以及非易失性存储器,其内存储有电子装置重新启动时所执行的引导装载指令,该引导装载指令包括指令,当执行该指令时,搜索非易失性可重写存储器以寻找未禁用的第一存储内容版本,以及当查找到一个时将电子装置的控制移交给存储在该存储内容中的指令。
22.一种以核心固件更新版本来更新与辅助软件一同存储在电子装置的非易失性可重写存储器内的核心固件的方法,包括以下步骤(i)将核心固件更新版本写入非易失性可重写存储器中,从而重写辅助软件的至少一部分,但不重写核心固件的先前版本;以及(ii)禁用核心固件的先前版本,从而在重新启动电子装置时可以装载并执行该核心固件的更新版本。
23.一种以核心固件和辅助软件更新版本来更新存储在电子装置非易失性可重写存储器内的核心固件和辅助软件先前版本的方法,包括以下步骤(i)将核心固件更新版本写入到非易失性可重写存储器中,从而重写至少一部分辅助软件,但不重写核心固件先前版本;(ii)禁用核心固件先前版本,从而当重新启动该电子装置时,装载并执行该核心固件更新版本;以及(iii)将辅助软件更新版本写入到非易失性可重写存储器中,从而不重写核心固件更新版本。
24.根据权利要求22或23的方法,其中,当重新启动电子装置时,对非易失性可重写存储器进行扫描以寻找未禁用的核心固件版本,以及然后装载并执行那个核心固件版本。
25.一种将更新安装到存储在非易失性可重写存储器内的软件的方法,该存储器不足够大到容纳该更新和该软件两者,该方法包括以下步骤将更新分为分离的可写部分,其包括可存储在不大于非易失性可重写存储器一半的核心部分;将非易失性可重写存储器分为分离的可重写部分,其包括核心部分,该核心部分不大于非易失性可重写存储器的一半且包含对应于更新的核心部分的软件部分,以及辅助部分,其恰好足够大到可以容纳更新的核心部分;将更新的核心部分写入到非易失性可重写存储器的辅助部分并验证它;禁用包含在非易失性可重写存储器核心部分的先前软件版本;以及将未包括在更新核心部分的更新部分写入到未包括在非易失性可重写存储器核心部分内的非易失性可重写存储器部分,并验证它。
26.一种用于通过通信链路来远程更新至少一个电子装置的系统,所述系统包括更新服务器,其操作用于通过通信链路来传送更新到至少一个电子装置,该更新包括核心固件和辅助软件;易失性存储器,其暂时存储从更新服务器接收的传送;在所述至少一个电子装置内的非易失性重写存储单元,其分为至少第一和第二分区,第一分区存储核心固件和辅助软件版本之一,以及第二分区存储核心固件和辅助软件另一版本;以及在该装置上执行更新客户端,且操作用于(i)用所接收的存储在易失性存储器内的更新核心固件来重写存储在第一和第二分区其中之一的辅助软件版本,并验证此写入的成功;(ii)当下一次该装置重新启动时,配置该装置来执行存储在(i)的核心固件;(iii)用所接收的存储在易失性存储器内的更新辅助软件来重写存储在第一和第二分区的另一个中的核心固件版本,并验证此写入的成功;(iv)重新启动该装置,以执行更新的核心固件和更新的辅助软件。
27.根据如权利要求26的系统,其中所述更新客户端进一步操作用于向更新服务器通知在给定时间该装置是否可用于更新,更新服务器响应于从更新服务器所接收的信息,以在当该装置不可用于更新时延迟到该装置的更新。
28.根据权利要求27所要求的系统,其中更新服务器可以给更新定优先级,从而更新客户端使该装置可用于在另外情况下不可用的更新。
全文摘要
一种用于远程更新至少一个连接到网络的电子装置上软件的系统。该电子装置具有划分为至少两个分区的非易失性重写存储单元,其中一个分区包含核心固件,且另一分区包含辅助软件。当在装置接收到更新时,将所更新的核心固件写入以重写在包含辅助软件的可重写存储单元内的分区。当这项完成并得到验证时,禁用由装置来执行存储在存储单元内的核心固件先前版本。然后,将更新辅助软件写入以重写核心固件旧版本。当完成该写入时,装置确定一个适当时间,以重写启动来执行更新软件。在另一个实施例中,从其所位于的分区将装置内的当前核心固件复制到另一分区,重写存储在那里的辅助软件。将接收到来更新装置的新核心固件重写到第一分区,在更新失败时,存在旧的复制核心固件,且当成功更新第一分区时,将辅助软件写入到第二分区,重写所复制的旧核心固件。这样,在装置常规操作中保留了核心固件和辅助软件在分区内的位置。
文档编号G06F13/00GK1585926SQ02822665
公开日2005年2月23日 申请日期2002年9月17日 优先权日2001年9月17日
发明者马克·弗雷泽, 菲利普·A·里瓦德 申请人:索马网络公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1