RT-Thread—STM32—在线升级(Ymodem_OTA)
RT-Thread—STM32—在线升级(Ymodem_OTA)概述本教程主要根据官方推荐的教程进行改编详细信息请参考OTA Downloader软件包STM32 通用 Bootloader本例程的模板使用通用模板环境搭建里面的模板RT-Thread—STM32—FAL库示例工程请参见码云仓库, 建议从头开始移植, 加深印象。bootloader的制作Bootloader 相关文件请参见码云仓库。打开bootloader制作的网址Bootloader在线获取地址其他步骤按照STM32 通用 Bootloader制作这里我提供一下我制作的相关配置点击生成Bootloader可以选择邮箱下载或者手动下载烧录Bootloader选择合适的工具烧录BootLoader这里我选择的是STM32CubeProgrammer(使用的是ST-Link/V2)连接之后下载刚刚生成的Bootloader文件(xxxx.bin)连接串口测试打印信息能看到我们之前制作Bootloader时相关的参数以及logo,说明Bootloader烧录成功,如下图所示博主使用的是Xshell软件(建议使用Xshell软件)Xhell官网制作APP程序ENV配置选择ota功能使能Ymodem OTA然后更新配置保存退出代码修改打开fal_cfg.h文件(此过程一定要和Bootloader制作是保持地址对应否者没法升级)更改app的开始地址#defineRT_APP_PART_ADDR0x08020000// app区的开始地址更改分区表#defineFAL_PART_TABLE\{\{FAL_PART_MAGIC_WORD,bl,onchip_flash,0,128*1024,0},\{FAL_PART_MAGIC_WORD,app,onchip_flash,128*1024,128*1024,0},\{FAL_PART_MAGIC_WORD,download,onchip_flash,256*1024,128*1024,0},\{FAL_PART_MAGIC_WORD,easyflash,onchip_flash,384*1024,128*1024,0},\}修改后如下图所示打开Option for Target…在Linker中点击Edit…修改link.sct文件使开始地址为Bootloader设置的地址如下图所示打开fal_cfg.h文件添加打印版本信息的代码rt_kprintf(/****************************************************/\n);rt_kprintf(/*************Version : 2.0.0\n);rt_kprintf(/****************************************************/\n);添加更改中断向量表相关的参数/** * Function ota_app_vtor_reconfig * Description Set Vector Table base location to the start addr of app(RT_APP_PART_ADDR). */staticintota_app_vtor_reconfig(void){#defineNVIC_VTOR_MASK0x3FFFFF80/* Set the Vector Table base location by user application firmware definition */SCB-VTORRT_APP_PART_ADDRNVIC_VTOR_MASK;return0;}INIT_BOARD_EXPORT(ota_app_vtor_reconfig);查看烧录设置Option for Target...–Debug–Settings–FlashDownload确保Download Function选择Erase Sectors编译并且烧录程序打开串口会看到Bootloader已经成功跳转到我们的程序并且正常运行了修改版本号只编译编译千万不要烧录!!!千万不要烧录!!!千万不要烧录!!!打开目录packages\ota_downloader-latest\tools\ota_packager找到如下所示的生成软件包生成工具并且打开点击选择固件找到主目录下的rtthread.bin文件添加固件区名和固件版本然后打包成功后会在rtthread.bin文件的同一目录下生成rtthread.rbl文件打开串口输入help会打印帮助信息输入ymodem_ota执行升级命令在黑窗口点击鼠标右键–传输–YMODEM(Y)选择刚刚生成的rtthread.rbl文件打开进行升级如下图所示成功之后会看到版本变化了说明升级成功如下图所示