stm32利用bootloader与app实现远程升级

这篇具有很好参考价值的文章主要介绍了stm32利用bootloader与app实现远程升级。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、flash空间分配:

事先在flash开辟好空间,假设flash为128k,我这边给它分为五个区,分别为bootloader、标志位、application、application backup、标签ID。

stm32远程升级,bootloader远程升级,stm32,嵌入式硬件,单片机

(注:升级之前,app的代码烧录于application的flash存储区域内。用于app升级的bin文件大小一定要小于自己开辟的flash空间大小)

2、 升级流程(以标签板为例):

上位机发送一个升级指令bootloader先判断是否收到升级指令,若收到升级指令,则进入升级状态。此时,将application backup的flash数据擦除,application backup区域开始接收app升级文件(即升级后的app代码)的数据包。若接收数据包失败,返回上位机一个接收失败的标志位,上位机再下发一个退出升级的标志位给bootloader,退出升级,然后(标签板)重启,(即从bootloader跳转到application的区域,读application的代码);若数据包全部成功接收,上位机判断app升级文件里边的版本号跟bin文件的文件名是否一致,若不一致,上位机返回标签板ID;若一致,则app升级成功,返回一个升级成功标志位给bootloader(与此同时,将application区域作为下次储存app升级文件的备用区),退出升级(跳出bootloader,跳转到application backup),代码从application backup区域开始执行。

若下次还要升级,则擦除的是application区域的存储数据,然后接收数据包,在执行上述的操作。(Application与application backup的存储区域是交替使用的)

升级机制:

上位机发送一个升级指令,APP先判断是否收到升级指令,若收到升级指令,将擦除事先划分好的flash的特定区域,然后把升级指令的标志位写入该区域,然后执行系统复位;接着程序从bootloader开始执行,bootloader读存放升级指令标志位的flash的信息,若为升级指令的标志,则进入升级状态。

此时,将application backup的flash数据擦除,application backup区域开始接收app升级程序的数据包。1、若接收数据包失败,返回上位机一个接收失败的标志位,上位机再下发一个退出升级的指令给标签板,若bootloader成功收到退出升级指令,退出升级,然后(标签板)重启(即从bootloader跳转到application的区域,运行application的代码)﹔若无收到退出升级指令,则标签板死机;2、若数据包全部成功接收,上位机判断app升级文件里边的版本号跟bin文件的文件名是否一致,若不一致,上位机返回标签板ID;若一致,则app升级成功,返回一个升级成功标志位给标签板的bootloader (与此同时,将application区域作为下次储存app升级文件的缓存区),退出升级(跳出bootloader,执行application backup代码)。

3、注意事项:app升级文件的中断向量表的偏移地址需要修改;app的起始地址需要修改。

若app一开始烧录于flash的application区域时,IROM1需要修改为0x80004000,size根据代码大小来定。

(注:升级app文件的IROM1需要修改为0x80011000

beyond compare软件可用于文件对比!!!

stm32远程升级,bootloader远程升级,stm32,嵌入式硬件,单片机

若app一开始烧录于flash的application区域时,中断向量表的偏移地址需设置为:

#define VECT_TAB_OFFSET  0x4000

(注:升级app文件的偏移地址也是需要修改的哦,根据第一张图为例,中断向量表的偏移地址需设置为:#define VECT_TAB_OFFSET  0x11000)

stm32远程升级,bootloader远程升级,stm32,嵌入式硬件,单片机

(下边这两张图不用管,嘿嘿)

stm32远程升级,bootloader远程升级,stm32,嵌入式硬件,单片机

stm32远程升级,bootloader远程升级,stm32,嵌入式硬件,单片机

(13条消息) STM32单片机bootloader扫盲_stm32 bootloader_不咸不要钱的博客-CSDN博客

(4条消息) STM32 内核复位 与 系统复位 区别及程序实现___disable_fault_irq_electrocrazy的博客-CSDN博客

(2条消息) STM32 从APP跳入BootLoader问题_stm32 bootloader 跳转_yhl_sophia的博客-CSDN博客

(2条消息) 【STM32学习笔记】STM32 BOOTLOADER配置以及APP跳转_stm32跳转到指定地址运行_Carry_王的博客-CSDN博客

(2条消息) STM32远程升级(IAP)_stm32远程烧写程序_我滴阿紫的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-636002.html

到了这里,关于stm32利用bootloader与app实现远程升级的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32 IAP应用开发--bootloader升级程序

    原文链接:https://blog.csdn.net/ShenZhen_zixian/article/details/129424077 什么是IAP? IAP(In-Application Programming) 指MCU可以在系统中获取新代码并对自己重新编程,即可用程序来改变程序。在应用编程(IAP)是用户的应用代码对片内Flash存储器进行擦除/编程的方法。这种方式的典型应用就

    2024年01月17日
    浏览(77)
  • bootloader编写——MCU固件升级系列2(STM32)

    本系列将从升级流程、boot代码编写、APP代码编写以及固件打包来介绍,硬件选用STM32F407ZGT6(手里只有),来完成这系列教程。 开发STM32固件升级并编写Bootloader时,需要注意以下几个关键点: 熟悉硬件和数据手册:在开发过程中,确保充分理解STM32微控制器的特性和功能。阅

    2024年02月03日
    浏览(53)
  • STM32 APP跳转到Bootloader

    stm32 app跳转到bootloade 【STM32】串口IAP功能的实现,BootLoader与App相互跳转 STM32 从APP跳入BootLoader问题

    2024年02月08日
    浏览(40)
  • STM32F103 USB OTA升级BootLoader (一)

     1.配置外部高速晶振  2.勾选USB功能  3.将USB模式配置Virtual Port Com  4.将系统主频配置为72M,USB频率配置为48M.  5.配置好项目名称,开发环境,最后获取代码。 6.修改Flash大小和勾选Use Micro LIB   7.修改main.c代码  Update.c代码 Update.h代码  源码链接: 跳转链接 上位机升级工具:

    2024年02月11日
    浏览(48)
  • STM32 UDS Bootloader开发-下位机篇-App软件

    在之前的文章中,介绍了STM32 UDS Bootloader开发需求和bootloader软件开发的修改点。本文继续介绍APP软件关于UDS的部分。APP主要实现预编程阶段的部分内容。 此处按需求定义APP_INFO的flash区域为起始地址0x0800D800,大小0x800。 RW_IRAM2区域定义 UNINIT ,保证在APP跳boot复位后,对应ram区

    2024年02月11日
    浏览(48)
  • STM32G473 固件升级IAP(BootLoader)CAN/USART。(详细步骤)

    本例程仅供参考(个人学习总结_有需要文中有的封装好的跳转函数可私信), 例程可举一反三完成FDCAN通信和USART通信。 目录 简介 1.APP程序配置步骤 APP 程序起始地址设置方法 中断向量表的偏移量设置方法 KEIL5生成bin文件步骤 2.IAP(BootLoader 程序)配置(HAL库,Cubemax) 2.1

    2024年02月03日
    浏览(41)
  • 2-远程升级篇(自建物联网平台)-STM32通过EC800使用http或https下载程序文件升级程序(APP通过MQTT控制单片机更新)

    1,用户在APP上点击 \\\"固件升级\\\" 按钮, APP使用MQTT发送:  {\\\"data\\\":\\\"updata\\\",\\\"cmd\\\":\\\"DeviceInfo\\\"} //询问设备固件信息 2,设备通过MQTT收到该消息以后,发送 {\\\"data\\\":\\\"updata\\\",\\\"cmd\\\":\\\"DeviceInfo\\\",\\\"DeviceModel\\\":\\\"STM32EC800BKAPP\\\",\\\"FirmwareVersion\\\":\\\"0.0.0\\\"} (STM32EC800BKAPP是设备的型号;  0.0.0是设备当前的固件版本) 3,APP收到

    2024年04月16日
    浏览(152)
  • STM32深入系列02——BootLoader分析与实现

    ==== 文章汇总 ==== 这个应该是最基本的方法,只要自己写过程序的应该都会,将编译生成的 hex 文件使用 ST-Link 工具或者 J-Link 工具直接下载进 Flash 即可。Keil中点击下载也能一键下载。 下载时可以看到地址是从 0x0800 0000 ,即 Flash 的起始地址开始下载的。 优点 :简单,插上下

    2024年02月02日
    浏览(42)
  • stm32毕设分享 stm32单片机的远程WIFI密码锁 - 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(54)
  • STM32系统和自定义bootloader的实现和应用

    简介 bootloader其实就是一段启动程序,它在芯片启动的时候最先被执行,可以用来做一些硬件的初始化或者用作固件热更新,当初始化完成之后跳转到对应的应用程序中去。 bootloader程序需要通过下载器烧写到芯片中,而APP则可以通过有线方式的UART、IIC、USB、SPI等总线来通过

    2023年04月11日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包