MCU固件升级系列1(STM32)
本系列将从升级流程、boot代码编写、APP代码编写以及固件打包来介绍,硬件选用STM32F407ZGT6(手里只有),来完成这系列教程。

前言
为什么需要固件升级:
功能更新:随着产品的迭代和用户需求的变化,可能需要对产品功能进行优化或扩展。固件升级可以实现这些需求的满足。
Bug修复:在产品开发过程中,可能存在一些未被发现的问题。固件升级可以解决这些问题,提高产品的稳定性和可靠性。
性能优化:软件算法及硬件驱动的优化可以通过固件升级实现,从而提高整体性能。
安全漏洞修补:对于连接到网络的设备,安全问题尤为重要。固件升级可以修补已知的安全漏洞,保障系统安全。
适配新硬件:当产品硬件发生变更时(例如更换传感器类型或接口),可能需要对应的固件修改以适应新硬件。
综上所述,固件升级是一种有效的手段,可以满足产品迭代、修复问题、优化性能等多方面的需求。
FLASH分区

- 系统存储区:用于存放系统程序代码和数据,如引导程序、操作系统等。
- 主存储区:用于存放应用程序代码和数据。
- OTP区域(One-Time Programmable):一次性可编程区域,只能被写入一次,用于存放设备的唯一标识信息,如MAC地址、序列号等。
- 选项字节:用于存储设备的配置信息,如时钟源选择、外设使能等。选项字节通常位于OTP区域或Flash存储器中,由芯片厂商预先配置并烧录,用户无法修改。在某些情况下,选项字节可以通过特殊的编程工具进行修改。
现在只需要关注主存储区Flash,我们写的代码(固件)将放在主存储区Flash中,先进行分区。

一般固件分区不需要那么多,根据项目需求和功能进行分区,既然是教程,先按简单的做法来做,Bootloader、设备参数、APP1和备份APP2四个分区
为每个分区分配大小

STM32F407ZGT6的flash有1M字节的FLash空间。

暂时先这样分,有人会说有些浪费和不合理,但是本教程初衷希望可以带初学者尽快掌握固件升级步骤和理解,怎么简单怎么来,后续真正掌握,就是顺手拈来。下一篇讲解,MCU固件bootloader编写。
相关文章:
MCU固件升级系列1(STM32)
本系列将从升级流程、boot代码编写、APP代码编写以及固件打包来介绍,硬件选用STM32F407ZGT6(手里只有),来完成这系列教程。 前言 为什么需要固件升级: 功能更新:随着产品的迭代和用户需求的变化,可能需要…...
ImageJ 用户手册——第五部分(菜单命令Window)
. 菜单命令32. Window32.1 Show All32.2 Put Behind32.3 Cascade32.4 Tile 33. Help33.1 ImageJ Website33.2 ImageJ News33.3 Documentation33.4 Installation33.5 Mailing List33.6 Dev. Resources33.7 Plugins33.8 Macros33.9 Macro Functions33.10 Update ImageJ33.11 Refr…...
利用css实现视差滚动和抖动效果
背景: 前端的设计效果,越来越炫酷,而这些炫酷的效果,利用css3的动画效果和js就可以实现,简单的代码就能实现非常炫酷的效果。 原理: 利用 js监控scrollTop的位置,通过 top定位图片的位置&#x…...
以桨为楫 修己度人(一)
目录 1.人工智能开创的新时代 2.使命开启飞桨一春独占 3.技术突破奠定飞桨品牌一骑绝尘 4.行业应用积淀飞桨品牌一枝独秀 5.生态传播造就飞桨品牌一众独妍 6.深度学习平台的现状和未来思考 7月28日,2022全球数字经济大会“人工智能驱动未来产业论坛”在京召开&…...
网络编程之简单socket通信
一.什么是Socket? Socket,又叫套接字,是在应用层和传输层的一个抽象层。它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用以实现进程在网络中通信。 socket分为流socket和数据报socket,分别基于tcp和udp实现。 SOCK_STREAM 有以下…...
计算机图形辐照度学、光度学
文章目录 前言:一、什么是辐照度学二、什么是光度学 前言: 在计算机图形学中是把辐射(Radiance)等概念和亮度(Luminance)等概念不做区分的。辐射是辐照度学的概念,而亮度则是光度学上的概念。 辐照强高度并不意味着亮度就强,就比如…...
【无功功率控制】连接到无限电网的小型风电场的无功功率控制(Simulink)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
使用pandas、xlrd、openpyxl读取Excel
首先创建一个示例Excel文件example.xlsx,其中包含以下数据: NameAgeGenderAlice28FemaleBob35MaleCharlie42MaleDave29MaleEve31Female 安装 pip install pandas pip install xlrd pip install openpyxl方法一:使用Pandas库 使用Pandas库来…...
Java面试题接口
Collection接口 List接口 迭代器 Iterator 是什么? Iterator 接口提供遍历任何 Collection 的接口。我们可以从一个 Collection 中使用迭代器方法来获取迭 代器实例。迭代器取代了 Java 集合框架中的 Enumeration,迭代器允许调用者在迭代过程中移…...
内存取证小练习-基础训练
这是题目和wolatility2.6的链接 链接:https://pan.baidu.com/s/1wNYJOjLoXMKqbGgpKOE2tg?pwdybww 提取码:ybww --来自百度网盘超级会员V4的分享 压缩包很小,题目也比较简单基础,可以供入门使用 1:Which volatility…...
【Android -- 开源库】数据库 Realm 的基本使用
简介 Realm 是一个 MVCC (多版本并发控制)数据库,由Y Combinator公司在2014年7月发布一款支持运行在手机、平板和可穿戴设备上的嵌入式数据库,目标是取代 SQLite。Realm 本质上是一个嵌入式数据库,他并不是基于 SQLit…...
基于el-input的数字范围输入框
数字范围组件 在做筛选时可能会出现数字范围的筛选,例如:价格、面积,但是elementUI本身没有自带的数字范围组件,于是进行了简单的封装,不足可自行进行优化 满足功能: 最小值与最大值的相关约束࿰…...
车联网OTA安全实践
摘要: 近年来,智能汽车已成为全球汽车产业发展的战略方向,汽车技术与工程核心逐渐从传统硬件层面转移到软件层面,汽车行业已经踏上了软件定义汽车(SDV)的变革之路。 在SDV的大趋势下,汽车零部件…...
智融合·共未来丨智合同携手百融云创打造合同智能化应用服务平台
人工智能技术是当今社会的热议话题之一。近年来,众多企业在人工智能领域持续布局,相关技术已在社会生产各环节极大地提高了生产效率。如果把过去信息技术产业的发展比喻为“手工时代”,那么人工智能技术的出现则将把信息技术产业推向“自动化…...
iOS ARC
iOS ARC是自动引用计数的缩写,是一种内存管理技术。它是由苹果公司在iOS 5中引入的,用于自动管理对象的内存生命周期。在ARC中,开发者不再需要手动管理对象的内存,这大大简化了开发过程,同时也减少了内存泄漏的风险。 …...
【代码随想录】刷题Day13
1.deque使用 239. 滑动窗口最大值 deque的介绍在C语法(12)---- 模拟实现queue和stack_哈里沃克的博客-CSDN博客 其实deque就是一个两头都能进出数据的数据结构,我们之所以使用它就是因为他的结构特点就是两边出,这样我们既可以判…...
playwright连接已有浏览器操作
文章目录 playwright连接已有浏览器操作前置准备打开本地已有缓存的Chrome(理解)指定端口打开浏览器连接指定端口已启动浏览器(推荐) playwright连接已有浏览器操作 前置准备 pip install playwright # 安装playwright的python…...
深度学习模型评估简单介绍
文章目录 深度学习模型评估介绍训练集、验证集和测试集应用场景准确率和误差率精确率和召回率F1 分数ROC 曲线和 AUC总结 深度学习模型评估介绍 本教程将介绍深度学习模型的基本评估方法及它们的应用场景。我们主要关注监督学习模型。 训练集、验证集和测试集 在深度学习中&…...
PyTorch——利用Accelerate轻松控制多个CPU/GPU/TPU加速计算
PyTorch——利用Accelerate轻松控制多个CPU/GPU/TPU加速计算 前言官方示例单个程序内控制多个CPU/GPU/TPU简单说一下设备环境导包加载数据 FashionMNIST创建一个简单的CNN模型训练函数-只包含训练训练函数-包含训练和验证训练 多个服务器、多个程序间控制多个CPU/GPU/TPU参考链…...
4个很多人都不知道的现代JavaScript技巧
JavaScript在不断的进化和升级,越来越多的新特性让我们的代码变得更加简洁。因此,今天这篇文章,我将跟大家分享 4 个不常用的 JavaScript 运算符。让我们一起研究它们。 1.可选的链接运算符 这个功能非常好用,它可以防止我的代码…...
嵌入式C函数指针覆盖变量问题分析与解决方案
1. 函数指针覆盖变量问题解析在嵌入式C语言开发中,函数指针是一种强大的工具,但也可能带来一些难以察觉的问题。特别是在Keil MDK等嵌入式开发环境中,函数指针的错误使用可能导致变量被意外覆盖,这类问题往往难以调试。1.1 问题现…...
终极指南:如何用XUnity自动翻译器让外语游戏秒变中文版
终极指南:如何用XUnity自动翻译器让外语游戏秒变中文版 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾因为语言障碍而错过精彩的Unity游戏?XUnity.AutoTranslator正是为解…...
从数据迷雾到精准洞察:Granblue Fantasy: Relink战斗分析工具深度解析
从数据迷雾到精准洞察:Granblue Fantasy: Relink战斗分析工具深度解析 【免费下载链接】gbfr-logs GBFR Logs lets you track damage statistics with a nice overlay DPS meter for Granblue Fantasy: Relink. 项目地址: https://gitcode.com/gh_mirrors/gb/gbfr…...
网站推广新纪元:品牌100工程引领下的精准引流与高效转化
在数字化转型的浪潮中,72%的企业网站上线后却陷入了“无人问津”的尴尬境地。缺乏系统的推广策略,仅31%的企业能通过科学推广实现流量与转化双提升。品牌100工程在深度陪跑实践中发现,2026年的网站推广已告别“盲目投放”时代,更注…...
Claude Code Skill 最佳实践:5 分钟封一个,6 条要点 + 团队共享
👉 这是一个或许对你有用的社群🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料: 《项目实战(视频)》:从书中学,往事上…...
别再只用moviepy了!用Python的av库给视频批量加字幕,5分钟搞定
别再只用moviepy了!用Python的av库给视频批量加字幕,5分钟搞定 视频字幕添加是内容创作者的高频需求,无论是自媒体博主制作教程视频,还是教育工作者录制课程,精准的字幕不仅能提升观看体验,还能显著提高内容…...
解锁网盘文件下载新体验:LinkSwift直链解析工具完全指南
解锁网盘文件下载新体验:LinkSwift直链解析工具完全指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天…...
【最新版本】OpenClaw 2.7.5 一键安装部署完整教程(包含安装包)
OpenClaw 一键安装包|一键部署,告别复杂环境配置 适配系统:Windows10/11 64 位当前版本:v2.7.5(虾壳云版)核心优势:全程可视化操作,无需命令行、无需手动配置 Python/Node.js&#…...
避坑指南:STM32F407的ADC多通道采样,你的数据顺序真的对了吗?
STM32F407多通道ADC采样数据错位排查手册 在嵌入式开发中,ADC多通道采样是常见需求,但数据顺序错乱问题却让不少工程师深夜加班。上周有位同行发来求助:他的四通道温度监测系统运行两周后,突然出现通道数据交叉污染,导…...
晶圆为何是圆形而芯片是方形?揭秘半导体制造的工程智慧
1. 项目概述:一个看似简单却充满工程智慧的谜题“为什么晶圆是圆的,而芯片是方的?” 这个问题,乍一听像是半导体行业里一个有趣的脑筋急转弯,但它背后却串联起了从材料科学、物理化学到精密制造、经济学乃至数学几何的…...
