硬件平台
HMI-Board 为 RT-Thread 联合瑞萨推出的高性价比图形评估套件,取代传统的HMI + 主控板硬件,一套硬件即可实现 HMI + IoT + 控制 的全套能力。依托于瑞萨高性能芯片 RA6M3及 RT-Thread 软件生态,HMI Board 不仅硬件性能强劲,同时软件生态丰富,助力开发者快速开发出GUI 智能硬件产品。
OTA Boot 例程教学
简介
首先需要烧录 OTA 升级的 Boot 工程。通过运行当前示例工程,可以学习如何利用 OTA 功能给开发板升级固件。当前例程使用 qboot 软件包,完成升级业务。
烧录此工程之后,可配合APP示例工程,体验OTA升级功能,或按照下方制作APP的教程,自己制作可升级的APP。
下面通过 RT-Thread studio 创建 OTA Boot 工程(请在SDK Manager中提前安装 HMI-Board SDK):
使用说明
下载程序成功之后,系统会自动运行并打印系统信息。
连接开发板对应串口到 PC , 在终端工具里打开相应的串口(115200-8-1-N),复位设备后,可以看到RT-Thread 的输出信息。输入 help 命令可查看系统中支持的命令。
\ | /
- RT - Thread Operating System
/ | \ 5.0.1 build Oct 20 2023 18:29:17
2006 - 2022 Copyright by RT-Thread team
msh >
Qboot startup ...
Qboot version : V1.0.5 2020.10.05
[D/FAL] (fal_flash_init:47) Flash device | onchip_flash_hp0 | addr:
0x00000000 | len: 0x00010000 | blk_size: 0x00002000 |initialized finish.
[D/FAL] (fal_flash_init:47) Flash device | onchip_flash_hp1 | addr:
0x00010000 | len: 0x001f0000 | blk_size: 0x00008000 |initialized finish.
[I/FAL] ==================== FAL partition table ====================
[I/FAL] | name | flash_dev | offset | length |
[I/FAL] -------------------------------------------------------------
[I/FAL] | boot | onchip_flash_hp0 | 0x00000000 | 0x00010000 |
[I/FAL] | app | onchip_flash_hp1 | 0x00000000 | 0x000f8000 |
[I/FAL] | download | onchip_flash_hp1 | 0x000f8000 | 0x001f0000 |
[I/FAL] =============================================================
[I/FAL] RT-Thread Flash Abstraction Layer initialize success.
Press [Enter] key into shell in 1 s :
[E/Qboot] Qboot firmware check fail. firmware infomation check fail.
Jump to application running ...
Boot 工程运行后,会等待 1s 的时间,等待用户按键,如果用户有按下任意按键,则会停在Boot里,否则会自动跳转到APP工程。
机制原理
Boot工程利用FAL组件,将片上Flash进行了分区管理。分区表在程序启动时,会打印出来,见上面的日志。通过分区表可以看出片上Flash 被分成了 3 个分区(boot、app、download),具体的地址如下所示:
boot固件:存储boot固件,即当前 BOOT 工程的存储空间,大小为64KB,地址空间为:0x00000000 -> 0x0000FFFF
app固件:存储用户固件,地址空间为 0x00010000 -> 0x00108000
download分区:用于存储待升级固件,在app里下载好待升级的固件,写入此片区域后,boot会自动完成升级工作。地址空间为 0x00108000 -> 0x00200000
升级流程
APP工程制作方法
制作APP主要包括几个步骤:
修改链接脚本,调整固件地址处在app分区的开始
添加fal组件,获取当前分区状态
添加自己的方法,下载固件,并更新到download分区
具体制作时可以参考 sdk 里提供的 app 工程。
OTA 方法
OTA 的过程就是打包 app 工程的 bin 文件,生成待升级文件,然后分发到待升级设备上的工作。
打包固件
app工程编译完成之后会在Debug目录下生成rtthread.hex文件,我们需要从hex文件里提取出来这两个bin 文件,这里我们使用 app 工程 tool 目录下提供的hex2bin(https://github.com/Guozhanxin/hex2bin)小工具。它可以从rtthread.hex文件里分离出两个bin文件,其中0x10000结尾的是对应app分区的固件,也是我们要升级的固件。
$ hex2bin.exe rtthread.hex
=> rtthread_0x10000.bin
=> rtthread_0x100a150.bin
在boot工程的 packages/qboot-vxxx/tools 目录下有打包固件使用的工具QBootPackager。解压软件,双击打卡使用。
将打包生成的固件下载到flash上的download分区,然后重启,boot就会自动完成固件升级。
这一步可以配合app工程的ymodem下载工具完成
OTA APP 例程教学
简介
下面是 OTA 升级的 APP 工程说明。通过运行当前示例工程,可以学习如何利用 OTA 功能给开发板升级固件。注:当前例程需配合 boot 例程才能正常运行。
下面通过 RT-Thread studio 创建 OTA APP 工程(请在SDK Manager中提前安装 HMI-Board SDK):
使用说明
下载程序成功之后,系统会自动运行并打印系统信息。
连接开发板对应串口到 PC , 在终端工具里打开相应的串口(115200-8-1-N),复位设备后,可以看到RT-Thread 的输出信息。输入 help 命令可查看系统中支持的命令。
[E/Qboot] Qboot verify fail. firmware infomation check fail.
[E/Qboot] Qboot firmware update fail. destination partition verify fail.
Erasing download partition ...
Qboot delete firmware success.
Jump to application running ...
\ | /
- RT - Thread Operating System
/ | \ 5.0.1 build Oct 27 2023 15:13:38
2006 - 2022 Copyright by RT-Thread team
Hello RT-Thread at app!
[D/FAL] (fal_flash_init:47) Flash device | onchip_flash_hp0 | addr:
0x00000000 | len: 0x00010000 | blk_size: 0x00002000 |initialized finish.
[D/FAL] (fal_flash_init:47) Flash device | onchip_flash_hp1 | addr:
0x00010000 | len: 0x001f0000 | blk_size: 0x00008000 |initialized finish.
[D/FAL] (fal_partition_init:211) Find the partition table on 'onchip_flash_hp0'
offset @0x0000b374.
[I/FAL] ==================== FAL partition table ====================
[I/FAL] | name | flash_dev | offset | length |
[I/FAL] -------------------------------------------------------------
[I/FAL] | boot | onchip_flash_hp0 | 0x00000000 | 0x00010000 |
[I/FAL] | app | onchip_flash_hp1 | 0x00000000 | 0x000f8000 |
[I/FAL] | download | onchip_flash_hp1 | 0x000f8000 | 0x001f0000 |
[I/FAL] =============================================================
[I/FAL] RT-Thread Flash Abstraction Layer initialize success.
msh >
此工程自带了 ymodem_ota 命令,可配合支持 ymodem 协议的终端工具,发送升级包到系统。
注:支持 ymodem 协议的工具有 xshell,windterm 等,mobaxterm 和 putty 不支持!
boot进入之后会自动检测download分区的待升级固件,并自动更新到app分区,完成升级。
1. 出现 Qboot verify fail. firmware infomation check fail. 这个日志不用管,ota 功能正常即可。
购买 HMI-Board
https://e.tb.cn/h.Tkkv37RBFNRKGb4?tk=8GqteWXcaXT
想要在RT-Thread平台或社区投放内容?或想参与相关直播活动及赛事?RT-Thread已开放对接窗口,请通过邮件与我们取得联系,期待合作!