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

简介: 技术解码栏目:是面向开发者详细解读芯片开放社区(OCC)上关于处理器、芯片、基础软件平台、集成开发环境及应用开发平台的相关技术,方便开发者学习及快速上手,提升开发效率。

编辑语:

技术解码栏目:是面向开发者详细解读芯片开放社区(OCC)上关于处理器、芯片、基础软件平台、集成开发环境及应用开发平台的相关技术,方便开发者学习及快速上手,提升开发效率。


一.概述


RVB2601是基于平头哥RISC-V生态芯片的开发套件,开发者基于RVB2601可进行端云一体的物联网应用开发及音频方案开发。上周向大家推荐了RVB2601应用开发实战系列三: GUI图形显示。本文介绍如何在CH2601开发板上进行FOTA升级。

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

二. 环境准备

  • 硬件:RVB2601开发板一块、USB线2根
  • 软件:剑池CDK最新版本(Windows)

image.png

三. 示例获取

打开剑池CDK,点击红色处按钮,点击新建工程按钮。

image.png

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

image.gifimage.png

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

image.png

image.gif

四. 操作流程

image.png

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

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

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

4.1 编译生成不同版本固件

4.1.1 基础镜像包1.0.0生成


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

image.gifimage.png


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


image.gifimage.pngimage.png

image.gif


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

image.gif

image.png

4.2 OCC版本管理

4.2.1 创建产品,获取许可证


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

image.gif

image.png

  1. 在平头哥芯片开发社区上创建产品,在控制台->我的产品->添加产品,如下图所示,点击提交按钮。
  2. image.png

image.gifimage.png

image.gif

  1. 点击编辑按钮
  2. image.png

image.gif

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

image.gifimage.png

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

image.gifimage.png

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


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

image.gifimage.png

点击提交按钮

image.gifimage.png

点击红色方框

image.gifimage.png

点击发布按钮

image.gifimage.png

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

  1. 发布1.1.1版本

image.gifimage.png

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

4.2.3 云端选择升级策略

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

image.gifimage.png

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

image.gifimage.png

选择升级策略:

image.gifimage.png

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

image.gifimage.png

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

4.3 设备检测升级


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

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

image.gifimage.png

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

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

image.gifimage.png

image.gifimage.png

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

image.gifimage.png

烧录过程中。

image.gifimage.png


烧录完毕。

image.gifimage.png

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

image.gifimage.png


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

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

image.gifimage.png

开始下载数据:

image.gifimage.png

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

image.gif

image.png

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

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

image.gifimage.png

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

五. 注意事项


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文件中。

六. 结束语

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



相关文章
|
分布式计算 资源调度 Hadoop
十二、Spark的安装与部署详情(Local模式,Standalone模式,Spank on YARN模式)
十二、Spark的安装与部署详情(Local模式,Standalone模式,Spank on YARN模式)
1809 0
十二、Spark的安装与部署详情(Local模式,Standalone模式,Spank on YARN模式)
|
15天前
|
安全 Linux API
养“虾”保姆级教程:OpenClaw阿里云部署+本地配置+GPT5.4/百炼api对接及避坑指南
2026年OpenClaw(俗称“龙虾”,曾用名Clawdbot)凭借灵活的插件生态、强大的任务自动化能力和多模型对接特性,成为AI开发者和办公人群的核心工具,其最新版本2026.3.8更是实现了与OpenAI Codex的深度打通,可直接对接GPT5.4模型,让订阅ChatGPT的用户能充分利用算力资源。但想要发挥OpenClaw的全部能力,高效的部署配置、稳定的模型API对接是关键。本文将从**阿里云云端部署**、**MacOS/Linux/Windows11本地部署**、**阿里云百炼Coding Plan API配置**、**GPT5.4模型对接**四大核心板块出发,搭配可直接执行的代
2706 0
|
4月前
|
机器学习/深度学习 存储 搜索推荐
Python自动整理音乐文件:按艺术家和专辑分类歌曲
本文介绍如何用Python自动化整理杂乱音乐文件,通过mutagen等库读取MP3、FLAC等格式的元数据,按艺术家和专辑智能分类,支持多线程加速、图形界面及增量处理,大幅提升效率,500首歌曲2分钟完成,准确率超99%。
236 0
|
14天前
|
人工智能 安全 JavaScript
OpenClaw插件开发教程:阿里云/本地部署+Plugin、Hook、Skill三层分工+免费大模型API配置实战
在AI Agent全面普及的2026年,OpenClaw凭借轻量化、高扩展、多平台兼容的特性,成为个人与团队构建智能助手、自动化工作流、代码开发辅助的主流框架。很多用户从基础使用进阶到自定义扩展时,都会遇到一个核心困惑:Skill、Hook、Plugin三者到底该怎么选、怎么写、怎么配合?三者看似都是扩展能力,实则分属不同层级、承担不同职责,混用会导致系统臃肿、冲突频发、维护困难。
922 0
|
Web App开发 存储 缓存
Web页面优化专项>Lighthouse>性能分数优化
Web页面优化专项>Lighthouse>性能分数优化
1247 0
Web页面优化专项>Lighthouse>性能分数优化
|
5月前
|
JSON 算法 API
海外电商平台阿里巴巴国际站获取商品详情的API接口
本文介绍如何通过阿里巴巴国际站API获取商品详情,涵盖注册开发者账号、创建应用、认证授权、构建请求及处理响应的完整流程,并提供Python示例代码,助您高效集成跨境电商业务,提升运营自动化水平。(238字)
749 7
|
安全 Java 数据库
基于SpringBoot+Vue人口老龄化社区服务与管理平台(源码+部署说明+演示视频+源码介绍+lw)(2)
基于SpringBoot+Vue人口老龄化社区服务与管理平台(源码+部署说明+演示视频+源码介绍+lw)
310 2
|
移动开发 网络协议 安全
一篇文章带你搞懂TCP/IP协议与OSI七层网络模型
一篇文章带你搞懂TCP/IP协议与OSI七层网络模型
1161 0
一篇文章带你搞懂TCP/IP协议与OSI七层网络模型
|
JavaScript 前端开发 Go
【智能合约】Go语言调用以太坊 | geth
目录 1. geth 简介 1.1 下载地址: 1.2 安装: 1.3 查看是否安装成功 2. geth命令介绍 3. geth常用命令 3.1 指定数据目录 --datadir 3.2 账户相关 3.3 控制台console: 3.4 删除数据: 3.5 help 3.6 常见错误 4. Go语言调用合约 4.1 启动rpc端口 4.2 Go调用以太坊 4.3 调用接口 net_version net_listening net_peerCount eth接口 personal接口 db接口 最后
1366 0
【智能合约】Go语言调用以太坊 | geth