首先我们得弄清楚FLASH是什么呢?
说到STM32的FLSAH,我们的第一反应是用来装程序的(掉电不丢失),实际上,STM32的片内FLASH不仅用来装程序,还用来装芯片配置、芯片ID、自举程序等等。当然, FLASH还可以用来装数据,根据用途,STM32片内的FLASH分成两部分:主存储块、信息块。 主存储块用于存储程序,我们写的程序一般存储在这里。 信息块又分成两部分:系统存储器、选项字节,系统存储器存储用于存放在系统存储器自举模式下的启动程序(BootLoader),当使用ISP方式加载程序时,就是由这个程序执行。这个区域由芯片厂写入BootLoader,然后锁死,用户是无法改变这个区域的。 选项字节存储芯片的配置信息及对主存储块的保护信息。 而我们OTA升级的AB区也是将FLASH中的64K扇区分为前B后A的
FLASH对于我们本次项目的作用主要就是:
OTA更新时,先将更新的数据写到W25Q64里保存,然后将数据再写入FLASH中的A区
为什么要先放到W25Q64中保存呢?因为我们是分片写入,一次传不了那么多,我们采用分片传入,每次传输256个字节,如果遇到中途断电,之前写入的数据也是存到W25Q64中不会丢失
FLASH擦除和写入操作:
#include "gd32f10x.h"
#