SimonLiu的ESP8266与AliOS Things 学习教程系列之十二:Flash操作之KV组件(Key-Value键值组件)

版权声明:本文为博主(SimonLiu)原创文章,未经博主允许不得转载。 https://blog.csdn.net/toopoo/article/details/88600618

欢迎加入交流群: ESP8266 AliOS Things 群 号: 107723112
系列文章目录:
SimonLiu的ESP8266与AliOS Things 学习教程系列目录

对于flash介质而言,它是有一定的擦写次数限制的。如果针对介质上一个固定地址进行重复的擦除、写入,将会导致该区域的使用寿命降低,甚至出现介质损坏的情况。AliOS Things 的KV组件的写平衡(磨损平衡)特性就是通过异地更新、垃圾回收等策略来平衡flash介质各个存储区块的磨损程度,以避免某些“特定”存储区块因过度使用而形成坏区,从而延长flash的使用寿命。
以上文字来自博文:AliOS Things KV组件的写平衡特性

举例说,ESP8266的Flash操作是这样的:每次写入之前,需要先擦除,每次需要擦除一个扇区(4K字节),写入需要4字节对齐。一般来说我们存储用户数据不需要写入4K那么多的数据,可能只有几十个字节,但是每次写入都要擦除4K对Flash寿命是有明显影响的。
AliOS Things的KV组件替我们做好了这些事情,一次擦除以后,可以分别写入不同的位置。具体写哪里擦除哪里,AliOS Things已经为ESP8266等芯片做好了适配,你只需要考虑写入的key和value就行了。
乐鑫实际上也为ESP8266和ESP32提供了类似的组件,称为NVS组件,不过操作上比KV组件多了打开、确认写入、关闭等操作。KV组件使用起来更方便。
KV写入代码:

    char mode[8] = "mode";
    char option[8] = "auto";
    int len = strlen(option);
    aos_kv_set(mode, option, len, 1);

KV读取代码:

    char option[8];
    int len = 8;
    aos_kv_get("mode", option, len);

参考链接:
AliOS Things KV组件的写平衡特性-云栖社区-阿里云
【Alios-things笔记】EMW3060 Flash用户数据存储KV - 詆調 - CSDN博客
AliOS-Things–EMW3060–KV - 似水流年 - CSDN博客

猜你喜欢

转载自blog.csdn.net/toopoo/article/details/88600618