完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
简介
为了能让开发者快速掌握 OTA 升级这把利器,RT-Thread 开发团队提供了通用的 Bootloader。开发者通过该 Bootloader 即可直接使用 RT-Thread OTA 功能,轻松实现对设备端固件的管理、升级与维护。 下图展示了 RT-Thread 通用 Bootloader 的软件框架: RT-Thread 通用 Bootloader 有如下特点:
Bootloader 的主要功能是更新 app 分区中的固件。 分区表介绍 通用 Bootloader 中的分区表包含如下三个分区: [tr]分区名起始地址分区大小分区位置介绍[/tr]
当系统需要升级固件时,Bootloader 将从 download 分区将固件搬运到 app 分区,主要功能流程如下所示:
恢复固件功能 当系统中的固件损坏,Bootloader 将从 factory 分区将固件搬运到 app 分区,主要功能流程如下所示:
Bootloader 可以通过网页端在线生成的方式来获取。开发者根据自己使用的芯片,填写相关参数,然后点击生成按钮,即可在线生成 Bootloader。 Bootloader 在线获取地址: http://iot.rt-thread.com 登陆账号 新建产品 进入设备管理 进入生成页面 进入 Bootloader 生成页面后,根据页面提示填写板卡参数,点击生成固件按钮即可在线自动生成 BootLoader,同时也会将生成的固件发送到用户邮箱中。 下面提供一个示例配置以供参考,开发者则需要根据自己手中板卡的实际情况,勾选和填写所需功能。 点击生成按钮后,等待大约一分钟即可通过自动下载或者邮件的方式获取定制的 Bootloader。 使用 Bootloader 准备工作
方法 1: J-Flash 工具烧写 以 STM32F407ZGT6 芯片为例讲述如何使用 J-Flash 工具烧录 bootloader.bin 到开发板中,操作步骤如下:
固件烧录成功后会自动运行 Bootloader,打印出 RT-Thread 的 logo。 方法 2: ST-LINK Utility 工具烧写 以下介绍如何使用 ST-LINK Utility 工具烧录 bootloader.bin 到开发板中,这需要配合 ST-LINK 进行烧写,操作步骤如下所示:
制作 app 固件 本小节介绍如何使用 stm32 系列的 BSP 制作一个可以用于 OTA 升级的,包含 OTA 下载器功能 app 固件。 接下来的示例中所用的 BSP 路径为 stm32/stm32f407-atk-explorer。 固件中使用的分区表如下所示: [tr]分区名起始地址分区大小分区位置[/tr]
添加下载器功能 本小节介绍如何将下载器功能添加到 app 固件中。 添加该功能需要使用 env 工具,本次下载的软件包在 iot 类别中,需要按照如下步骤操作:
注:如果 BSP 没有该选项,则需要手动在 board 文件夹的 Kconfig 添加下面定义,保存,然后重新进入 menuconfig 即可。 config BSP_USING_ON_CHIP_FLASH bool "Enable on-chip FLASH" default n
本小节将讲述如何初始化 FAL 组件,并修改 FAL 分区表。开发者需要对 FAL 进行简单入门,无需移植,只需要了解如何配置即可,详细内容可参考 官方文档。 本次制作的 app 固件将附带下载器功能,下载器会将固件下载到 download 分区。根据第 4 章开始时的分区表可知,download 分区的地址为 0x8020000,而 app 分区的地址为 0x8040000。 初始化 FAL 由于 FAL 组件会被 ota_downloader 软件包自动选中,因此直接添加 FAL 组件的初始化代码即可。
注意:如果 BSP 中没有该头文件,可以在该 BSP 目录下 /packages/fal-latest/samples/porting 中复制一份进行修改,其中分区地址和大小是根据实际 bootloader 中定义的大小进行设置。下图中标记处了可能需要修改的地方,请根据个人实际情况进行修改。 修改 app 固件配置 由于 app 分区的起始地址为 0x08040000,app 固件如果想运行在该地址,就需要修改链接脚本和中断向量的跳转地址。
/** * Function ota_app_vtor_reconfig * Description Set Vector Table base location to the start addr of app(RT_APP_PART_ADDR).*/static int ota_app_vtor_reconfig(void){ #define NVIC_VTOR_MASK 0x3FFFFF80 /* Set the Vector Table base location by user application firmware definition */ SCB->VTOR = RT_APP_PART_ADDR & NVIC_VTOR_MASK; return 0;}INIT_BOARD_EXPORT(ota_app_vtor_reconfig);然后在 main 函数中添加版本信息打印,如下图所示:
可以看到串口输出的信息 The current version of APP firmware is 1.0.0,即当前固件的版本为 1.0.0 。 打包 app 固件 本小节讲述如何使用 RT-Thread OTA 固件打包器对 app 固件进行打包,制作可以被下载到 download 分区的升级固件。固件打包工具可以在 ota_downloader 软件包下的 tools 文件夹内找到。
固件打包器提供三种固件压缩方式:fastlz、quicklz 和 gzip,一种固件加密方式 AES256。开发者可以根据实际需求选择合适的加密压缩方式。 执行 OTA Ymodem 升级固件 使用 Ymodem 协议升级固件时,推荐使用 Xshell 终端。 在 msh 命令行中输入 ymodem_ota 命令后,点击鼠标右键,然后在菜单栏找到用 YMODEM 发送选项发送文件,如下图所示:
接下来升级固件就会通过 Ymodem 的方式被下载到 download 分区。 执行 OTA 升级 固件被下载到 download 分区后,系统会自动重启,执行 OTA 升级。 升级完毕后可以看到如下效果: 串口输出信息为 The current version of APP firmware is 2.0.0 ,说明固件已经被升级到 2.0.0 版本了。 更多固件下载方式 HTTP/HTTPS 固件升级是另外一种固件下载方式,制作下载器时如果开启了系统中的网络驱动,即可使用此种方式下载固件。具体步骤与 Ymodem 升级固件 小节大体一致。以下是配置截图: [img][/img] 在终端输入 http_ota http://xxx/xxx/rtthreadf.rbl 命令,系统将会从链接 http://xxx/xxx/rtthreadf.rbl` 处下载固件到 download 分区,之后系统会自动重启,执行 OTA 升级程序。 [img][/img] 恢复出厂固件 在生成页面中选中了 恢复出厂固件引脚 功能后,即开启了出厂固件恢复功能。开发者可以将制作好的 app 固件烧录至 factory 分区中,在系统启动前按下恢复出厂固件引脚(可选择一个或者两个引脚作为固件恢复触发引脚)并保持 10S,即可从 factory 分区中恢复出厂固件到 app 分区中。 恢复出厂按键引脚配置如下: factory 分区的配置如下所示: 按照上图的配置,factory 分区被设置为从片内 Flash 首地址偏移 0x60000 的位置开始,大小为 128KB,想要使用固件恢复功能,则需要将可用的 app 固件烧录到该分区中,固件恢复过程如下图所示: |
||||
|
||||
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
1591 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1112 浏览 0 评论
1557 浏览 0 评论
1402 浏览 0 评论
1044 浏览 0 评论
74644 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 01:44 , Processed in 0.502788 second(s), Total 71, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号