SemiDrive E3 OTA 介绍及实例

关键字 :E3SemiDriveOTA

一、 概述

本文将对 SemiDrive E3 OTA 进行简要介绍,主要内容包括实现 E3 的 OTA的软硬件准备、E3 OTA 的实现原理及流程、OTA 的实例操作等。

二、 软硬件准备

2.1 硬件

(1)E3640 Gateway 参考板

                                                                   图 2.1 E3640 Gateway 参考板

 

(2)12V 电源适配器

                                                  图 2.2 12 V 电源适配器

 

(3)Jlink V11 调试器

                                                        图 2.3 Jlink V11 调试器

 

(4)Micro USB 数据线

                                                       图 2.4 Micro USB 数据线

(5)普通网线 1 根

                                                                        图 2.5 网线

(6) USB 转 RJ45

                                                                      图 2.6 USB 转 RJ45

2.2 软件

(1)Putty 串口调试

                                                        图 2.7 Putty 串口调试工具

(2) Tftpd64,用于 FTP 文件传输

                                                          图 2.8 Tftpd64

(3)SSDK PTG2.1.1(申请后可以在芯驰的线上支持系统上获取)

                                                      图 2.9 SSDK PTG2.1.1

(4) IAR 8.50 版本及以上

                                        图 2.10 IAR 8.50.6

(5)SDToolBox,用于提取镜像文件。

                                                                         图 2.11 SDToolBox

三、 E3 OTA 流程

在介绍 E3 的 OTA 流程之前,我们先介绍下E3 的启动流程,主要有两种,分别为 All-By-ROM 启动和 SF-Only 启动。
(1)All-By-Rom 启动

该模式下 Boot ROM 负责系统所有 R5 核的启动,具体流程如下:

  • ROM 根据拨码读取存储设备,选择 Boot Package 进行启动,选择的规则如下:
    • 如果只有 1 个 Boot Package 并且校验合法,从该 Boot Package 启动。
    • 如果多于 1 个 Boot Package,选择校验合法的启动。
    • 如果多于 1 个 Boot Package、并且多个 Boot Package 校验均合法,则选择 PSN 较大的 Boot Package 启动。
    • 如果 PSN 相等且 BPT 都是合法的,则按 Normal Boot Package > Second Boot Package > Third Boot Package 的顺序启动。
  • Boot ROM 根据 Image 组合中的 SCB 对系统进行配置,比如初始化 SDRAM。
  • Boot ROM 启动 Image 组合中的 SX/SP 核(如果存在),最后启动 SF 核。
  • 如果 Image 组合中包含 SF 核的 Bootloader 程序,上电后 ROM 不会先启动 Bootloader,而是会进入 SF 核主程序,然后在主程序中判断是否进入 Bootloader,如果需要,则设置 RSTGEN_SF_GPR0 的通用寄存器中对应的 Bootloader 标志位,并进行系统软复位,ROM 检测到该标志后启动 SF 核的 BootLoader 程序。
(2)SF-Only 启动

该模式下,ROM 只会启动 SF 核的主程序,然后由 SF 的程序去加载其它核的 Image 并且启动,板卡默认的启动方式为 All-By-ROM 启动,如果需要 SF-Only 启动,则需要修改打包脚本。该启动方式的具体流程如下:

  • ROM 读取 SFS,选择校验通过并且 PSN 最大的 Boot Package 启动 SF 镜像。
  • SF 主程序启动后读取分区表,加载其它核的镜像并且启动。

E3 OTA 例程中采用的流程如下:

  • 代码运行,串口接收升级命令。
  • 根据命令获取 Boot Package 的文件名和路径。
  • 通过 tftp 协议获取文件。
  • 获取文件后读取并解析其 BPT。
  • 判断 BPT 格式是否正确,正确则进行下一步,否则升级失败。
  • 获取启动设备 Boot Package 最大的 PSN 和最小的 PSN。
  • 判断当前运行的 Boot Package 是否是最大的 PSN,如果是则 PSN 最小的 Boot Package 作为升级目标,否则最大的 PSN 的 Boot Package 作为升级目标。
  • 判断升级文件的 PSN 是否大于或等于启动设备最大的PSN,如果是则执行下一步,否则升级失败。
  • 检查 XIP 运行地址是否正确(非 XIP 无需检查),正确则进入下一步,否则升级失败。
  • 擦写启动介质中 PSN 最小的 Boot Package 区域。
  • 回读并计算 MD5 是否正确,是则升级完成,否则升级失败。

四、 E3 OTA 实例

E3 SSDK 中有通过以太网 OTA 升级的例程,具体路径如下:

                                                        图 4.1 OTA 例程路径

 

打开例程编译并且烧录到板子上,这里的过程就不详细叙述,通过 USB 数据线接上串口,打开 Putty 软件并且上电,可以看到串口终端打印以下信息。

                                                      图 4.2 上电后的串口打印信息

接着准备一个 PSN 比较大的 Image 文件,命名为 boot0.img,这里简单介绍下如何制作 PSN 比较大的 Image 镜像。首先我们在将工程编译后的二进制文件打包成 PAC 文件之前,可以修改 SSDK 中 tools 文件夹下的 genpac.py 文件,将其中的 PSN 值修改成自己想要设置的,文件中的 PSN 值默认都是 0x100。我们可以将其修改成 0x200 后再进行打包。

                                                                 图 4.3 修改 PSN 值

接着使用 SDToolBox 工具打开生成的 PAC 包,这里可以找到 PAC 中 img 文件的路径,这个 img 文件就是我们后续要升级的镜像文件。

                                                                     图 4.4 img 文件的路径

 

制作好 boot0.img 文件后,打开 Tftpd64 软件,将 boot0.img 文件放在软件的根目录下,如下图所示。

                                               图 4.5 boot0.img 放置目录

 

将板子用网线通过 USB 转 RJ45 连接到电脑,并将电脑以太网口的 IP 地址设置为跟板子同个网段的,例如板子默认的 IP 为 10.18.251.70,则可以将电脑以太网口的 IP 设置为 10.18.251.75,如下图所示。

                                                                      图 4.6 配置IP 地址

 

接着在 putty 中输入 OTA 升级的命令 “ota -d flash0 -f eth0:boot0.img -b”,按 “Enter” 确认。

                                                                       图 4.7 输入 OTA 命令

 

升级完成后可以看到串口会提示升级成功,并且可以看到代码已经运行升级后的代码,如下图所示。

                                                                           图 4.8 OTA 升级完成

至此,关于 E3 OTA 升级的介绍到此结束。

五、参考资料

1.《AppNote_E3_Boot_and_OTA_For_SSDK_PTG1.0_Rev01.05》,2022.09

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论