STM32 OTA需要注意问题

news2024/11/17 6:48:27

一、OTA设计思路(问题)

1、根据stm32f405 flash分布,最初将flash划分为四个区域,分别是Bootloader、APP1、APP2、参数区,设备上电后,进入Bootloader程序,判断OTA参数,根据参数来确定跳转到哪个APP区域,下载逻辑互为备份,举例说明:当程序运行在APP1时,OTA时先将固件下载到APP2区域,设置标志,复位芯片,Bootloader启动,读取标志,跳转到APP2,当程序运行在APP2时,OTA时先将固件下载到APP1区域,设置标志,复位芯片,Bootloader启动,读取标志,跳转到APP1,实际使用中存在,Bootloader永远无法跳转到APP2的问题(说明:Bootloader地址:0x08000000,APP1地址:0x08020000,APP2地址:0x08080000,参数地址:0x080e0000),问题原因:

  • 由于在使用keil编译APP的时候,需要指定地址,这个地址会关系到栈顶指针、中断向量表,并且这个地址会关联到APP bin文件的内容,而Bootloader跳转的时候,会首先读取bin文件第4-8个字节的内容,这个4-8字节又是在编译的时候设置的,指向的是APP1(0x08020000)区域,所以哪怕OTA下载到APP2区域,APP2内的bin文件4-8个直接指向的也是APP1区域的地址(0x08020000)
    bin文件编译器地址设置:
    编译时间需要指定flash地址和长度
    bin文件内容,里面很多跟编译地址关联的内容,这里试举一例:在这里插入图

二、需要解决以上问题,有两种方案:

1、不通过Bootloader程序来判断直接跳转到某个APP区,而是固定跳转到APP1区域,把APP2区域当成永久备份区,当有固件下载时,先放到APP2区域,设置升级标志,设备复位后,Bootloader读取标志,让后将APP2内固件搬运到APP1,再跳入APP1区域执行;优点是固件制作简单,缺点是过程有点长,需要控制好文件准确无误;
2、另外一种方式是根据APP1和APP2不同的地址设置keil,制作两个不同地址的bin文件,升级的时候单片机首先上报运行在哪个APP区,需要哪一个区的bin文件,下载对应区域的bin文件即可;优点升级流程简单,缺点:需要制作多个包,且下载对应的包必须准确,需要管理好;
以上两种方案都能解决该问题;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1713699.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【YashanDB知识库】自动选举配置错误引发的一系列问题

问题现象 问题出现的步骤/操作: ● 配置自动选举,数据库备库手动发起switch over,命令会报错 ● 主、备库变为只读状态,数据库无法进行读写操作 ● shutdown immediate 停止数据库,此时发现数据库一直没有退出&…

设计以容错:应对失败的12种关键设计思想

"Design for Failure" 这一说法在产品设计、软件开发和系统架构中并不常见,因为它通常与追求成功和可靠性的目标相悖。然而,如果我们从另一个角度来理解它,即“设计以应对失败”或“设计以容错”,那么以下是12种常见的设…

24V_2A_1.2MHZ|PCD0303升压恒频LCD背光源专用电路超小体积封装

概述 PCD0303是一个恒定频率,6针SOT23电流模式升压转换器用于小型低功耗应用。PCD0303 以1.2MHz切换,并且允许使用微小的,低成本电容器和电感器2mm或更小,内部软启动会产生较小的涌入电流延长电池寿命。PCD0303具有自动切换至轻负载下的脉冲…

社交媒体数据恢复:子弹短信

在开始之前,请确保满足以下条件: 您的手机已root。您已知晓备份子弹短信的方法。 以下是子弹短信数据恢复的步骤: 第一步:备份子弹短信 如果您尚未备份子弹短信,请先进行备份。备份方法如下: 进入子弹短…

多用户协作与实时渲染:3D开发工具HOOPS助力汽车行业CAD可视化

在当今汽车行业,计算机辅助设计(CAD)可视化是产品设计和开发过程中不可或缺的一环。随着汽车设计复杂性的增加,CAD可视化不仅仅是一个设计工具,更是一个沟通和协作的平台。然而,尽管技术不断进步&#xff0…

Gartner发布2024年数据与分析重要趋势

Gartner公司发布了2024年数据与分析(D&A)重要趋势,这些趋势正在带来包括组织、人事问题在内的各种挑战。 Gartner高级研究总监方琦表示:“AI的力量以及日益重要的生成式AI正在改变人们的工作方式、团队协作方式和流程运作方式…

【Spring Cloud】分布式配置动态刷新

目录 问题解决方案1.使用Spring Boot Actuator监控接口【不推荐】流程图使用Spring Boot Actuator的步骤 2.Spring Cloud Bus第一种方案问题Spring Cloud Bus流程图Spring Cloud Bus实现客户端刷新的步骤开发准备实现1. 在config-server中添加依赖2.在config-server中添加配置a…

动手学操作系统(四、MBR读取硬盘加载Loader)

动手学操作系统(四、MBR读取硬盘加载Loader) 在上一节中,我们学习了使用MBR来直接控制显卡进行显示,在这一节中我们学习如何让MBR来操作硬盘,加载Loader来完成操作系统的后续启动过程。 文章目录 动手学操作系统&…

OrangePi_Kunpeng_Pro开发板测验——性能巨人

文章目录 📑前言一、开箱初体验的愉悦二、产品规格概述三、前置工作四、性能测试4.1 CPU 性能测试4.1.1 单线程 CPU 测试4.1.2 多线程 CPU 测试 4.2 内存性能测试4.2.1 内存读写性能测试4.2.2 高负载内存测试 4.3 I/O 性能测试4.4 网络性能测试4.5 测试小结4.5.1 CP…

基于广义极大极小凹惩罚的心电信号降噪方法(MATLAB R2021B)

凸优化是数学最优化的一个子领域,研究定义于凸集中的凸函数最小化问题。由于心电信号降噪的过程可以理解为求信号的稀疏近似解,因此基于凸优化和稀疏性表达的去噪方法可用于心电信号处理。在凸优化的数学模型中,惩罚项的选取对最终结果会产生…

那些不起眼但很好玩的API合辑

那些不起眼但很好玩的API,为我们带来了许多出人意料的乐趣和惊喜。这些API可能看起来并不起眼,但它们却蕴含着无限的创意和趣味性。它们可以是一些小游戏API,让我们可以在闲暇时刻尽情娱乐;也可以是一些奇特的音乐API,…

gradio image 类型

3种类型,默认是 numpy.array numpy.array PIL.Image str file path. 互相转换 # 从路径到 numpy.ndarray import cv2 image_mask cv2.imread(imagePath) print(type(image_mask))# 从路径到 PIL.IMAGE from PIL import Image image_maskImage.open(imagePath) pri…

zynq PS端 GPIO

记录一下PS端 GPIO 1. GPIO 简介 ZYNQ PS 中包含一组丰富的外设,用于和外部设备进行通信。ZYNQ 的 IO 包括对外连接的 GPIO 和内部 PS 与 PL 通信的 AXIO。其中对外的 GPIO 又分为两种:MIO 和 EMIO。 MIO 和 EMIO 只是 GPIO 信号的两种接口&#xff0c…

wangEditor富文本实现自定义插入数据(手把手)

插件版本如下: vue2版本 “@wangeditor/editor”: “^5.1.23”, “@wangeditor/editor-for-vue”: “^1.0.2”, 文件截图如下: 一、plugins/index.js 入口文件,整合模块导出外部使用 import withMention from ./plugin import renderElemConf from ./render-elem import …

ES升级--04--SpringBoot整合Elasticsearch

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 SpringBoot整合Elasticsearch1.建立项目2.Maven 依赖[ES 官方网站:https://www.elastic.co/guide/en/elasticsearch/client/java-rest/6.8/index.html](…

C++ vector 模拟实现

vector的底层也是一个动态数组,他与 string 的区别就是,string 是专门用来存储字符类数据的,为了兼容C语言,使用C语言的接口,在string的动态数组内都会都开一块空间用来存 \0 ,而vector则不会。 首先我们要…

水电收费远程抄表

1.前言:从传统到现代的改变 水电收费远程抄表,是科学技术在公共服务领域的一次重要运用,它改变了过去人力上门服务抄表的传统模式,提高了高效率,降低了偏差,为群众与企业带来了极大的便利。这种系统运用智…

富途面试题:用面向对象的思想设计人关门的场景

我工作两年后,有一次不成功的富途证券的面试,印象非常深刻,面试官提出了一个看似简单实则充满深意的问题:如何用面向对象的思想设计一个人关门的场景? 我当时是这样设计的,创建两个类:Person和D…

Linux命令那么多,先来一篇文件和目录管理命令!

💡本文建议大家收藏! 文件和目录管理命令 1. ls - 列出目录内容 ls命令是Linux中最常用的命令之一,用于列出目录中的文件和子目录。 ls显示当前目录下的所有文件和目录。 ls -l以长格式列出目录内容,显示文件权限、所有者、大…

云途探索——移动云云日志接入实践

目录 1 前言2 新手入门2.1 前置条件2.2. 配置采集对象及规则2.3 安装Agent2.4 日志管理 3 使用场景3.1 优势3.2 应用场景 4 总结 1 前言 随着人工智能、大数据、物联网以及云计算时代的到来,在日志数据量持续爆增、日志数据日益多样化的今天,传统日志服…