当前位置:   article > 正文

RT-Thread—STM32—在线升级(Ymodem_OTA)_rt-thread ymodem

rt-thread ymodem

概述

本教程主要根据官方推荐的教程进行改编,详细信息请参考
OTA Downloader软件包
STM32 通用 Bootloader

本例程的模板使用通用模板环境搭建里面的模板RT-Thread—STM32—FAL库
文末也有我移植好的例程,不过建议大家从头开始移植,加深印象^_^


bootloader的制作

文末有我已经做好的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的开始地址
#define RT_APP_PART_ADDR 0x08020000        // app区的开始地址
  • 1
  • 更改分区表
#define FAL_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}, \
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 修改后如下图所示

请添加图片描述

  • 打开Option for Target…
  • 在Linker中点击Edit…修改link.sct文件,使开始地址为Bootloader设置的地址,如下图所示

请添加图片描述

  • 打开fal_cfg.h文件
  • 添加打印版本信息的代码
    rt_kprintf("/****************************************************/\n");
    rt_kprintf("/*************Version : 2.0.0\n");
    rt_kprintf("/****************************************************/\n");
  • 1
  • 2
  • 3
  • 添加更改中断向量表相关的参数
/**
 * 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);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

请添加图片描述

  • 查看烧录设置
  • 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文件,打开进行升级,如下图所示

请添加图片描述

请添加图片描述

  • 成功之后,会看到版本变化了,说明升级成功,如下图所示

请添加图片描述


源代码获取

源码已放到码云 ! ! ! ( 请点击文首链接进入仓库 )


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/779926
推荐阅读
相关标签
  

闽ICP备14008679号