【swupdate文档 三】SWUpdate: 嵌入式系统的软件升级

SWUpdate是一个用于嵌入式系统软件更新的框架,支持从存储媒体或网络进行更新。它提供了从USB、SD卡、网络等进行安全、自动更新的功能,包括流式更新和镜像验证。SWUpdate可以与后端服务器通信,支持U-Boot变量管理和EFI Boot Guard,还可通过lua自定义解析器和处理程序。项目包括配置、构建、运行和系统引导更新等详细步骤。
摘要由CSDN通过智能技术生成

SWUpdate: 嵌入式系统的软件升级

概述

本项目被认为有助于从存储媒体或网络更新嵌入式系统。但是,它应该主要作为一个框架来考虑,在这个框架中可以方便地向应用程序添加更多的协议或安装程序(在SWUpdate中称为处理程序)。

一个用例是从外部本地媒体(如USB-Pen或sd卡)进行更新。在这种情况下,更新是在没有操作员干预的情况下完成的:它被认为是“一键更新”,软件在复位时启动,只需按下一个键(或者以任何目标可以识别的方式),自动进行所有检查。最后,更新过程只向操作员报告状态(成功或失败)。

输出可以使用帧缓冲设备显示在LCD上,也可以定向到串行通讯端口上(Linux控制台)。

它通常用于单拷贝方案中,在initrd中运行(用Yocto提供的配方生成)。但是,通过使用软件集合( collections ),可以在双拷贝方案中使用它。

如果启动了远程更新,SWUpdate将启动嵌入式web服务器并等待请求。操作者必须上传一个合适的映像,然后SWUpdate会进行检查并安装。所有输出都通过AJAX通知的方式通知操作人员的浏览器。

功能

总体概览

  • 安装在嵌入式介质上(eMMC、SD、Raw NAND、NOR、SPI-NOR flash)
  • 检查镜像是否可用。镜像以指定的格式(cpio)构建,它必须包含一个描述文件,以描述必须更新的软件。
  • SWUpdate被认为可以更新设备上的UBI卷(主要用于NAND,但不限于NAND)和镜像。传递整个镜像仍然用于对SD卡上的分区或MTD分区进行更新。
  • 新分区模式。这与UBI容量有关。SWUpdate可以重新创建UBI卷,调整它们的大小并复制新软件。一个名为“data”的特殊UBI卷在重新分区时,用于保存和恢复数据,以保持好用户数据。
  • 使用zlib库支持压缩镜像。支持tarball (tgz文件)。
  • 支持带分区的USB-pen或未分区盘(主要用于Windows)。
  • 支持更新文件系统中的单个文件。必须明确描述该文件所在的文件系统位置。
  • 支持图像中单个组件的校验和
  • 使用结构化语言来描述镜像。 这是使用 libconfig库作为缺省解析器完成的,它使用一种类似json的描述。
  • 使用自定义的方式来描述镜像。可以使用Lua语言编写自己的解析器。examples目录中提供了一个使用Lua中的XML描述的示例。
  • 支持设置/删除U-Boot变量
  • 支持设置/擦除 GRUB环境块变量
  • 支持设置/删除 EFI Boot Guard 变量
  • 使用嵌入式web服务器的网络安装程序(在Lua许可下的版本中选择了Mongoose服务器)。可以使用不同的web服务器。
  • 多种获取软件的接口 : - 本地存储: USB, SD, UART,..
  • OTA / 远程 : - 集成的网络服务器
    • 从远程服务器拉取(HTTP, HTTPS, ..)
    • 使用后端。SWUpdate是开放的,可以与后端服务器进行通信,以推出软件更新。当前版本支持Hawkbit服务器,但可以添加其他后端。
  • 可以配置为检查软件和硬件之间的兼容性。软件映像必须包含条目,声明这个软件可在什么版本硬件上运行。如果没有通过兼容性验证,SWUpdate将拒绝安装。
  • 支持镜像提取。制造商用一个映像包含用于多个设备的软件。这简化了制造商的管理,并降低了单一软件产品的管理成本。SWUpdate以流的形式接收软件,不进行临时存储,并只提取需要安装的设备组件。
  • 允许自定义处理器,通过自定义协议安装FPGA固件,微控制器固件。
  • 使用“make menuconfig”启用/禁用特性。(Kbuild继承自busybox项目)
  • 镜像在安装之前经过身份认证和校验
  • 掉电安全

交付单一镜像

主要概念是制造商提供单个大图像。所有单个的镜像都被打包在一起(选择cpio是因为它的简单性和可流式处理),同时打包的还有另一个文件(sw-description),该文件包含每个独立镜像的元信息。

sw-description的格式是可定制的:可以将SWUpdate配置为使用其内部解析器(基于libconfig),或者在调用外部的lua解析器。

image_format

可以使用外部解析器,改变对镜像的接受规则,以扩展支持新的镜像类型,指明它们需要如何安装。实际上,解析器就是检索必须安装哪些单个的镜像以及如何安装。

SWUpdate使用“处理程序”来安装单个镜像:有用于将镜像安装到UBI卷或SD卡、CFI闪存等的处理程序。如果需要特殊的安装程序,那么也可以很容易地添加自己的处理程序。

例如,我们可以考虑一个带有主处理器和一个或几个微控制器的项目。为了简单起见,我们假设主处理器使用专用协议通过UARTS与微控制器通信。微控制器上的软件可以使用专用协议进行更新。

可以扩展swuodate,编写一个处理程序,实现专用协议的一部分来对微控制器进行升级。解析器必须识别哪个镜像必须用新的处理程序来安装,随后S

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值