FSKV核心库开发实战:API详解与Demo演示

电子说

1.4w人已加入

描述

为了帮助开发者高效集成FSKV核心库,本文深入解析其核心API接口,并结合完整的Demo实例进行操作演示。从基础读写到高级特性,循序渐进,确保每位开发者都能快速理解并灵活运用。

一、FSKV核心库主要特性

相比于传统的FDB库,FSKV在性能方面有显著提升,同时保持了API的简洁易用。通过均衡擦写机制,FSKV还能有效延长Flash存储器的使用寿命,确保在设备整个生命周期内数据的可靠存储。

1.1  核心特点:

持久化存储:数据写入Flash,断电后不丢失;

功能丰富:提供初始化、设置、获取、删除等完整API,如:fskv.init():初始化fskv.set(key, value):存储数据fskv.get(key):读取数据fskv.del(key):删除数据

稳定高效:读写速度恒定,不受 “脏数据” 影响,最高10万次均衡擦写;

优化数据长度限制:如value最大4096字节,key最大63字节。

1.2  实现原理:

FSKV核心库原理是在模组片上Flash单独开辟了一个总可用空间是64K的小区域,跑了个小文件系统,单独操作,实现类似于微型数据库的功能,只支持操作芯片自身的Flash文件系统,不支持操作通过IF核心库或者SFUD核心库挂载的文件系统。

简单来说——FSKV核心库就是一个 “嵌入式设备里的小数据库”,专门用来安全、稳定地存放配置或业务数据,断电也不会丢。


 

▼ 关于KV键值对数量  ▼

FSKV一共64K,16个块,每块大小4K。

初始化时会分配2个块用于小型数据,所以大型数据最多只能存储14对,每对KV数据占据一个块。

小型数据(Value ≤ 255 字节)

当Value长度≤ 255字节时,所有KV对会复用初始分配的8192字节空间,极限最多存储812对,此时V值只有1字节。

大型数据(Value ≥ 256 字节)

当Value长度 ≥ 256字节时,每次写入都会触发新块分配(4096字节),每对KV数据占据一个块,所以大型数据最多存储14对。

参考数据表详见API文档:

https://docs.openluat.com/osapi/core/fskv/

1.3 FSKV与其他存储区域的区别:

与其他掉电不丢失的存储区域(如OTP、IMEI、SN)不同,FSKV具有其独特的适用场景和操作特性:

FSKV:可以在LuaTools烧录程序时进行清除,轻量快速,适合零散配置,频繁读写效率高,比如存储串口波特率、服务器IP等用户的应用数据。

OTP:加锁后不可篡改,安全性高,适合固定关键数据,比如存储射频校准数据、密钥等。

具体使用可以参考OTP核心库:https://docs.openluat.com/osapi/core/otp/

IMEI:国际移动设备识别码,每个设备全球唯一,永久只读不可修改,是设备入网的 “身份证”,用于蜂窝模组入网、合规认证等需求。

具体使用可以参考mobile核心库:https://docs.openluat.com/osapi/core/mobile/#mobilesn

1.4  特别说明

针对社群工程师朋友应用开发中的疑问,这里特别说明一下10万次均衡擦写的相关问题。

▼  10万次均衡擦写  ▼

10万次均衡擦写——是指Flash存储的单个单元最多能承受10万次 “擦除 - 写入” 循环,再通过均衡擦写技术将数据分散到所有单元,避免个别单元提前损坏,从而延长整体设备寿命。从原理上来说,依靠均衡擦写技术,设备能持续的稳定使用。

社群工程师朋友提问:均衡2个词如何解读?  另外, 读是不限次数的,对吧?

简要解答:就是同一个地址,只能擦写10万次;

读的次数不限制。

你每次写fskv,不一定是在同一个地址,fskv的实现,会尽量在不同的地址擦写,提升你的使用次数,这就叫做擦写均衡。

详细API文档:https://docs.openluat.com/osapi/core/fskv/


 

二、FSKV核心库应用示例

提供了FSKV核心库API的参考示例及demo实操教程,帮助开发者快速上手,实际应用中可结合具体需求灵活调整。

核心示例代码如下,完整demo详见源码仓库最新文件。

APIAPI

今天的内容就分享到这里了~

审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 相关推荐
  • 热点推荐
  • API

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分