0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FSKV:给嵌入式设备一个“不会失忆的大脑”

青山老竹农 来源:jf_82863998 作者:jf_82863998 2026-01-05 20:13 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

FSKV是LuatOS系统专为嵌入式设备设计的键值对(Key-Value)存储库,其作用是在Flash存储器中持久化存储键值对数据,允许开发者以键值对的形式存储和检索数据,并且这些数据会被持久化存储在Flash存储器上,确保设备断电后数据不会丢失。

目前,FSKV核心库已全面支持合宙基于LuatOS开发的产品。

一、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核心库就是一个 “嵌入式设备里的小数据库”,专门用来安全、稳定地存放配置或业务数据,断电也不会丢。

wKgZO2lbp-6ASrnPAAIc3q-lOV0142.png

▼ 关于KV键值对数量 ▼

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

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


小型数据(Value ≤ 255 字节)

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


大型数据(Value ≥ 256 字节)

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


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

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

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

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

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

SN:
设备序列号,合宙内部唯一,默认只读,可快速关联生产/售后信息,方便设备管理,常用于设备售后报修、生产追溯等。具体使用可以参考mobile核心库。

1.4 特别说明

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

▼10万次均衡擦写 ▼

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

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

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

读的次数不限制。

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

二、FSKV核心库应用示例

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

wKgZO2lbqQyAHyaQABaYZknsEIw576.png

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

wKgZPGlbqUuAXMp0AA5AKOsfhWE114.png


审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式设备
    +关注

    关注

    0

    文章

    125

    浏览量

    17742
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    嵌入式开发是否会成为下一个被看好的领域?

    嵌入式开发会不会成为下一个风口,现在确实是挺热门的话题。各种论坛、投资报告都在讲物联网、智能硬件、AIoT的万亿市场,仿佛只要跟嵌入式
    的头像 发表于 02-26 09:56 622次阅读
    <b class='flag-5'>嵌入式</b>开发是否会成为下<b class='flag-5'>一个</b>被看好的领域?

    嵌入式系统安全设计原则

    随着物联网、工业控制和智能设备的普及,嵌入式系统的安全问题越来越突出。小小的漏洞,就可能导致设备被入侵、数据泄露,甚至对人身安全产生威胁
    的头像 发表于 01-19 09:06 461次阅读
    <b class='flag-5'>嵌入式</b>系统安全设计原则

    什么是嵌入式应用开发?

    包括ARM7、ARM9、ARM11、PowerPC、MIPS等。这些处理器和编程语言的选择取决于具体的硬件条件和开发需求‌。 综上所述,嵌入式应用开发是综合性的技术领域,涉及硬件和软件的紧密结合,广泛应用于各种
    发表于 01-12 16:13

    arm嵌入式主板优缺点

    嵌入式主板是嵌入设备里面做控制、数据处理使用的CPU板 ,常见的有两类,即基于X86的嵌入式主板和基于RISC的ARM 嵌入式主板。今天我
    发表于 01-08 07:08

    系统嵌入式的学习路线

    的知识太多,太杂,太广,很多嵌入式初学者陷入嵌入式知识的海洋中,东学点,西学点,找不到学习的方向。 我从事嵌入式开发工作有10年,
    发表于 12-16 07:49

    分享嵌入式开发学习路线

    如果你想要学习嵌入式开发,我建议按照这个学习路线准备: 1. 基础铺垫期(1-2月) 理解嵌入式系统的“硬件基础”和“编程入门”,能看懂简单电路,写出基础C语言代码。这阶段的学习
    发表于 12-04 11:01

    嵌入式与FPGA的区别

    涉及到了计算机的各个方面,如果不满意,以后可以直接做软件开发,当然是不考虑年龄的问题下那基本不会有太大问题。 ✅2、fpga就比较复杂,就业岗位没有嵌入式那么多,但现在确实很缺人,薪资也的特别高,
    发表于 11-20 07:12

    40嵌入式常见名词次讲清!

    一个人的困惑。嵌入式开发涉及的术语确实又杂又多,而且很多词不仅缩写相似,使用语境也相互交叉。为了帮你打通这些基础概念,我们整理了嵌入式常见名词速查表,从最基础的G
    的头像 发表于 11-14 10:28 1333次阅读
    40<b class='flag-5'>个</b><b class='flag-5'>嵌入式</b>常见名词<b class='flag-5'>一</b>次讲清!

    嵌入式工控机:工业自动化的核心运算单元

    在工业自动化、智能制造、智能交通等领域,嵌入式工控机作为“工业大脑”,承担着数据采集、逻辑运算、设备控制等关键任务。它并非普通商用电脑的工业版,而是基于嵌入式技术设计,能在复杂工业环境
    的头像 发表于 11-04 15:50 719次阅读
    <b class='flag-5'>嵌入式</b>工控机:工业自动化的核心运算单元

    入行嵌入式应该怎么准备?

    架构、总线协议和存储器管理等概念的理解也是必不可少的。 三、操作系统嵌入式系统通常需要运行实时操作系统(RTOS)或者精简版的操作
    发表于 08-06 10:34

    嵌入式和单片机,是同一个东西吗?

    各种环境中运行,包括工业控制、汽车电子、医疗设备、家用电器、消费电子产品等。 嵌入式系统设计与通用计算机系统有几个关键区别。首先,嵌入式系统通常有
    发表于 07-09 10:20

    怎么结合嵌入式,Linux,和FPGA三方向达到均衡发展?

    嵌入式领域,不少人都怀揣着让嵌入式、Linux 和 FPGA 三方向实现均衡发展的梦想,然而实践中却面临诸多挑战。就像备受瞩目的全栈工程师稚晖君,他从大学玩单片机起步,凭借将智能算法融入
    的头像 发表于 06-25 10:08 1010次阅读
    怎么结合<b class='flag-5'>嵌入式</b>,Linux,和FPGA三<b class='flag-5'>个</b>方向达到<b class='flag-5'>一</b><b class='flag-5'>个</b>均衡发展?

    Linux嵌入式和单片机嵌入式的区别?

    Linux嵌入式与单片机嵌入式在多个方面存在显著的区别,以下是详细的比较和归纳: 、基本概念 1. Linux嵌入式: 定义:将Linux操作系统运行在
    发表于 06-20 09:46

    嵌入式AI技术漫谈 如何组建AI项目开发小组

    我们来谈谈如何组建AI项目开发小组: 为什么要为嵌入式AI项目 组建专门的开发小组 相
    的头像 发表于 06-11 16:34 1539次阅读

    嵌入式开发入门指南:从零开始学习嵌入式

    随着物联网、智能硬件的发展,嵌入式开发成为热门技能之。以下将为初学者提供份详细的嵌入式开发入门指南,涵盖学习路径、必备工具、推荐资源等内容。 1.
    发表于 05-15 09:29