歡迎加入交流群:ESP8266 AliOS Things 群 號(hào): 107723112
所有教程請(qǐng)看 AliOS Things 入門教程系列
此教程在SimonLiu的CSDN博客同步更新走趋。
對(duì)于flash介質(zhì)而言瓢谢,它是有一定的擦寫次數(shù)限制的悼吱。如果針對(duì)介質(zhì)上一個(gè)固定地址進(jìn)行重復(fù)的擦除既鞠、寫入,將會(huì)導(dǎo)致該區(qū)域的使用壽命降低当悔,甚至出現(xiàn)介質(zhì)損壞的情況。AliOS Things 的KV組件的寫平衡(磨損平衡)特性就是通過異地更新、垃圾回收等策略來(lái)平衡flash介質(zhì)各個(gè)存儲(chǔ)區(qū)塊的磨損程度镶摘,以避免某些“特定”存儲(chǔ)區(qū)塊因過度使用而形成壞區(qū),從而延長(zhǎng)flash的使用壽命岳守。
以上文字來(lái)自博文:AliOS Things KV組件的寫平衡特性
舉例說(shuō)凄敢,ESP8266的Flash操作是這樣的:每次寫入之前,需要先擦除棺耍,每次需要擦除一個(gè)扇區(qū)(4K字節(jié))贡未,寫入需要4字節(jié)對(duì)齊。一般來(lái)說(shuō)我們存儲(chǔ)用戶數(shù)據(jù)不需要寫入4K那么多的數(shù)據(jù),可能只有幾十個(gè)字節(jié)俊卤,但是每次寫入都要擦除4K對(duì)Flash壽命是有明顯影響的嫩挤。
AliOS Things的KV組件替我們做好了這些事情,一次擦除以后消恍,可以分別寫入不同的位置岂昭。具體寫哪里擦除哪里,AliOS Things已經(jīng)為ESP8266等芯片做好了適配狠怨,你只需要考慮寫入的key和value就行了约啊。
樂鑫實(shí)際上也為ESP8266和ESP32提供了類似的組件,稱為NVS組件佣赖,不過操作上比KV組件多了打開恰矩、確認(rèn)寫入、關(guān)閉等操作憎蛤。KV組件使用起來(lái)更方便外傅。
KV寫入代碼:
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組件的寫平衡特性-云棲社區(qū)-阿里云
【Alios-things筆記】EMW3060 Flash用戶數(shù)據(jù)存儲(chǔ)KV - 詆調(diào) - CSDN博客
AliOS-Things--EMW3060--KV - 似水流年 - CSDN博客