查看: 1078|回复: 0
收起左侧

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

[复制链接]

  离线 

  • TA的每日心情
    拍拍
    2022-6-27 11:09
  • 签到天数: 25 天

    [LV.4]

    发表于 2021-5-4 11:37:13 | 显示全部楼层 |阅读模式

    有人预言,RISC-V或将是继Intel和Arm之后的第三大主流处理器体系。欢迎访问全球首家只专注于RISC-V单片机行业应用的中文网站

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    本帖最后由 sky 于 2021-5-4 11:36 编辑

    1. 概述

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

    2. 环境准备

    • 硬件:RVB2601开发板一块、USB线2根
    • 软件:CDK最新版本(Windows)
    CH2601 单片机芯片及应用-RVB2601应用开发实战系列四:FOTA镜像升级risc-v单片机中文社区(1)

    3. 示例获取

    打开CDK软件。

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

    CH2601 单片机芯片及应用-RVB2601应用开发实战系列四:FOTA镜像升级risc-v单片机中文社区(2)

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

    CH2601 单片机芯片及应用-RVB2601应用开发实战系列四:FOTA镜像升级risc-v单片机中文社区(3)

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

    CH2601 单片机芯片及应用-RVB2601应用开发实战系列四:FOTA镜像升级risc-v单片机中文社区(4)

    4. 操作流程

    CH2601 单片机芯片及应用-RVB2601应用开发实战系列四:FOTA镜像升级risc-v单片机中文社区(5)

    我们分成3个大的步骤进行介绍:
    • 不同版本固件的生成
    • OCC固件添加,升级策略配置
    • 设备端配置参数,下载固件并进行系统的升级
    请注意:以下出现的方案目录指的是solutions/ch2601_fota_demo这个文件夹下。


    4.1 编译生成不同版本固件
    4.1.1 基础镜像包1.0.0生成


    在示例获取那个章节我们已经把ch2601_fota_demo工程拉取下来了,接下来我们要编译这个工程并生成相应的镜像包。 如下图所示,点击红色方框处按钮进行编译。
    CH2601 单片机芯片及应用-RVB2601应用开发实战系列四:FOTA镜像升级risc-v单片机中文社区(6)

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

    CH2601 单片机芯片及应用-RVB2601应用开发实战系列四:FOTA镜像升级risc-v单片机中文社区(7)

    CH2601 单片机芯片及应用-RVB2601应用开发实战系列四:FOTA镜像升级risc-v单片机中文社区(8)

    将这个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,作为高版本。

    CH2601 单片机芯片及应用-RVB2601应用开发实战系列四:FOTA镜像升级risc-v单片机中文社区(9)

    4.2 OCC版本管理
    4.2.1 创建产品,获取许可证


    • 注册登陆平头哥芯片开发社区后,进入到控制台中

    CH2601 单片机芯片及应用-RVB2601应用开发实战系列四:FOTA镜像升级risc-v单片机中文社区(10)

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

    CH2601 单片机芯片及应用-RVB2601应用开发实战系列四:FOTA镜像升级risc-v单片机中文社区(11)
    CH2601 单片机芯片及应用-RVB2601应用开发实战系列四:FOTA镜像升级risc-v单片机中文社区(12)
    • 点击编辑按钮
    CH2601 单片机芯片及应用-RVB2601应用开发实战系列四:FOTA镜像升级risc-v单片机中文社区(13)

    • 选择许可证, 点击生成按钮,稍等刷新下即可
    CH2601 单片机芯片及应用-RVB2601应用开发实战系列四:FOTA镜像升级risc-v单片机中文社区(14)
    如下图所示,表示开发许可证已经生成完毕
    CH2601 单片机芯片及应用-RVB2601应用开发实战系列四:FOTA镜像升级risc-v单片机中文社区(15)

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

    • 在我的产品->编辑->FOTA页面选择添加固件
    CH2601 单片机芯片及应用-RVB2601应用开发实战系列四:FOTA镜像升级risc-v单片机中文社区(16)

    点击提交按钮
    CH2601 单片机芯片及应用-RVB2601应用开发实战系列四:FOTA镜像升级risc-v单片机中文社区(17)

    点击红色方框
    CH2601 单片机芯片及应用-RVB2601应用开发实战系列四:FOTA镜像升级risc-v单片机中文社区(18)

    点击发布按钮
    CH2601 单片机芯片及应用-RVB2601应用开发实战系列四:FOTA镜像升级risc-v单片机中文社区(19)

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

    • 发布1.1.1版本

    CH2601 单片机芯片及应用-RVB2601应用开发实战系列四:FOTA镜像升级risc-v单片机中文社区(20)
    提交完毕之后,选择1.1.1版本那一行进行发布。发布成功之后,服务器就会生成FOTA固件了。

    4.2.3 云端选择升级策略
    如右边红色框框,添加标签:
    CH2601 单片机芯片及应用-RVB2601应用开发实战系列四:FOTA镜像升级risc-v单片机中文社区(21)

    下图中的CID的值后面需要用到,请先记录下来
    CH2601 单片机芯片及应用-RVB2601应用开发实战系列四:FOTA镜像升级risc-v单片机中文社区(22)
    选择升级策略:
    CH2601 单片机芯片及应用-RVB2601应用开发实战系列四:FOTA镜像升级risc-v单片机中文社区(23)

    选择刚才写的标签,并提交:
    CH2601 单片机芯片及应用-RVB2601应用开发实战系列四:FOTA镜像升级risc-v单片机中文社区(24)

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

    4.3 设备检测升级
    4.3.1 将发布的镜像包下载到本地


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

    CH2601 单片机芯片及应用-RVB2601应用开发实战系列四:FOTA镜像升级risc-v单片机中文社区(25)

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

    将下载过来的镜像包解压,并取出total_image.hex文件,放到方案目录的generated目录下
    CH2601 单片机芯片及应用-RVB2601应用开发实战系列四:FOTA镜像升级risc-v单片机中文社区(26)
    CH2601 单片机芯片及应用-RVB2601应用开发实战系列四:FOTA镜像升级risc-v单片机中文社区(27)

    切换到CDK工程,点击红色方框处按钮开始烧录。
    CH2601 单片机芯片及应用-RVB2601应用开发实战系列四:FOTA镜像升级risc-v单片机中文社区(28)
    烧录过程中。。。

    CH2601 单片机芯片及应用-RVB2601应用开发实战系列四:FOTA镜像升级risc-v单片机中文社区(29)

    烧录完毕
    CH2601 单片机芯片及应用-RVB2601应用开发实战系列四:FOTA镜像升级risc-v单片机中文社区(30)

    按复位键启动的打印如下,可以看到当前的版本为1.0.0的版本
    CH2601 单片机芯片及应用-RVB2601应用开发实战系列四:FOTA镜像升级risc-v单片机中文社区(31)

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

    请确保设备联网成功。 设备检测到新版本的打印:
    CH2601 单片机芯片及应用-RVB2601应用开发实战系列四:FOTA镜像升级risc-v单片机中文社区(32)
    开始下载数据:

    CH2601 单片机芯片及应用-RVB2601应用开发实战系列四:FOTA镜像升级risc-v单片机中文社区(33)
    下载检验完毕,设备自动重启进入系统升级:
    CH2601 单片机芯片及应用-RVB2601应用开发实战系列四:FOTA镜像升级risc-v单片机中文社区(34)

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

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

    CH2601 单片机芯片及应用-RVB2601应用开发实战系列四:FOTA镜像升级risc-v单片机中文社区(35)
    至此,说明整个FOTA升级已经成功完成了。

    5. 注意事项
    5.1 分区配置


    使用升级功能需要指定升级包的存储区域。 配置文件:configs/config.yaml
    1. mtb_version: 4
    2. chip: ch2601
    3. diff:
    4.   fota_version: 0
    5.   ram_buf: 50                      #DEC     KB   ( max ram need)
    6.   flash_buf: 16             #DEC     KB   ( buffer size)
    7.   flash_sector: 4096         #DEC     byte ( flash sector)
    8.   diff_mode: 010            #BIN
    9.   double_control: 1
    10. flash:
    11.   base_address: 0x18000000  # 存储基地址,比如FLASH的基地址
    12.   sector: 4096              # Bytes
    13.   size: 524288              #512kb $(sector count) * sector
    14. partitions:
    15.   - { name: boot,   address: 0x18000000, size: 0x10000 }
    16.   - { name: imtb,   address: 0x18010000, size: 0x02000 }
    17.   - { name: bmtb,   address: 0x18012000, size: 0x01000 }
    18.   - { name: kv,     address: 0x18013000, size: 0x04000 }
    19.   - { name: prim,   address: 0x18017000, size: 0x30000, verify: true, update: FULL}
    20.   - { name: misc,   address: 0x18047000, size: 0x39000 }
    复制代码

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

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

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



    6. 结束语

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







    上一篇:RVB2601开发板快速上手教程
    下一篇:RISC-V 大赛简评 RVB2601 板卡
    RISCV作者优文
    全球首家只专注于RISC-V单片机行业应用的中文网站
    回复

    使用道具 举报

    高级模式
    B Color Image Link Quote Code Smilies

    本版积分规则

    关闭

    RISC-V单片机中文网上一条 /2 下一条



    版权及免责声明|RISC-V单片机中文网 |网站地图

    GMT+8, 2024-3-29 10:10 , Processed in 0.409955 second(s), 48 queries .

    快速回复 返回顶部 返回列表