开发者社区> 知与谁同> 正文

EasyFlash —— 开源轻量级嵌入式 Flash 存储器库

简介:
+关注继续查看

EasyFlash是一款开源的轻量级嵌入式Flash存储器库,主要为MCU(Micro Control Unit)提供便捷、通用的上层应用接口,使得开发者更加高效实现基于的Flash存储器常见应用开发。该库目前提供 三大实用功能 :

Env 小型KV数据库,支持 写平衡(磨损平衡) 及掉电保护模式
让Flash变为NoSQL(非关系型数据库)模型的小型键值(Key-Value)存储数据库。在产品上,能够更加简捷的实现 设定参数 或 运行日志等信息掉电保存的功能。

IAP 在线升级再也不是难事儿
该库封装了IAP(In-Application Programming)功能常用的接口,支持CRC32校验,同时支持Bootloader及Application的升级。

Log 无需文件系统,日志可直接存储在Flash上
非常适合应用在小型的不带文件系统的产品中,方便开发人员快速定位、查找系统发生崩溃或死机的原因。同时配合EasyLogger(我开源的超轻量级、高性能C日志库,它提供与EasyFlash的无缝接口)一起使用,轻松实现C日志的Flash存储功能。

1.1、资源占用

最低要求: ROM: 6K bytes RAM: 0.5K bytes + (Env大小)

Demo平台:STM32F103RET6 + RT-Thread 1.2.2 + Env(2K bytes)
实际占用: ROM: 6K bytes RAM: 2.6K bytes
1.2、支持平台

目前已移植硬件平台有 stm32f10x 与 stm32f4xx 系列的片内Flash,这个也是笔者产品使用的平台。其余平台的移植难度不大,在项目的设计之初就有考虑针对所有平台的适配性问题(64位除外),所以对所有移植接口都有做预留。移植只需修改 easyflashportef_port.c 一个文件,实现里面的擦、写、读及打印功能即可。

欢迎大家 star and pull request(Github|OSChina) 。开源软件的成功离不开所有人的努力,也希望该项目能够帮助大家降低开发周期,让产品更早的获得成功。

2、流程

2.1、Env:环境变量(KV数据库)

下图为通过控制台(终端)来调用环境变量的常用接口,演示了以下过程,这些接口都支持被应用层直接调用。

1、创建“温度”的环境变量,名为 temp,并且赋值为 123;
2、保存“温度”到Flash中并重启;
3、检查“温度”是否被成功保存;
4、修改“温度”值为 456 并保存、重启;
5、检查“温度”是否被成功修改;
6、删除“温度”的环境变量。
image
2.2、IAP:在线升级

下图演示了通过控制台来进行IAP升级软件的过程,使用的是库中自带的IAP功能接口,演示采用的是串口+Ymodem协议的方式。你还也可以实现通过CAN、485、以太网等总线,来实现远程网络更新。

image
2.3、Log:日志存储

下图过程为通过控制台输出日志,并将输出的日志存储到Flash中。重启再读取上次保存的日志,最后清空Flash中的日志。

image

文章转载自 开源中国社区 [http://www.oschina.net]

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
嵌入式 CPU 平台部署
现今的物联网技术正经历着日新月异的发展,物联智能的概念已经深入人心,人们的工作、学习和娱乐都离不开与物联智能设备的交互,而物联设备的基础是嵌入式技术。
91 0
《嵌入式Linux驱动开发教程》| 每日读本书
高等院校嵌入式人才培养规划教材,全面详细地讲解了Linux设备驱动开发,也可供嵌入式Linux驱动开发人员参考。每日搜罗最具权威专业书籍,更多图书请关注“每日读本书”。
1097 0
嵌入式,uboot基础
一个嵌入式系统从软件角度划分三个层次:引导加载程序boot和bootloader                                                                   linux内核             ...
621 0
嵌入式,嵌入式系统制作
内核制作:         清除配置文件 make  distclean         配置内核     make  menuconfig ARCH=arm         编译内核     make  uImage ARCH=arm  CROSS_COMPILE=ar...
971 0
嵌入式中 MMU的功能
  学习嵌入式才发现要看的书太多,外面的世界很精彩啊,现在来说说MMU吧,MMU是Memory Management Unit的缩写,是用来管理虚拟内存系统的器件。 MMU通常是CPU的一部分,本身有少量存储空间存放从虚拟地址到物理地址的匹配表。
948 0
嵌入式Linux网络驱动程序的开发及实现原理
0 引言随着人们对开放源代码软件热情的日益增高,Linux作为一个功能强大而稳定的开源操作系统,越来越受到成千上万的计算机专家和爱好者的青睐。在嵌入式领域,通过对Linux进行小型化裁剪后,使其能够固化在容量只有几十兆字节的存储器芯片或单片机中,成为应用于特定场合的嵌入式Linux系统。
1465 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
面向领域的场景驱动设计
立即下载
深入解析数据存储技术原理及发展演进—Linux开源存储技术
立即下载
混合APP开发模式为什么成为主流
立即下载