写点什么

RVB2601 应用开发实战系列四:FOTA 镜像升级

发布于: 2 小时前
RVB2601应用开发实战系列四:FOTA镜像升级

关键词:RVB2601、RISC-V 开发板、玄铁 E906、WiFi&BLE , 低功耗, AliOS Things,RISC-V  MCU,上手,好用,控制,开关


1. 概述

本文介绍如何在 CH2601 开发板上进行 FOTA 升级。 FOTA 是 Firmware Over the Air 的缩写,即固件空中升级,最常见的就是手机固件的升级。固件的定义范围比较模糊,windows 操作系统升级、手机升级、嵌入式系统、单片机控制程序等都的远程升级可以笼统地称为 FOTA。用这种方式,设备厂商可以更加快速地进行系统软件的迭代;能够更加快速地向市场推出具有新功能的设备并以此提高用户对其设备的满意度。 下面我们以 ch2601_fota_demo 为例来介绍如何进行 FOTA 升级。


2. 环境准备

  • 硬件:RVB2601 开发板一块、USB 线 2 根

  • 软件:CDK最新版本(Windows)


3. 示例获取

打开 CDK 软件。

点击红色处按钮,点击新建工程按钮。


在搜索框输入 fota,点击右边的搜索按钮,ch2601_fota_demo 就显示出来了。 点击创建工程。


在弹出框输入工程名字,版本号默认 v7.4.3 即可。点击下载方案按钮,等待下载完成。


4. 操作流程


我们分成 3 个大的步骤进行介绍:

  • 不同版本固件的生成

  • OCC 固件添加,升级策略配置

  • 设备端配置参数,下载固件并进行系统的升级


请注意:以下出现的方案目录指的是 solutions/ch2601_fota_demo 这个文件夹下。


4.1 编译生成不同版本固件

4.1.1 基础镜像包 1.0.0 生成

在示例获取那个章节我们已经把 ch2601_fota_demo 工程拉取下来了,接下来我们要编译这个工程并生成相应的镜像包。 如下图所示,点击红色方框处按钮进行编译。


编译结束之后,会在方案目录的 generated 下生成 images.zip 包。如下所示,打开方案目录。



将这个 images.zip 拷贝到上级目录(方案目录)并重命名为 images_1.0.0.zip


4.1.2 镜像包 1.1.1 版本生成

可以在方案的 app/src/app_main.c 文件中加个打印保存文件,并重新编译。将生成的 generated/images.zip 拷贝到方案目录,并重命名为 images_1.1.1.zip,作为高版本。


4.2 OCC 版本管理

4.2.1 创建产品,获取许可证


  • 在平头哥芯片开发社区上创建产品,在控制台->FOTA 服务->添加产品,如下图所示,点击提交按钮。



  • 点击编辑按钮


  • 选择许可证, 点击生成按钮,稍等刷新下即可


如下图所示,表示开发许可证已经生成完毕


4.2.2 上传镜像包至 OCC 服务器,并发布

  • 在我的产品->编辑->FOTA 页面选择添加固件


点击提交按钮


点击红色方框


点击发布按钮


返回之后,发布状态就会变成已发布,如果状态未变,可以再次刷新下。

  • 发布 1.1.1 版本


提交完毕之后,选择 1.1.1 版本那一行进行发布。发布成功之后,服务器就会生成 FOTA 固件了。


4.2.3 云端选择升级策略

如右边红色框框,添加标签:


下图中的 CID 的值后面需要用到,请先记录下来


选择升级策略:


选择刚才写的标签,并提交:


到此为止,云端的配置基本结束了。


4.3 设备检测升级

4.3.1 将发布的镜像包下载到本地

点击红色框图位置下载镜像包到本地


4.3.2 取出 hex 文件放到指定位置用 CDK 进行烧录

将下载过来的镜像包解压,并取出 total_image.hex 文件,放到方案目录的 generated 目录下



切换到 CDK 工程,点击红色方框处按钮开始烧录。


烧录过程中。。。


烧录完毕


按复位键启动的打印如下,可以看到当前的版本为 1.0.0 的版本


4.3.3 设备端设置 deivce_id/model,接收固件

我们需要设置一些参数才能联网并且接受新的固件。

4.3.3.1 WiFi 设置

通过串口终端输入: kv set wifi_ssid <your_wifi_ssid> kv set wifi_psk <your_wifi_password>

  • your_wifi_ssid:你的 wifi 名字

  • your_wifi_password:你的 wifi 密码


4.3.3.2 设备信息设置

通过串口终端输入: kv set device_id <key> kv set model ch2601

  • key:即 4.7 章节图片中提到的 CID 的值

  • model:即 4.1 章节中的产品型号值


设置完毕之后按开发板上的复位键重启。


4.3.4 设备端完成固件接收,进入系统升级

请确保设备联网成功。 设备检测到新版本的打印:


开始下载数据:


下载检验完毕,设备自动重启进入系统升级:


4.3.5 系统升级完毕,设备重启,正常运行

系统升级完毕之后,设备自动重启,可以看到刚才加的打印信息出来了,版本号也更新了。


至此,说明整个 FOTA 升级已经成功完成了。


5. 注意事项

5.1 分区配置

使用升级功能需要指定升级包的存储区域。 配置文件:configs/config.yaml

mtb_version: 4chip: ch2601
diff: fota_version: 0 ram_buf: 50 #DEC KB ( max ram need) flash_buf: 16 #DEC KB ( buffer size) flash_sector: 4096 #DEC byte ( flash sector) diff_mode: 010 #BIN double_control: 1flash: base_address: 0x18000000 # 存储基地址,比如FLASH的基地址 sector: 4096 # Bytes size: 524288 #512kb $(sector count) * sector partitions: - { name: boot, address: 0x18000000, size: 0x10000 } - { name: imtb, address: 0x18010000, size: 0x02000 } - { name: bmtb, address: 0x18012000, size: 0x01000 } - { name: kv, address: 0x18013000, size: 0x04000 } - { name: prim, address: 0x18017000, size: 0x30000, verify: true, update: FULL} - { name: misc, address: 0x18047000, size: 0x39000 }
复制代码


对需要升级的分区加上 update 字段

  • 分区说明


5.2 代码

有关 FOTA 升级相关的代码主要是在 app/src/cop_fota.c 文件中。


6. 结束语

以上即为整个 FOTA 升级示例详细的操作说明。主要是在 OCC 芯片开放社区和 CDK 中进行操作。实际应用过程中需要做好版本的管理。 更多 FOTA 服务的介绍,可以参考FOTA服务

 

本文转自平头哥芯片开放社区(occ),更多详情请点击https://occ.t-head.cn/store/board?channelName=1

用户头像

还未添加个人签名 2021.08.24 加入

还未添加个人简介

评论

发布
暂无评论
RVB2601应用开发实战系列四:FOTA镜像升级