您现在的位置是:首页 >技术杂谈 >MCU固件升级系列1(STM32)网站首页技术杂谈

MCU固件升级系列1(STM32)

小昭dedug 2023-07-04 00:00:03
简介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编写。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。