原创 谈谈STM32的bootload方案

2021-1-18 23:02 665 4 5 分类: MCU/ 嵌入式 文集: 嵌入式开发
这个话题相信很多嵌入式的同行都困惑过很长一段时间,其实说起来也不算复杂,借此机会,也把以前做过的bootloader方案说一下
先说怎么实现的,要知道bootloader本身其实也是一个应用程序,不过这个应用程序本身不会做太多的处理,他只负责告诉程序得往哪里走。
一般来说,需要以下几个操作,
  1. 地址跳转,需要跳转到某一个位置开始执行
  2. 中断向量表需要偏移
  3. 需要关闭总中断
  4. 需要注意一点是需要关闭看门狗,不然在app中没喂狗会重启
关于这个升级方案,有以下几种做法,
将芯片的flash分为几个部分,一部分用来存储升级数据app2,一部分用来存储正常运行的代码区app1,当有升级任务来的时候,mcu将数据先放到app2的区域,并在升级手法完成时候对数据进行校验,考虑到嵌入式设备的算力,建议用md5或者crc16.比较无误后在某个安全地址写入标志位后,重启设备 设备上电后会检测到有app2存在,将其数据更替到app1的区域,更新完成后跳到app1(此时存储的是app2的代码) 程序正常运行后擦除标志位
当本身空间不够的情况下,使用25q80等外设,增加一些成本,但这样可以做到更高的灵活性,比如针对刚才的情况,假如说程序运行失败了,升级固件失败了或者更新的固件达不到要求,这个时候需要回复出厂设置了,那该怎么处理呢?可以先把出厂时候的程序放在外置flash,等到比如检测到按键长按,这个时候就可以回复出厂设置了,程序从外置flash中将数据加载到app1的区域,加载完成便跳转。

作者: Bruce-Woo, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-1850657.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论2条评论)

登录后参与讨论

curton 2021-1-20 20:38

谢谢楼主

yzw92 2021-1-20 06:21

谢谢楼主
相关推荐阅读
Bruce-Woo 2021-02-09 01:08
2020,我想和你谈谈
这篇文字无关技术,也没有代码。 这是最好的时代,也是最坏的时代!写在回家前夜。 不到10个小时后就要开始坐车回家,手头的工作也没有做完。正经的事儿没完成,乱七八糟的事情倒是想了不少,说话是一种表达方...
Bruce-Woo 2021-01-19 12:34
cmake的安装过程
今天在编译opencv的时候突然发现cmake失败,显示版本不同遂决定修复之方法如下下载更高版本cmake,可在cmake官网下载 解压 tar -zxvf cmake-3.19....
Bruce-Woo 2021-01-18 20:20
谈谈低功耗
     从事嵌入式相关的工作也好几年,陆陆续续做过几个项目的。在这里借此机会,也回顾一下这些年的低功耗探索之路。感谢以下文章给我的提醒    [ht...
Bruce-Woo 2021-01-18 10:44
蓝牙应用的基本思路
该文件更新日志2021.01.18 初版,涉及文档部分区别等方面2021.01.21 增加部分解释大家好,我是BruceWoo 很久没有写博客了,刚好最近把玩了一个HF270的开发板。准备趁着这热情把...
Bruce-Woo 2017-04-18 22:34
CC2540 微信蓝牙配置
写在前面,最近公司在开发一款蓝牙设备,在这里我就和大家分享一下如何在微信配置蓝牙设备。 参考资料 http://blog.csdn.net/skdev/article/details/5097...
广告
我要评论
2
4
1
2
3
4
5
6
7
8
9
0
广告
关闭 热点推荐上一条 /2 下一条