天天看点

RVB2601应用开发实战系列四:FOTA镜像升级1. 概述2. 环境准备3. 示例获取4. 操作流程5. 注意事项6. 结束语

1. 概述

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

ch2601_fota_demo

为例来介绍如何进行FOTA升级。

2. 环境准备

  • 硬件:RVB2601开发板一块、USB线2根
  • 软件: CDK 最新版本(Windows)
RVB2601应用开发实战系列四:FOTA镜像升级1. 概述2. 环境准备3. 示例获取4. 操作流程5. 注意事项6. 结束语

3. 示例获取

打开CDK软件。

点击红色处按钮,点击

新建工程

按钮。

RVB2601应用开发实战系列四:FOTA镜像升级1. 概述2. 环境准备3. 示例获取4. 操作流程5. 注意事项6. 结束语

在搜索框输入

fota

,点击右边的搜索按钮,

ch2601_fota_demo

就显示出来了。 点击

创建工程

RVB2601应用开发实战系列四:FOTA镜像升级1. 概述2. 环境准备3. 示例获取4. 操作流程5. 注意事项6. 结束语

在弹出框输入工程名字,版本号默认v7.4.3即可。点击

下载方案

按钮,等待下载完成。

RVB2601应用开发实战系列四:FOTA镜像升级1. 概述2. 环境准备3. 示例获取4. 操作流程5. 注意事项6. 结束语

4. 操作流程

RVB2601应用开发实战系列四:FOTA镜像升级1. 概述2. 环境准备3. 示例获取4. 操作流程5. 注意事项6. 结束语

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

  1. 不同版本固件的生成
  2. OCC固件添加,升级策略配置
  3. 设备端配置参数,下载固件并进行系统的升级

请注意:以下出现的方案目录指的是

solutions/ch2601_fota_demo

这个文件夹下。

4.1 编译生成不同版本固件

4.1.1 基础镜像包1.0.0生成

示例获取

那个章节我们已经把

ch2601_fota_demo

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

RVB2601应用开发实战系列四:FOTA镜像升级1. 概述2. 环境准备3. 示例获取4. 操作流程5. 注意事项6. 结束语

编译结束之后,会在方案目录的

generated

下生成

images.zip

包。如下所示,打开方案目录。

RVB2601应用开发实战系列四:FOTA镜像升级1. 概述2. 环境准备3. 示例获取4. 操作流程5. 注意事项6. 结束语
RVB2601应用开发实战系列四:FOTA镜像升级1. 概述2. 环境准备3. 示例获取4. 操作流程5. 注意事项6. 结束语

将这个

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

,作为高版本。

RVB2601应用开发实战系列四:FOTA镜像升级1. 概述2. 环境准备3. 示例获取4. 操作流程5. 注意事项6. 结束语

4.2 OCC版本管理

4.2.1 创建产品,获取许可证

  1. 注册登陆 平头哥芯片开发社区 后,进入到

    控制台

RVB2601应用开发实战系列四:FOTA镜像升级1. 概述2. 环境准备3. 示例获取4. 操作流程5. 注意事项6. 结束语
  1. 在平头哥芯片开发社区上创建产品,在

    控制台

    ->

    FOTA服务

    添加产品

    ,如下图所示,点击

    提交

    RVB2601应用开发实战系列四:FOTA镜像升级1. 概述2. 环境准备3. 示例获取4. 操作流程5. 注意事项6. 结束语
RVB2601应用开发实战系列四:FOTA镜像升级1. 概述2. 环境准备3. 示例获取4. 操作流程5. 注意事项6. 结束语
  1. 点击

    编辑

    按钮
RVB2601应用开发实战系列四:FOTA镜像升级1. 概述2. 环境准备3. 示例获取4. 操作流程5. 注意事项6. 结束语
  1. 选择

    许可证

    , 点击

    生成

    按钮,稍等刷新下即可
RVB2601应用开发实战系列四:FOTA镜像升级1. 概述2. 环境准备3. 示例获取4. 操作流程5. 注意事项6. 结束语

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

RVB2601应用开发实战系列四:FOTA镜像升级1. 概述2. 环境准备3. 示例获取4. 操作流程5. 注意事项6. 结束语

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

  1. 我的产品

    编辑

    FOTA

    页面选择

    添加固件

RVB2601应用开发实战系列四:FOTA镜像升级1. 概述2. 环境准备3. 示例获取4. 操作流程5. 注意事项6. 结束语

提交

RVB2601应用开发实战系列四:FOTA镜像升级1. 概述2. 环境准备3. 示例获取4. 操作流程5. 注意事项6. 结束语

点击红色方框

RVB2601应用开发实战系列四:FOTA镜像升级1. 概述2. 环境准备3. 示例获取4. 操作流程5. 注意事项6. 结束语

发布

RVB2601应用开发实战系列四:FOTA镜像升级1. 概述2. 环境准备3. 示例获取4. 操作流程5. 注意事项6. 结束语

返回之后,

发布状态

就会变成

已发布

,如果状态未变,可以再次刷新下。

  1. 发布1.1.1版本
RVB2601应用开发实战系列四:FOTA镜像升级1. 概述2. 环境准备3. 示例获取4. 操作流程5. 注意事项6. 结束语

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

4.2.3 云端选择升级策略

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

RVB2601应用开发实战系列四:FOTA镜像升级1. 概述2. 环境准备3. 示例获取4. 操作流程5. 注意事项6. 结束语

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

RVB2601应用开发实战系列四:FOTA镜像升级1. 概述2. 环境准备3. 示例获取4. 操作流程5. 注意事项6. 结束语

选择升级策略:

RVB2601应用开发实战系列四:FOTA镜像升级1. 概述2. 环境准备3. 示例获取4. 操作流程5. 注意事项6. 结束语

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

RVB2601应用开发实战系列四:FOTA镜像升级1. 概述2. 环境准备3. 示例获取4. 操作流程5. 注意事项6. 结束语

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

4.3 设备检测升级

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

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

RVB2601应用开发实战系列四:FOTA镜像升级1. 概述2. 环境准备3. 示例获取4. 操作流程5. 注意事项6. 结束语

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

将下载过来的镜像包解压,并取出

total_image.hex

文件,放到方案目录的

generated

目录下

RVB2601应用开发实战系列四:FOTA镜像升级1. 概述2. 环境准备3. 示例获取4. 操作流程5. 注意事项6. 结束语
RVB2601应用开发实战系列四:FOTA镜像升级1. 概述2. 环境准备3. 示例获取4. 操作流程5. 注意事项6. 结束语

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

RVB2601应用开发实战系列四:FOTA镜像升级1. 概述2. 环境准备3. 示例获取4. 操作流程5. 注意事项6. 结束语

烧录过程中。。。

RVB2601应用开发实战系列四:FOTA镜像升级1. 概述2. 环境准备3. 示例获取4. 操作流程5. 注意事项6. 结束语

烧录完毕

RVB2601应用开发实战系列四:FOTA镜像升级1. 概述2. 环境准备3. 示例获取4. 操作流程5. 注意事项6. 结束语

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

1.0.0

的版本

RVB2601应用开发实战系列四:FOTA镜像升级1. 概述2. 环境准备3. 示例获取4. 操作流程5. 注意事项6. 结束语

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 设备端完成固件接收,进入系统升级

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

RVB2601应用开发实战系列四:FOTA镜像升级1. 概述2. 环境准备3. 示例获取4. 操作流程5. 注意事项6. 结束语

开始下载数据:

RVB2601应用开发实战系列四:FOTA镜像升级1. 概述2. 环境准备3. 示例获取4. 操作流程5. 注意事项6. 结束语

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

RVB2601应用开发实战系列四:FOTA镜像升级1. 概述2. 环境准备3. 示例获取4. 操作流程5. 注意事项6. 结束语

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

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

RVB2601应用开发实战系列四:FOTA镜像升级1. 概述2. 环境准备3. 示例获取4. 操作流程5. 注意事项6. 结束语

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

5. 注意事项

5.1 分区配置

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

configs/config.yaml

1. mtb_version: 4
2. chip: ch2601
3. 
4. diff:
5. fota_version: 0
6. ram_buf: 50              #DEC     KB   ( max ram need)
7. flash_buf: 16        #DEC     KB   ( buffer size)
8. flash_sector: 4096   #DEC     byte ( flash sector)
9. diff_mode: 010       #BIN
10. double_control: 1
11. flash:
12. base_address: 0x18000000  # 存储基地址,比如FLASH的基地址
13. sector: 4096              # Bytes
14. size: 524288              #512kb $(sector count) * sector
15. 
16. partitions:
17. - { name: boot,   address: 0x18000000, size: 0x10000 }
18. - { name: imtb,   address: 0x18010000, size: 0x02000 }
19. - { name: bmtb,   address: 0x18012000, size: 0x01000 }
20. - { name: kv,     address: 0x18013000, size: 0x04000 }
21. - { name: prim,   address: 0x18017000, size: 0x30000, verify: true, update: FULL}
22. - { name: misc,   address: 0x18047000, size: 0x39000 }
yaml      

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

  • 分区说明
分区 说明
boot bootloader镜像
bmtb 分区表
imtb 分区表,包含所有分区位置及安全信息
prim 应用镜像
misc 升级备份区,下载下来的镜像先存储在此分区
kv KV数据区

5.2 代码

有关FOTA升级相关的代码主要是在

app/src/cop_fota.c

文件中。

6. 结束语

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

FOTA服务

继续阅读