一种软件自动升级控制方法、 装置及设备 【技术领域】
本发明属于软件领域, 尤其涉及一种软件自动升级控制方法、 装置及设备。背景技术 为了解决产品使用过程中出现的问题和不断完善产品功能, 网络电视和 IPTV 机 顶盒等产品目前都有带有软件升级模块, 不断更新其产品软件功能以更好的满足用户使用 需求。
常用的软件升级策略有开机自动升级和进入升级页面手动升级两种, 在开机自动 升级时, 用户开机后系统自动检查当前软件版本和网络上的最新版本, 如果发现有更新版 本则立即进入升级系统完成升级任务。在进入升级页面手动升级时, 用户点击菜单中的升 级按钮, 完成升级任务。
采用这两种升级手段升级时, 在执行升级的过程中用户只能被动等待, 停止使用 系统提供的娱乐功能, 占用较多用户对网络电视和 IPTV 机顶盒等的使用时间, 一旦升级过 程中发生故障就必须重新启动进入备份系统继续升级直到升级成功为止。
发明内容 本发明实施例的目的在于提供一种软件自动升级控制方法, 旨在解决现有软件升 级时需要停止设备的运行, 影响用户正常使用设备的问题。
本发明实施例是这样实现的, 一种软件自动升级控制方法, 所述方法包括下述步 骤:
将存储空间配置为两个互为备份的代码区 ;
软件升级时, 对处于空闲状态的代码区的代码进行升级, 并将启动标识指向最新 升级的代码区代码。
本发明实施例的另一目的在于提供一种软件自动升级控制装置, 所述装置包括 :
存储空间配置单元, 用于将存储空间配置为两个互为备份的代码区 ; 以及
升级控制单元, 用于在软件升级时, 对处于空闲状态的代码区的代码进行升级, 并 将启动标识指向最新升级的代码区代码。
本发明实施例的另一目的在于一种包含上述软件自动升级控制装置的设备。
本发明实施例的另一目的在于一种包含上述软件自动升级控制装置的网络电视。
本发明实施例的另一目的在于一种包含上述软件自动升级控制装置的 IPTV 机顶 盒。
本发明实施例将存储空间划分为互为备份的两个代码区, 在软件升级时升级处于 空闲状态的代码区中的代码, 不影响设备的正常运行, 从而不影响用户对设备的正常使用, 有效提高了升级模块的健壮性和容错性, 避免了在升级过程中出现的异常对系统的破坏, 而且由于升级可以在后台进行, 不占用用户使用时间。
附图说明
图 1 是本发明实施例提供的存储空间划分示意图 ; 图 2 是本发明实施例提供的软件自动升级控制方法的实现流程图 ; 图 3 是本发明实施例提供的系统启动方法的实现流程图 ; 图 4 是本发明实施例提供的软件自动升级控制装置的结构图 ; 图 5 是本发明实施例提供的升级控制单元的结构图。具体实施方式
为了使本发明的目的、 技术方案及优点更加清楚明白, 以下结合附图及实施例, 对 本发明进行进一步详细说明。 应当理解, 此处所描述的具体实施例仅仅用以解释本发明, 并 不用于限定本发明。
本发明实施例中, 将存储空间划分为互为备份的第一代码区和第二代码区, 在软 件升级时, 选择对处于空闲状态的代码区的代码进行升级, 升级完成后将系统标志更新为 最新升级的代码区, 使得系统重启时使用最新升级的代码区中的代码启动。
如 图 1 所 示, 在 本 发 明 实 施 例 中, 将设备的存储区域划分为引导加载区 (Bootloader)、 第一代码区、 第二代码区和分区配置区, 其中 : 引导加载区为不可代码区域, 存储引导加载程序, 引导加载程序是系统加电后运 行的第一段软件代码, 在操作系统内核运行之前运行, BootLoader 的主要运行任务就是将 内核映象从硬盘上读到 RAM 中, 然后跳转到内核的入口点去运行。通过这段程序, 可以初始 化硬件设备、 建立内存空间的映射图, 从而将系统的软硬件环境带到一个合适的状态, 以便 为最终调用操作系统内核准备好正确的环境。
第一代码区和第二代码区互为备份, 存储系统运行程序, 包括三个部分 :
操作系统内核, 例如 Linux 内核 ;
文件系统, 例如 SF 编码库 ; 以及
用户应用程序, 例如网络电视 (NTV) 应用。
分区配置区存储分区配置信息。
软件升级过程可以根据系统的资源使用情况在 CPU 空闲时进行, 升级开始时系 统下载升级包, 然后判断当前是运行在第一代码区还是第二代码区, 如果当前系统使用 的第一代码区代码时, 可升级第二代码区中的代码, 反之亦然。当升级成功完成时修改 Bootloader 配置域中的启动标识, 改为使用刚刚升级过的代码。 重新启动, 系统即可完成正 常的升级流程。
当升级过程中出现断电或其他异常时, 对于第二代码区的升级可能会失败, 但重 启后不影响用户的正常使用, 用户仍然可以使用第一代码区的代码, 直到用户再次升级第 二代码区的代码, 直到成功。重启后, Bootloader 自动跳转到第二代码区, 使用第二代码区 的代码启动。
图 2 示出了本发明实施例提供的软件升级控制方法的实现流程, 详述如下 :
在步骤 S201 中, 读取 CPU 资源利用率 ;
在步骤 S202 中, 检测本地软件版本, 判断是否需要升级, 是则执行步骤 S203, 否则 返回执行步骤 S201 ;
在步骤 S203 中, 连接网络, 下载升级包 ; 在步骤 S204 中, 读取升级标志, 该升级标志标识了升级哪个代码区内的代码 ; 在本发明实施例中, 对处于空闲状态的代码区的代码进行升级。 在步骤 S205 中, 根据升级标志选择对应的代码区, 执行升级过程 ; 在 步 骤 S206 中, 判 断 升 级 是 否 完 成, 是 则 执 行 步 骤 S207, 否则返回执行步骤S201 ; 在步骤 S207 中, 更新启动标识, 将启动标识指向最新升级的代码区内的代码。
如图 3 所示, 当系统重启后, 首先进入 Bootloader, 在 Bootloader 配置域中包含启 动标识, 该标识决定系统当前应该使用第一代码区还是第二代码区, 如果使用第一代码区, Bootloader 将载入第一代码区的内核 (kernel) 地址进而引导应用程序完成启动过程。
在步骤 S301 中, Bootloader 启动 ;
在步骤 S302 中, 读取启动标识 ;
在步骤 S303 中, 根据启动标识, 载入最新升级的代码区代码启动。
图 4 示出了本发明实施例提供的软件自动升级控制装置的结构, 为了便于说明, 仅示出了与本发明实施例相关的部分。
该软件自动升级控制装置可以是内置于网络电视、 IPTV 机顶盒等设备中。
存储空间配置单元 41 将存储空间配置为两个互为备份的代码区, 包括第一代码 区和第二代码区。
作为本发明的一个实施例, 存储空间配置单元 41 将存储空间配置为四个区 :
引导加载区, 用于存储引导加载程序 ;
互为备份的第一代码区和第二代码区, 用于存储系统运行程序 ; 以及
分区配置区, 用于存储分区配置信息。
升级控制单元 42 在软件升级时, 对处于空闲状态的代码区的代码进行升级, 并将 启动标识指向最新升级的代码区代码。
图 5 示出了本发明实施例提供的升级控制单元的结构, 为了便于说明, 仅示出了 与本发明实施例相关的部分。
CPU 利用率读取模块 421 读取 CPU 资源利用率。
升级判断模块 422 在 CPU 空闲时, 检测本地软件版本, 判断是否需要升级。
升级包下载模块 423 在升级判断模块 422 判断需要升级时, 连接网络, 下载升级 包。
升级代码区选择模块 424 读取升级标志, 根据升级标志选择处于空闲状态的代码 区, 运行升级包, 执行升级。
启动标识更新模块 425 判断升级是否完成, 在升级完成后更新启动标识, 将启动 标识指向新升级完成的代码区代码。
本发明实施例将存储空间划分为互为备份的两个代码区, 在软件升级时升级处于 空闲状态的代码区中的代码, 不影响设备的正常运行, 从而不影响用户对设备的正常使用, 有效提高了升级模块的健壮性和容错性, 避免了在升级过程中出现的异常对系统的破坏, 而且由于升级可以在后台进行, 不占用用户使用时间。
以上所述仅为本发明的较佳实施例而已, 并不用以限制本发明, 凡在本发明的精
神和原则之内所作的任何修改、 等同替换和改进等, 均应包含在本发明的保护范围之内。