| 本帖最后由 穿西装的强子 于 2025-6-6 11:52 编辑 
 #申请原创# @21小跑堂
       以GD32F4为例,假设我们需要将一个扇区反复写入一个用户参数,例如参数有20个bytes,而反复擦写flash会导致损坏,按GD32F4的数据手册上介绍,擦除次数只有10万次,因此反复擦写太快有超过的风险。       为了解决这个问题,我们想到了将扇区所有空间都利用起来,使用索引的方式进行写入,这样就不会反复的擦除,只有在最开始的时候才会擦除,大大的减少了擦除的次数。 写入流程
 1. 识别FLASH扇区索引,未存储区域,例如 0x08050020 无数据,记录索引为 0x08050020。
 2.写数据,按索引 0x08050020  开始写,不擦除flash,写一次,索引自加(数据长度)。
 3.写到扇区最后,如 0x08070000 ,索引变为 0x08050000,开始写,这个时候才擦除一次扇区,然后继续写入数据。
 
 一、Flash 写入次数计算
 128K存储,假设每次存24个Bytes,整个存储可以存5461次,再擦除一次扇区,扇区可以擦写10万次,存储次数10万*5461,每10秒存一次,可以写193年。二、硬件平台与开发环境 三、Flash 轮询写入实现步骤
 MCU:GD32F4xx
开发工具:Keil MDK 或 IAR Embedded Workbench
SDK:GD32F4xx Standard Peripheral Library
 |