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、删除“温度”的环境变量。

2.2、IAP:在线升级

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


2.3、Log:日志存储

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

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

时间: 2024-10-05 00:51:41

EasyFlash —— 开源轻量级嵌入式 Flash 存储器库的相关文章

轻量级大规模机器学习算法库Fregata开源:快速,无需调参

一. 大规模机器学习的挑战 随着互联网,移动互联网的兴起,可以获取的数据变得越来越多,也越来越丰富.数据资源的丰富,给机器学习带来了越来越多,越来越大创造价值的机会. 机器学习在计算广告,推荐系统这些价值上千亿美元的应用中起到的作用越来越大,创造的价值也越来越大.但是越来越大的数据规模也给机器学习带来了很多挑战. 最大的挑战就是庞大的数据量使得对计算资源的需求也急剧增长.首先经典的机器学习算法其计算量基本上都是与训练数据条数或者特征数量呈二次方甚至是三次方关系的[1].即是说数据量或者特征数每翻

值得推荐的开源C/C++框架和库

值得学习的C语言开源项目   - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力.Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行. 下载链接:http://home.tiscali.cz/~cz210552/webbench.html - 2. Tinyhttpd tinyhttpd是一个超轻量型

58同城开源轻量级Java Web框架 Argo

58同城开源轻量级Java Web框架 Argo 发表于17小时前| 次阅读| 来源CSDN| 0 条评论| 作者张红月 开源58同城JavaWeb框架 摘要:58同城开源其轻量级Java Web框架--Argo,Argo起源与58同城的内部Web框架wf(Web Framework).目前wf支撑着58同城几乎所 有的Web站点.开发者们对此次开源的反响非常强烈,几乎一天时间就被收藏了90次,fork34个.那么是否会掀起国内的开源热潮呢? 如今,开源已成为业界互联网公司的一种发展趋势,许多公

Android开源项目第二篇——工具库篇

Android开源项目第二篇--工具库篇 本文为那些不错的Android开源项目第二篇--开发工具库篇,主要介绍常用的开发库,包括依赖注入框架.图片缓存.网络相关.数据库ORM建模.Android公共库.Android 高版本向低版本兼容.多媒体相关及其他.   最新内容请访问AndroidOpenProject@Github,欢迎Star和Fork.   Android开源项目系列汇总已完成,包括: Android开源项目第一篇--个性化控件(View)篇Android开源项目第二篇--工具库

makefile文件-Realvnc3.3.7开源代码嵌入式移植

问题描述 Realvnc3.3.7开源代码嵌入式移植 在realvnc下载了源码版本3.3.7进行交叉编译,解压源码后查看README分两步进行编译,其编译方式说明为: To build this distribution you need a C++ compiler as well as a C compiler. You also need a reasonably recent version of the X window system installed. This come as

最佳的开源网络视频会议音频编码库:Speex

在网络视频会议开发领域,我们有许多开源的音频编码库可以供选择,如G.7x系列.ACC.AC3.Speex等音频编码库,但由于网络视频会议可能会在无QOS保证的网络中传输数据,所以不仅要求音频编码器可以传输实时的高质量的音频数据,还需要保证带宽足够小,满足不同带宽的需求.因此一些宽带的编码器,如ACC.AC3等,其传输需要较大的带宽,就很难适应网络视频会议的低带宽传输要求.Speex是一个基于CELP算法的开源编码器,其可以支持从窄带(2kb)到宽带(44kbs)的音频传输,最少的音频传输带宽可以

FunDA:一个开源的函数式数据处理工具库,也是Slick的补充

  如果你是一个Slick用户,或者你是一个数据库编程人员正在尝试进入函数式编程模式,那么FunDA可能会帮到你. 目前市面上FRM(Functional Relational Mapper),即函数式的数据库处理工具库的选择并不多,Typesafe公司的Slick可能是最通用的选择了.整体上来说:Slick还是一个不错的函数式数据库编程工具,用scala语言,很多地方引用了函数式的抽象模式和对象(functional abstractions and objects).但是,FRM是一种偏重数

嵌入式-编译qt库,用directfb库。

问题描述 编译qt库,用directfb库. 嵌入式qt,用directfb库,现在directfb库里面改变了东西,用不用重新编译qmake,以及qt的lib库,以及qt的程序.谢谢. 解决方案 http://blog.csdn.net/yinjiabin/article/details/7675394

JavaScript flash复制库类 Zero Clipboard_javascript技巧

本文将介绍一个跨浏览器的库类 Zero Clipboard .它利用 Flash 进行复制,所以只要浏览器装有 Flash 就可以运行,而且比 IE 的 document.execCommand("Copy") 更加灵活. Zero Clipboard 的实现原理 Zero Clipboard 利用 Flash 进行复制,之前有 Clipboard Copy 解决方案,其利用的是一个隐藏的 Flash.但最新的 Flash Player 10 只允许在 Flash 上进行操作才能启动剪