【升级】EasyFlash 环境变量功能新增类型转换插件

2019-12-31 19:13发布

本帖最后由 sunnydragon 于 2016-2-21 22:18 编辑

目前 EasyFlash 会将环境变量以字符串形式存储于 Flash 中,在这种模式下,对于非字符串类型的环境变量在使用时,就必须得增加额外的字符串转换代码。
设计 Types 插件就是为了方便用户在使用 EasyFlash 时,以更加简单的方式去操作各种类型的环境变量,降低用户使用难度。
主要支持的类型包括:C 的 基本类型数组类型 以及 结构体类型 详细的使用方法可以参考 Github 上的说明文档:https://github.com/armink/EasyFl ... flash/plugins/types
下载地址:Github:https://github.com/armink/EasyFlashOSChina:http://git.oschina.net/armink/EasyFlash本坛下载: EasyFlash-20160221.zip (4.29 MB, 下载次数: 109) 2016-2-21 22:08 上传 点击文件名下载附件
EasyFlash-20160221

新的一年 EasyFlash 还有更多更实用功能有待开发,欢迎大家多提宝贵建议。正是有了大家的建议和反馈,才使得 EasyFlash 变得足够完善,大家的支持是也我坚持开源的动力



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
73条回答
sunnydragon
1楼-- · 2020-01-01 11:37
本帖最后由 sunnydragon 于 2016-2-22 21:02 编辑
liwei_jlu 发表于 2016-2-22 12:53
数据以 Key-Value 存储,
如果每分钟存一条,一年就是50万条,是不是就需要建立50万个Key(key1 - key50W ...


1、目前的模式是把所有的环境变量都有先在内存中进行缓存,完成增删改查后,用户需自行执行存储操作,将所有的环境变量存储到 Flash 中。所以你说的“存储空间碎片”是不存在的。

2、Flash 的磨损平衡是有支持的,用户可以自行选择是否开启“写平衡”模式,默认不开启。

3、就像你最后说的,你也可以使用 EasyFlash 的 Log 功能来存储这些参数,只需定义日志的最大长度即可,超出的日志会自动覆盖早期的日志,所以无需定义“采集数据总数”环境变量,库本身提供了获取日志已存储容量的方法。
qq302011
2楼-- · 2020-01-01 13:08
为什么,只需要使用一个BLOCK 16K的,非得在里面定义最小两个?
liwei_jlu
3楼-- · 2020-01-01 17:26
sunnydragon 发表于 2016-2-22 21:00
1、目前的模式是把所有的环境变量都有先在内存中进行缓存,完成增删改查后,用户需自行执行存储操作,将 ...

感谢热心回复。仍然有如下疑问:
1 目前的模式是把所有的环境变量都有先在内存中进行缓存,完成增删改查后
如果我有50w条数据,需建立50W个key-value,这些无法全部缓存到ram中,是否是需要一部分就缓存一部分?
删除中间第2K条数据,那么保存的操作应该是把2001条数据以后的flash擦除后全部重新写入吧?

3 easyflash是否支持多种log的同时存在?
比如 我定义一个flash的0-1MB为 A类型数据的log,有10W条记录;  2-8MB为B类型的操作log,有2W条记录。
A类型与B类型的操作频率、保存结构完全不同,需要分别保存。
lrzxc
4楼-- · 2020-01-01 21:19
 精彩回答 2  元偷偷看……
sunnydragon
5楼-- · 2020-01-01 23:58
liwei_jlu 发表于 2016-2-22 22:02
感谢热心回复。仍然有如下疑问:
1 目前的模式是把所有的环境变量都有先在内存中进行缓存,完成增删改查 ...

1、关于第一个问题,由于 EasyFlash 目前主要定位是以参数存储为主,所以你的大数量记录需求由于资源占用问题,很难用 EasyFlash 的环境变量功能来实现。在今年的开发计划中,有新增轻量模式的计划,此时的环境变量一方面可以直接将其 Value 经过压缩,直接存储至 Flash 中,不需要转换为字符串格式,同时会取消内存缓存。

2、目前不支持分区日志,所有的日志只允许一种方式进行存储。不过如果想要支持,难度也不太大,需要将现有代码面向对象化即可,如果有兴趣,我可以协助你完成这个工作。
liwei_jlu
6楼-- · 2020-01-02 01:31
sunnydragon 发表于 2016-2-24 11:00
1、关于第一个问题,由于 EasyFlash 目前主要定位是以参数存储为主,所以你的大数量记录需求由于资源占用 ...

“将现有代码面向对象化”
是指定义不同的函数结构体,分别把API函数赋值给结构体内的函数指针吗? 这样是否还需要修改每个easyflash函数的flash占用空间地址范围?

如果不分区日志,就面临一个问题:所有日志共同使用一个分区,日志分区大小固定,写满后从头开始写、覆盖原有日志,可能某个操作频繁的日志会覆盖掉其他类型的日志。

一周热门 更多>