如果您的Digi Embedded Yocto系统已经在运行,您可以使用软件更新包(SWU)更新固件。

需求

要使用SWU包更新系统,您需要:

  • 分区复苏用Digi Embedded Yocto生成的恢复图像编程。看到恢复分区

  • 带有新固件的软件更新包。

  • 格式化更新分区来容纳SWU包,或者外部媒体,如microSD卡或USB磁盘。

恢复分区

复苏分区类似于linux分区;两者都包含内核和设备树blob。恢复分区还包括一个支持更新系统的恢复initramfs。当指示这样做时,initramfs使用swupdate工具对指定的SWU包进行编程。

遵循“开始”过程来获得复苏分区程序。看到步骤3 -编程Yocto固件

擦除更新分区

的主要目的更新分区用于在设备上启动固件更新进程之前存储固件更新文件。recovery utils软件包支持擦除更新通过命令行或自定义应用程序对设备进行分区。

擦去更新在命令行中执行如下命令:

#recovery-reboot——wipe-update-partition

要清除应用程序中的更新分区,请使用Digi提供的API。看到恢复库(固件更新)

使用SWU包更新固件

按照以下步骤从命令行更新系统:

  1. 获取SWU固件镜像有两种方式:

    1. 生成软件更新包(参见构建软件更新包),并在项目目录下找到图像文件:

      < project_folder >/ tmp /部署/图片/ ccimx8mn-dvk /<图片>-swu-ccimx8mn-dvk.swu

    2. 下载Digi提供的预建SWU:

  2. 确保更新包可以在以下位置访问:

    • 更新分区:

      #ls -l /mnt/update/ -rw-r——r——1 root root 731810304 Jan 26 18:15 -swu-.swu
    • 外部介质,如u盘或microSD卡:

      #. ls -l /run/media/sda1 -rw-r——r——1根磁盘731810304 Jan 26 18:15 -swu-.swu#ls -l /run/media/mmcblk1p1 -rw-r——r——1根磁盘731810304 Jan 26 18:15 -swu-.swu
  3. 运行更新固件命令,将路径作为参数传递给SWU文件。这将通过恢复引导模式触发固件更新过程:

    #更新固件/ mnt /更新/ <图像> -swu - > <平台。swu恢复命令已正确配置,系统将在10秒后重启进入恢复模式(^C表示取消)。[…]

    您可以通过选项配置重启超时时间(默认为10秒)- t更新固件命令。

    升级过程中会重启系统。

固件更新过程如下:

  1. 设备重启进入恢复模式。文件中的内核和initramfs复苏分区引导,而不是内核linux分区。

  2. 恢复ramdisk init的操作如下:

    1. 读取U-Boot的环境recovery_command变量作为软件更新包文件名。

    2. 中查找软件更新包更新分区和外部媒体。

    3. 执行swupdate将固件编程到模块中的工具。

  3. 设备重启,固件更新完成。

使用新的加密密钥进行更新

如果需要设置新的文件系统加密密钥(请参见Digi TrustFence for Yocto),使用——储存的密钥选择:

  • 更新固件Tool使用base64编码的32字节二进制密钥字符串:

    #update-firmware——encryption-key=YjNz1psJsO3PsxIcdQwCjW7MA0Y5IryT38UCddViJNM= /mnt/update/-swu-.swu
  • 如果没有提供,它也可以生成一个随机密钥:

    #update-firmware——encryption-key /mnt/update/-swu-.swu

您还可以使用Digi提供的固件更新API从自定义应用程序安装更新包。看到恢复库(固件更新)

复苏跑龙套

Recovery utils是一个软件包,它提供:

  • librecovery:静态库,执行支持的恢复命令。您可以将应用程序静态地链接到此库以使用恢复特性。有关更多信息,请参见恢复库(固件更新)

  • recovery-reboot命令行应用程序,允许您配置启动到恢复模式时将运行的命令。

    #recovery- Reboot——help设置恢复命令,重启进入恢复模式。版权所有(c)数码国际有限公司版本:0.3用法:recover -reboot [options] [] -u——update-firmware执行固件更新-e ——encrypt=加密提供的分区列表。-d ——unencrypt=取消提供的分区列表的加密。-k []——encryption-key[=]设置为文件系统加密密钥。空表示生成随机密钥。-w——Wipe -update-partition擦除'update'分区-T ——Reboot -timeout= N秒后重启(默认为10秒)-f——force强制(un)加密和密钥更改操作。——help打印帮助并exit 固件升级包的绝对路径
  • 更新固件:固件更新命令。

    #Update -firmware——help使用恢复重启更新固件。版权所有(c)数码国际有限公司版本:0.3用法:update-firmware [options]  -k []——encryption-key[=]设置为文件系统加密密钥。空表示生成随机密钥。-T ——Reboot -timeout= N秒后重启(默认为10秒)-f——force强制(un)加密和密钥更改操作。——help打印帮助并exit 固件升级包的绝对路径