Edit online

SPI NAND 平台测试指南

测试环境:
  • 硬件:开发板
  • 软件:
    • PC 端的串口终端软件, 用于 PC 和开发板进行串口通信

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

      FTP 服务器窗口如下所示:

      ../../images/ftp.png

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

编译 OTA 升级包

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

生成 OTA 升级包地址如下:

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

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

烧录 OTA 升级包到 ota 分区

  1. 将 OTA 升级包拷贝到 target/d211/per2_spinand/ota 目录下面:
    cp ~/luban_test2/output/d211_per2_spinand/images/swupdate/d211_per2_spinand.swu ~/luban_test2/target/d211/per2_spinand/ota
    
  2. 执行 m 命令编译 ota 分区镜像 ota*.ubifs 到 Luban 烧录镜像
  3. 通过 AiBurn 方式烧录 ota*.ubifs 到 ota 分区

本地升级方式

  1. 准备工作。挂载 ota 分区到 mnt/ota 目录下:
    /etc/swupdate_main start
    

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

  2. 主系统下启动升级命令
    ./usr/lib/swupdate/swupdate_cmd.sh -i /mnt/ota/d211_per2_spinand.swu -e stable,upgrade_recovery
    
    • -i 表示本地升级文件的路径, 根据具体路径, -e 表示升级哪个项目。

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

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

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

    2. 重启, 进入 Recovery 系统。

    3. 升级 Kernel、RootFS 等。

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

    具体参考 OTA 设计部分

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

网络升级方式

网络升级方式有 2 种

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

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

实际生产过程中, 使用第二种方式。
  1. 准备工作
    主系统和 Recovery 系统在启动时自动搭建好网络环境, 需要在启动脚本里面添加好对应的配置
    ifconfig eth0 up
    ifconfig eth0 192.168.1.200
    
  2. 主系统下启动升级命令
    主系统自动联网完成, 执行下面命令, 启动升级
    ./usr/lib/swupdate/swupdate_cmd.sh -d -uftp://192.168.1.100/d211_per2_spinand.swu -e stable,upgrade_recovery
    如果搭建的是 http 服务器, 启动命令如下:
    ./usr/lib/swupdate/swupdate_cmd.sh -d -uhttp://192.168.1.100/d211_per2_spinand.swu -e stable,upgrade_recovery
  3. 参考 description 和 swupdate_cmd.sh 文件, 升级过程会进行两次重启, 具体过程:

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

    2. 重启, 进入 Recovery 系统。

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

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

    具体参考 OTA 设计部分。

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

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