9.2.5. eMMC 平台测试指南

9.2.5.1. 测试环境

9.2.5.1.1. 硬件

  • 开发板

9.2.5.1.2. 软件

  • PC端的串口终端软件, 用于PC和开发板进行串口通信

  • http或ftp服务器, 网络升级方式需要使用

    FTP服务器窗口如下所示:

../../../_images/ftp.png

注解

编译2份OTA升级包(Kernel, RootFS不同), 测试升级是否成功。

9.2.5.2. 编译OTA升级包

执行 lunch <board> 命令进入主系统, 执行 m 命令编译整个主系统, 获得Luban镜像, OTA升级包。

生成OTA升级包地址如下:

  • output/<board>/images/swupdate/<board>.swu

post-image.sh中swupdate_pack_swu函数用于编译生成OTA升级包。

9.2.5.3. 烧录OTA升级包到ota分区

首先将OTA升级包拷贝到target/d211/per1/ota目录下面:

cp output/d211_per1_mmc/images/swupdate/d211_per1_mmc.swu target/d211/per1/ota/

执行 m 命令编译ota分区镜像ota.ext4到Luban烧录镜像

通过 AiBurn 方式烧录ota.ext4到ota分区

9.2.5.4. 本地升级方式

9.2.5.4.1. 准备工作

挂载ota分区到mnt/ota目录下:

/etc/swupdate_main start

检查OTA升级包是否存在, 默认应该存在d211_per1_mmc.swu 和 this_is_a_test_file 两个文件

9.2.5.4.2. 主系统下启动升级命令

./usr/lib/swupdate/swupdate_cmd.sh -i /mnt/ota/d211_per1_mmc.swu -e stable,upgrade_recovery

注解

  1. -i 表示本地升级文件的路径, 根据具体路径, -e 表示升级哪个项目。

  2. 执行该命令以后, 整个升级过程自动执行完成

9.2.5.4.3. 升级过程说明

参考sw-description和swupdate_cmd.sh文件, 升级过程会进行两次重启, 具体过程:

  1. 首先运行主系统, 启动升级命令以后, 升级recovery分区、引导等。

  2. 重启, 进入Recovery系统。

  3. 升级Kernel、RootFS等。

  4. 重启, 进入主系统, 升级完成。

具体参考OTA设计部分

9.2.5.4.4. 升级判断

从程序打印log差异和RootFS中文件差异判断当前运行的版本。

9.2.5.5. 网络升级方式

网络升级方式有2种

  • 设备端为服务器, 电脑为客户端;

  • 设备端为客户端, 电脑为服务器;

实际生产过程中, 使用第二种方式

9.2.5.5.1. 准备工作

主系统和Recovery系统在启动时自动搭建好网络环境, 需要在启动脚本里面添加好对应的配置

ifconfig eth0 up
ifconfig eth0 192.168.1.200

9.2.5.5.2. 主系统下启动升级命令

主系统自动联网完成, 执行下面命令, 启动升级

./usr/lib/swupdate/swupdate_cmd.sh -d -uftp://192.168.1.100/d211_per1_mmc.swu -e stable,upgrade_recovery

如果搭建的是http服务器, 启动命令如下:

./usr/lib/swupdate/swupdate_cmd.sh -d -uhttp://192.168.1.100/d211_per1_mmc.swu -e stable,upgrade_recovery

9.2.5.5.3. 升级过程说明

参考sw-description和swupdate_cmd.sh文件, 升级过程会进行两次重启, 具体过程:

  1. 首先运行主系统, 启动升级命令以后, 从ftp服务器上下载对应OTA文件, 升级recovery分区、引导等。

  2. 重启, 进入Recovery系统。

  3. 从ftp服务器上下载对应OTA文件, 升级Kernel和RootFS。

  4. 重启, 进入主系统, 升级完成。

具体参考OTA设计部分

9.2.5.5.4. 升级判断

从程序打印log差异和RootFS中文件差异判断当前运行的版本。

注解

recovery系统启动内核时打开了内核信息, 主系统默认关闭, 通过内核打印信息可以判断程序执行在那个系统上