【启明智显技术分享】Model4 OTA使用指南

前言


启明智显的「Model系列」芯片,作为工业、行业及车载产品市场的佼佼者,以其高性能、低成本及广泛的适用性赢得了市场的广泛认可。其中,Model4作为该系列中的佼佼者,不仅继承了前代产品的所有优点,还在功能性和用户体验上进行了全面升级。特别是其支持OTA(Over-The-Air)空中升级功能,使得设备固件更新更加便捷、高效。本指南将详细介绍Model4 OTA功能的使用方法及注意事项。

一、OTA功能简介

OTA技术允许设备在不拆卸、不连接电脑或其他外部设备的情况下,通过网络接收并安装最新的固件更新。对于Model4而言,这意味着用户可以随时随地通过无线网络对设备进行固件升级,从而享受最新的功能优化、性能提升以及安全补丁。

二、准备工作

  1. 网络连接:确保Model4设备已连接到稳定的无线网络,以便能够接收OTA更新包。
  2. 固件版本检查:通过设备界面或相关软件检查当前固件版本,以确定是否需要更新。
  3. 备份数据:在进行OTA升级前,建议备份重要数据以防万一。

三、OTA升级原理图

四、ZX OTA 系统方案组成

  1. OTA app 程序从服务器上下载 OTA 升级包, 基于第三方库 ota-downloader 实现,采用分片下载机制,下载一部分程序,给目标分区升级一部分程序。 不需要一次下载整个数据包,节省了存储空间。

  2. ZX OTA系统方案使用 A/B 系统方案,通过环境变量指导升级和启动。

 五、选择 A/B 系统方案的原因

  1. 该方案可以解决“在升级过程中意外断电,造成系统更新失败,系统重启后不能继续升级”的问题。

  2. 该方案自带回滚机制,可以恢复到旧版本程序。

  3. 对比Recovery系统方案, 配置简单,维护方便。

  4. 该方案消耗的存储资源相对较少,现有平台存储资源完全能满足要求。

  5. 对比单系统方案,获取,校验,升级固件都在RTOS上进行,不涉及Boot,不需要额外存储空间保存 OTA 升级文件。

  6. 该方案是市面上的主流方案,很多厂家使用该方案。

六、升级说明

1、 A/B 系统方案分区信息

 

备注

  1. ENV 分区,用来保存 env 环境变量,增加了一个备用 ENV 分区,确保在一份数据破坏后,另外一份数据还能继续使用

  2. OS,RODATA分区各有一个备份分区,它们一起称为 A/B 系统

2、A/B 系统升级过程 

3、 OTA升级相关环境变量

osAB_next=A
osAB_now=A
upgrade_available=0
bootlimit=5
bootcount=0

 4、环境变量使用说明

5、环境变量在OTA升级过程中的作用

 

6、OTA升级包配置文件:ota-subimgs.cfg

相关文件路径如下(以M4为例):

target/m4/ZXM47D0N/pack/ota-subimgs.cfg

 查看配置信息:

/* 需要升级的分区,根据需求添加,如果添加也需在image_cfg.json配置对应的 *_r 分区 */
> cat ota-subimgs.cfg
m4_os.itb
rodata.fatfs
data.fatfs

 7、OTA升级包生成工具: mkcpio.py

tools/scripts/mkcpio.py

执行编译命令,会自动执行 mkcpio.py 命令生成 ota.cpio。mkcpio.py 具体调用了cpio, cpio.exe命令进行打包。

8、OTA包数据组成格式

9、SPINAND 平台 OS 阶段 app OTA 执行流程

zx_uart_ota uartx
|-> uart_rx_demo(argv[1]);
|-> uart_rx_demo_thread(uart 数据接收线程)
        |-> aic_upgrade_start();        //packages/third-party/ota_downloader/absystem.c 升级前读取环境变量信息,获取将要升级的系统
        |-> rt_device_read(serial, -1, uartrx, 1);                                      //通过串口接收升级包数据,并根据串口协议存储数据到 uart_rx_buf
        |-> _ota_update(uint8_t *framebuf, size_t len);                         //根据串口协议解析串口数据
        |-> ota_shard_download_handle(char *buffer, int length);        //采用分片方式写入数据
        |-> ota_buf_push(&shdr, buffer, length);                //将接收到的数据放到缓存区,供解析cpio头部信息
        |-> find_cpio_data(&fhdr, shdr.buf, shdr.buflen);   //解析cpio头部信息
        |-> head_buf_pop(&bhdr, &shdr, &fhdr);                          //将cpio头部信息后面的数据放到另外的缓存区,供升级使用
        |-> ota_buf_push(&bhdr, buffer, length);            //将下载的数据放到缓存区,供升级使用
        |-> aic_ota_find_part(partname);                                //获取分区信息
        |-> aic_ota_erase_part();                                                       //擦除分区
        |-> download_buf_pop(&bhdr, &fhdr)                  //将缓存区里面的数据取出来,升级到flash上
                |-> aic_ota_part_write                                                  //写入数据到flash上
                |-> cpio_file_checksum((unsigned char *)bhdr->buf, burn_len);   //升级完成以后,校验和信息
        |-> aic_upgrade_end();                  //升级结束,更新环境变量信息
        |-> cmd_reboot(0, NULL);                //重启

 10、SPINAND 平台 boot 阶段新系统程序加载启动流程

do_nand_boot //application/baremetal/bootloader/cmd/nand_boot.c
        |-> aic_ota_check();  //application/baremetal/bootloader/lib/absystem/absystem.c
                |-> aic_ota_version_fallback(); // OTA 升级失败,版本回退到之前的版本
        |-> aic_get_os_to_startup(target); //获取新系统信息
        |-> mtd_get_device(target); // 获取新系统 os 分区结构体
        |-> spl_load_simple_fit(&info, &entry_point); // 加载 os 分区程序到缓存上

Model4的OTA功能为用户提供了极大的便利,使得固件更新变得更加简单快捷。通过遵循上述使用指南和注意事项,用户可以轻松完成OTA升级并享受最新的功能和性能提升。启明智显将持续为用户提供优质的产品和服务,助力各行各业实现智能化升级。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值