搜索
bottom↓
回复: 276

【开源】EasyFlash 新年发布 V4.0 beta 版,完全重写,欢迎品尝

  [复制链接]

出0入198汤圆

发表于 2019-2-10 22:48:28 | 显示全部楼层 |阅读模式
本帖最后由 sunnydragon 于 2019-2-11 20:04 编辑

EasyFlash 想必大家都不陌生了,这是我开源的第二个嵌入式软件,它的出现为嵌入式产品提供了简洁、易用、高可靠的参数存储方案(不太了解的朋友可以先看下介绍:https://github.com/armink/EasyFlash )。
但我一直认为它不够完美,所以完全重写了
全新 V4.0 版本。先来跟大家一起回顾下 V4.0 开发的初衷。

为什么要开发 V4.0
从 2015 年 1 月在本坛发布的 第一个 EasyFlash 版本EasyFlash 也已经伴随了大家 4 年多的时光。
在这 4 年多的时间里,有很多其他行业的嵌入式开发者与我取得联系,得知他们已经将  EasyFlash  应用于自己的产品上,我心里也倍感欣慰,可见 EasyFlash 的成熟性已经得到了很多行业的认可。
大家普遍的感觉是 EasyFlash 功能简洁,可以很容易的应用于产品上。但随着技术的演进,大家对于 KV 需求的多样化,对于 MCU 资源(主要是 RAM)、Flash 存储资源、Flash 寿命等性能指标要求越来越高,旧版本的 EasyFlash 在这些方面还是有提升的空间。比如:
  • 1、每个存储在 Flash 上的 ENV 都会在 RAM 中缓存一份,这样做虽然能够简化实现,但确实会占用很多 RAM 资源;
  • 2、ENV 的值类型只支持字符串,如果想要保存其他类型的值(比如:数组、结构体)就比较麻烦了,虽然我后来为此又专门开发了 struct2json 开源软件,但还是不够便捷;
  • 3、每次保存 ENV 都需要重新擦写整个 Flash 扇区,那么位于扇区尾部未使用的区域始终无法得到利用,降低了 Flash 的使用效率,也就降低了 Flash 的使用寿命


也就是从 2017 年初开始,我便开始准备 EasyFlash 的性能优化工作,结合大家的需求,不断的整理、迭代设计文档,也与一些社区爱好者做过非常深入的交流。最终确定下来,如果单纯的在原有基础上进行完善,那么会有太多的功能实现受到限制,所以干脆重新开发全新一代 ENV 功能组件,这个版本被命名为 NG(Next Generation) 版本。

NG 版本差不多在 2017 年底就已经设计完毕,但一直没时间去开发。最近在亲人的支持下,终于利用 2019 年春节的假期,在岳父母家完成了 V4.0 NG 版本的开发(在此感谢岳父母、爱人的支持)。

V4.0 的新特色有哪些
  • 1、更小的资源占用,内存占用 几乎为 0
  • 2、ENV 的值类型支持 任意类型 、任意长度,相当于直接 memcpy 变量至 flash ;
  • 3、ENV 操作效率比以前的模式高,充分利用剩余空闲区域,擦除次数及操作时间显著降低;
  • 4、原生支持 磨损平衡、掉电保护功能 (V4.0 之前需要占用额外的 Flash 扇区);
  • 5、ENV 支持 增量升级 ,固件升级后 ENV 也支持升级;
  • 6、支持大数据存储模式,长度无限制,数据可在多个 Flash 扇区上顺序存储。像脚本程序、音频等占用 Flash 超过 1 个扇区的资源也都可以存入 ENV(即将在 V4.1 支持);
  • 7、支持 数据加密 ,提升存储的安全性,物联网时代的必备功能(即将在 V4.2 支持);
  • 8、支持 数据压缩 ,减低 Flash 占用(即将在 V4.3 支持);

  
V4.0 的开发与测试并行进行
虽然这次发布的版本为 beta 版本,但也已经在多个平台上做过验证,STM32F1/F2/F4 片上 Flash 还有片外的 Nor Flash ,由于时间紧迫,功能的开发的过程基本都是与功能测试同步进行,还好前期的设计工作基本到位,功能开发工作进行的基本顺利。
测试时间花费最多的工作是在随机掉电测试环节,这个测试关乎着 EasyFlash 的可靠性及容错性能,可靠性是我非常关心的一点,毕竟 ENV 功能被大家常用于产品参数的存储,出现参数丢失一定会严重影响产品功能及用户体验。
最终 EasyFlash 通过了上万次的随机掉电测试,可靠性基本满意。

不仅仅有代码,文档也已经同步更新,甚至还有设计文档
在完成测试的工作后,这两天我把文档进行了同步更新。
与以前不同的是,这次我还发布了 V4.0 设计文档(PS:设计文档整理还是高铁上完成的),也想让大家对 EasyFlash 的内部工作原理有了更加深刻理解,后面才能把它用的更加精通。

贴个部分设计文档的截图。除了这些还有些文档没在这里提到,如果想要查看更多文档,请去 EasyFlash 的 GitHub 上去找吧:
https://github.com/armink/EasyFlash

RT-Thread 软件包即将同步

目前 EasyFlash 已经在 RT-Thread 的在线软件包中,但还是 V3.X 版本,近期很快也将升级至 V4.0 ,方便更多使用 RT-Thread 的开发者开箱即用。

如果喜欢 EasyFlash ,记得分享给有需要的朋友~~

新的一年,希望听到大家更多的关于 EasyFlash 的建议或意见,有想法记得随时过来回帖哈。

最后,贴一张 开源中国 OSChina 颁发给 EasyFlash 的“码云最有价值开源项目”奖牌。EasyFlash 能
有幸成为 GVP 项目,这离不开所有参与贡献的开发者的支持,也包括我的家人。
未来也希望能够有更多爱好者加入进来,共同完善 EasyFlash ,让 EasyFlash 走的更远。


本坛下载:

GitHub:https://github.com/armink/EasyFlash ,目前为 beta 版本,建议持续关注






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入10汤圆

发表于 2020-9-4 16:14:46 | 显示全部楼层
有没有增加存储器寿命管理机制

出0入8汤圆

发表于 2020-9-2 22:17:53 | 显示全部楼层
楼主厉害,感谢分享,学习一下

出0入198汤圆

 楼主| 发表于 2020-9-2 21:23:28 | 显示全部楼层
Years丶 发表于 2020-9-2 13:55
这个支持别的嵌入式系统吗?  比如 FreeRTOS  RTX之类的  我看demo里面只有rtt  和裸机的 ...

支持的哈,对操作系统没有依赖,连裸机都支持哦

出0入0汤圆

发表于 2020-9-2 13:55:01 | 显示全部楼层
这个支持别的嵌入式系统吗?  比如 FreeRTOS  RTX之类的  我看demo里面只有rtt  和裸机的

出0入0汤圆

发表于 2020-8-22 21:34:36 | 显示全部楼层
sunnydragon 发表于 2020-8-21 20:52
直接用新版本的 TSDB 哈

嗯,已经试了TSDB,数据库的 增 、查 接口很好理解,删接口怎么用呢?在注释里面看到是 FDB_TSL_WRITE -> FDB_TSL_USER_STATUS1 -> FDB_TSL_DELETED -> FDB_TSL_USER_STATUS2,有没有相关的例子,供参考调用。
是在set_status_cb()--》fdb_tsl_set_status(db, tsl, FDB_TSL_USER_STATUS2);这个就是删除吗?
谢谢。

出0入198汤圆

 楼主| 发表于 2020-8-21 20:52:08 | 显示全部楼层
oooios 发表于 2020-8-19 21:27
key        value
record1 “1,张1,开启设备,时间”
record2 “1,张2,开启设备,时间”

直接用新版本的 TSDB 哈

出0入0汤圆

发表于 2020-8-19 21:27:49 | 显示全部楼层
key        value
record1 “1,张1,开启设备,时间”
record2 “1,张2,开启设备,时间”
record3 “1,张3,开启设备,时间”
...
recordn “n,张n,开启设备,时间”

是否这么做呢?

这种表格该如何做?

谢谢

出0入0汤圆

发表于 2020-8-19 21:21:47 | 显示全部楼层
本帖最后由 oooios 于 2020-8-19 21:23 编辑

谢谢分享,现在使用EasyFlash存储参数,很好用!想请教一下,如果是存操作日志改如何实现?例如“1,张三,开启设备,时间” “,2,李四,开启设备,时间“”,3,张三,关设备,时间” 谢谢指点。日志还需要读出来显示。是否每一条日志创建一个环境变量?

出0入0汤圆

发表于 2020-7-4 16:37:17 | 显示全部楼层
请问一下 是不是也支持TF卡啊?

出0入0汤圆

发表于 2020-7-3 08:54:21 | 显示全部楼层
楼主厉害,感谢分享,学习一下

出0入0汤圆

发表于 2020-7-1 17:32:09 | 显示全部楼层
谢谢分享,学习中

出0入0汤圆

发表于 2019-9-29 21:18:49 来自手机 | 显示全部楼层
谢谢分享,楼主厉害!

出0入198汤圆

 楼主| 发表于 2019-9-29 20:26:34 | 显示全部楼层
shiva_shiva 发表于 2019-9-29 15:10
ENV和KV是什么意思?百度了一下也没看明白。

看一些项目首页的动图你就明白了,主要是做参数存储功能的

出0入0汤圆

发表于 2019-9-29 15:10:31 | 显示全部楼层
ENV和KV是什么意思?百度了一下也没看明白。

出0入4汤圆

发表于 2019-8-14 15:31:25 | 显示全部楼层
之前没关注过,不太明白这个是干嘛用的?flash管理?

出0入0汤圆

发表于 2019-8-14 14:06:31 | 显示全部楼层
为楼主开源点赞

出0入0汤圆

发表于 2019-8-14 13:58:45 | 显示全部楼层
想知道和LittleFS相比,有啥优缺点?

出0入0汤圆

发表于 2019-7-24 11:13:50 | 显示全部楼层
说明文档要到位,这样有利于推广。

出0入198汤圆

 楼主| 发表于 2019-7-8 10:56:53 | 显示全部楼层
向北 发表于 2019-7-3 16:13
菜比想问一下这个是干嘛用的。。。能不能来个前辈回答一下我。。

可以用来存储你的设备参数,记录等等需要掉电保存的数据,可以看下 GitHub 上的介绍

出0入198汤圆

 楼主| 发表于 2019-7-7 19:32:15 | 显示全部楼层
正十七 发表于 2019-6-28 09:25
感谢楼主的开源精神!什么时候能发布正式版本

快了,反馈的问题都修好了,可以试试最新版哈

出0入0汤圆

发表于 2019-7-4 10:09:47 | 显示全部楼层
一千零八十六个赞

出0入0汤圆

发表于 2019-7-3 16:13:07 | 显示全部楼层
菜比想问一下这个是干嘛用的。。。能不能来个前辈回答一下我。。

出0入0汤圆

发表于 2019-7-3 11:48:12 | 显示全部楼层
非常感谢,关注中     

出0入0汤圆

发表于 2019-7-3 08:58:04 | 显示全部楼层
顶楼主,谢谢分享

出0入0汤圆

发表于 2019-7-3 01:23:56 | 显示全部楼层
谢谢分享,准备用了试试

出0入198汤圆

 楼主| 发表于 2019-7-2 23:32:36 | 显示全部楼层
zhangling520 发表于 2019-6-3 23:00
脏扇区擦除的时候,时间有点长。 这边应用是在通讯的,通讯回应超时了。 ...

或者先用 V3.3 版本试试? V4.0 的 GC 时间过长问题,将在 V4.1 中给用户开放 GC 接口的方式进行修复。

出0入198汤圆

 楼主| 发表于 2019-7-2 23:31:09 | 显示全部楼层
syj0925 发表于 2019-4-18 21:57
好像是存出好多次后,才发现慢的。因为是应用到网关上,要存储很多自设备参数,估计总共有250个参数,如 ...

hi,EasyFlash 最近新增了缓存机制,对于查询、写入的速率提升非常明显,你可以 GitHub 上的新版本哈。

出0入0汤圆

发表于 2019-6-28 09:25:56 | 显示全部楼层
感谢楼主的开源精神!什么时候能发布正式版本

出0入0汤圆

发表于 2019-6-11 09:23:25 | 显示全部楼层
sunnydragon 发表于 2019-6-10 16:46
进入 /docs 目录,里面有很多文档,可以在 GitHub 上在线看

谢谢啊楼主 感谢

出0入0汤圆

发表于 2019-6-10 17:21:28 | 显示全部楼层
非常感谢分享

出0入198汤圆

 楼主| 发表于 2019-6-10 16:46:43 | 显示全部楼层
dexidz 发表于 2019-6-10 08:46
感谢楼主,本人初学,还完全看不懂。请问有中文的说明吗?比如哪个文件是干嘛的,什么情况用哪个文件什么的 ...

进入 /docs 目录,里面有很多文档,可以在 GitHub 上在线看

出0入0汤圆

发表于 2019-6-10 08:46:19 | 显示全部楼层
感谢楼主,本人初学,还完全看不懂。请问有中文的说明吗?比如哪个文件是干嘛的,什么情况用哪个文件什么的?

出0入198汤圆

 楼主| 发表于 2019-6-6 13:47:04 | 显示全部楼层
zhangling520 发表于 2019-6-3 23:00
脏扇区擦除的时候,时间有点长。 这边应用是在通讯的,通讯回应超时了。 ...

这个好像无解了,毕竟扇区总数有限,用完了肯定要回收了

出0入0汤圆

发表于 2019-6-3 23:28:36 | 显示全部楼层
支持开源,

出0入0汤圆

发表于 2019-6-3 23:00:02 | 显示全部楼层
sunnydragon 发表于 2019-6-1 07:02
影响应用的什么地方呢?

脏扇区擦除的时候,时间有点长。 这边应用是在通讯的,通讯回应超时了。

出0入10汤圆

发表于 2019-6-1 16:49:04 来自手机 | 显示全部楼层
多谢楼主分享,支持支持

出0入198汤圆

 楼主| 发表于 2019-6-1 07:02:36 | 显示全部楼层
zhangling520 发表于 2019-5-31 15:48
请问写平衡可以关闭吗?  清理脏扇区的时候,有点影响我的应用了。。。

影响应用的什么地方呢?

出0入0汤圆

发表于 2019-5-31 15:48:40 | 显示全部楼层
请问写平衡可以关闭吗?  清理脏扇区的时候,有点影响我的应用了。。。

出0入10汤圆

发表于 2019-5-31 15:45:32 | 显示全部楼层
谢谢 分享  很强大!!!1

出0入0汤圆

发表于 2019-4-22 12:09:38 | 显示全部楼层
哇,超赞,试用一下看看

出0入0汤圆

发表于 2019-4-21 11:33:22 | 显示全部楼层
Useful stuff. Thank you for sharing.

出0入0汤圆

发表于 2019-4-19 12:08:49 | 显示全部楼层
楼主厉害了!!!收藏

出0入0汤圆

发表于 2019-4-18 21:57:28 | 显示全部楼层
sunnydragon 发表于 2019-4-18 15:36
是一开始就这么慢吗?

好像是存出好多次后,才发现慢的。因为是应用到网关上,要存储很多自设备参数,估计总共有250个参数,如果读取不快的话,估计上电会加载很长时间。

出0入198汤圆

 楼主| 发表于 2019-4-18 15:36:50 | 显示全部楼层
syj0925 发表于 2019-4-17 09:59
请教一下,在使用env存储较多参数,上电加载参数,发现会有挺长的延时。加载如下参数大约延时3~4秒,这是正 ...

是一开始就这么慢吗?

出0入0汤圆

发表于 2019-4-17 09:59:20 | 显示全部楼层
请教一下,在使用env存储较多参数,上电加载参数,发现会有挺长的延时。加载如下参数大约延时3~4秒,这是正常的吗?还是我使用方式有问题?
zignode0=blob @0x001DEA4C 64bytes
devobj0=blob @0x001DEAB8 88bytes
zignode1=blob @0x001DEB3C 64bytes
devobj1=blob @0x001DEBA8 88bytes
zignode2=blob @0x001DEC2C 64bytes
devobj2=blob @0x001DEC98 88bytes
zignode3=blob @0x001DED1C 64bytes
devobj3=blob @0x001DED88 88bytes
zignode4=blob @0x001DEE0C 64bytes
devobj4=blob @0x001DEE78 88bytes
zignode5=blob @0x001DEEFC 64bytes
devobj5=blob @0x001DEF68 88bytes
zignode6=blob @0x001DFA4C 64bytes
devobj6=blob @0x001DFAB8 88bytes
zignode7=blob @0x001DFB3C 64bytes
devobj7=blob @0x001DFBA8 88bytes
sysruninfo=blob @0x001DFD58 248bytes
zienode=blob @0x001F2050 2512bytes
test=0
__ver_num__=blob @0x001F3A70 4bytes

mode: next generation
size: 64012/98304 bytes.

出0入0汤圆

发表于 2019-4-13 09:05:06 | 显示全部楼层
sunnydragon 发表于 2019-4-12 19:52
暂时不支持分区呢。

为何会有分区的需求?

比如A狀態下有100個參數,B狀態下又200個參數,這些參數可能隨時增刪,如果都放在一起。查詢時間可能過長。

出0入10汤圆

发表于 2019-4-12 19:52:28 来自手机 | 显示全部楼层
多谢楼主分享,支持支持!

出0入198汤圆

 楼主| 发表于 2019-4-12 19:52:09 | 显示全部楼层
gsq19920418 发表于 2019-4-12 13:43
好奇问下,能不能分区呢?比如key1-key10在1-4扇区, key20-key100 在 8-16扇区,另外想问下如果我有80000 ...

暂时不支持分区呢。

为何会有分区的需求?

出100入101汤圆

发表于 2019-4-12 19:48:58 | 显示全部楼层
LZ大牛!

出0入0汤圆

发表于 2019-4-12 16:46:39 | 显示全部楼层
太赞了!一直是EasyFlash的忠实粉丝

出0入0汤圆

发表于 2019-4-12 15:55:39 | 显示全部楼层
感谢楼主的分享!FreeModbus-Master也是您分享的,非常感谢!

出0入0汤圆

发表于 2019-4-12 13:43:37 | 显示全部楼层
好奇问下,能不能分区呢?比如key1-key10在1-4扇区, key20-key100 在 8-16扇区,另外想问下如果我有80000的环境变量,这样的查询速率是多少呢?

出0入8汤圆

发表于 2019-4-4 09:42:37 | 显示全部楼层
感谢开源,尝试移植一下

出0入0汤圆

发表于 2019-4-4 00:45:24 | 显示全部楼层
啥都不说了,先顶一下

出0入0汤圆

发表于 2019-4-3 21:40:27 来自手机 | 显示全部楼层
例程里文件不全

出0入0汤圆

发表于 2019-4-3 21:39:45 来自手机 | 显示全部楼层
你好 能否提供一个nos  iap功能代码 ymode方式

出0入198汤圆

 楼主| 发表于 2019-4-2 15:43:20 | 显示全部楼层
Baldwin 发表于 2019-4-2 15:20
你好,能否提供一个新版EasyLog+EasyFlash组合在一起的demo


本身就有的,在 EasyLogger  的 GitHub 仓库中 https://github.com/armink/EasyLo ... rt-thread/stm32f10x

出0入0汤圆

发表于 2019-4-2 15:20:14 | 显示全部楼层
你好,能否提供一个新版EasyLog+EasyFlash组合在一起的demo

出0入0汤圆

发表于 2019-3-25 11:45:50 | 显示全部楼层
大佬,膜拜啊

出0入0汤圆

发表于 2019-3-20 17:04:02 | 显示全部楼层
顶一下,感谢楼主分享

出0入0汤圆

发表于 2019-3-20 14:48:12 | 显示全部楼层
很感谢楼主的分享  太有用了!

出0入198汤圆

 楼主| 发表于 2019-3-19 11:26:22 | 显示全部楼层
xiepan2010 发表于 2019-3-18 00:08
这个真的太牛了   有没有容错功能  比如储存几份  然后每次上电会校验各份的数据   发现有问题的就用没问题 ...

掉电保护功能是支持的。你可以试试哈

出0入0汤圆

发表于 2019-3-19 10:37:24 | 显示全部楼层
厉害!非常感谢分享

出0入0汤圆

发表于 2019-3-18 09:07:58 | 显示全部楼层
多谢楼主分享

出0入4汤圆

发表于 2019-3-18 00:08:24 来自手机 | 显示全部楼层
这个真的太牛了   有没有容错功能  比如储存几份  然后每次上电会校验各份的数据   发现有问题的就用没问题那份覆盖过来   f0系列支持吗

出0入198汤圆

 楼主| 发表于 2019-3-17 21:45:51 | 显示全部楼层
jia_xuan 发表于 2019-3-13 17:32
请教下楼主,如果我用的是eeprom-at24c512作为历史数据存储,定时存储,如果eeprom空间写满了,就覆盖早期 ...

试试 EasyFlash 的 log 功能

出0入0汤圆

发表于 2019-3-17 17:20:20 来自手机 | 显示全部楼层
感谢分享

出0入0汤圆

发表于 2019-3-13 17:32:26 | 显示全部楼层
请教下楼主,如果我用的是eeprom-at24c512作为历史数据存储,定时存储,如果eeprom空间写满了,就覆盖早期的数据,类似黑匣子功能,用easyflash可行不?

出0入198汤圆

 楼主| 发表于 2019-3-13 15:08:08 | 显示全部楼层
棋间卒 发表于 2019-3-13 10:22
楼主的设计思路看懂了,和之前用的NVS比较下,NVS存储键值对会额外算一个哈希值,上电后会读取全部头部信息 ...


你研究的很深入呀~~

是的,EasyFlash 支持不同的 Flash 写粒度,1bit 的 norflash ,8bit 的 stm32f2/f4xx,32bit 的 stm32f10x 甚至是64bit 的 stm32l4xx 都做过测试。

其他一些常见的 NVM 支持以 norflash 为主,一般很少支持 stm32 这样的片上 flash 。

期待楼主做出更多的专业性的评测对比,大家一起来完善 EasyFlash 。

出0入0汤圆

发表于 2019-3-13 14:55:48 来自手机 | 显示全部楼层
支持楼主开源精神

出0入0汤圆

发表于 2019-3-13 11:54:05 | 显示全部楼层
一不留神就到4.0了,加油!!!

出0入0汤圆

发表于 2019-3-13 11:35:02 | 显示全部楼层
感谢分享

出0入0汤圆

发表于 2019-3-13 10:22:41 | 显示全部楼层
楼主的设计思路看懂了,和之前用的NVS比较下,NVS存储键值对会额外算一个哈希值,上电后会读取全部头部信息,利用哈西值能快速找到键值对,这样会用很多RAM,4K扇区大约用800B,其他都差不多,都是依次向后写,最后整理回收。还一个细节楼主做的比较好,以前一个扇区里的键值对是按位标记的,每次都要去修改,对于我使用的内部FLASH,擦除完只能写一次非0值,再写就无效,但可以写0。楼主的状态都是3个,FFFF, 00FF, 000,所以我的MCU也能用。

出0入0汤圆

发表于 2019-3-13 09:48:56 | 显示全部楼层
本帖最后由 棋间卒 于 2019-3-13 09:50 编辑

看了下demo,没深入看,FLASH是字节写,我用的MCU只支持word或halfword写,请问支持吗?
编辑:@note This operation's units is word. 好像是支持的

出0入0汤圆

发表于 2019-3-13 09:18:23 | 显示全部楼层
正好用到,之前用ESP32里面的NVS,也是针对键值对操作的,可以负载均衡。以扇区为单位擦除。缺点是使用RAM比较大。用楼主的试试

出0入0汤圆

发表于 2019-3-13 08:08:24 | 显示全部楼层
支持楼主这样的开源精神!帮顶!

出0入0汤圆

发表于 2019-3-7 11:09:39 | 显示全部楼层
关注,有时间再学习,希望以后能用到项目中

出0入0汤圆

发表于 2019-3-7 10:58:23 | 显示全部楼层
sunnydragon 发表于 2019-3-6 20:17
SFUD 是万能 SPI Flash 驱动库,支持几乎市面上所有常见的 SPI Flash,主要是驱动 Flash,提供读、写、擦 ...

所以如果是片外SPI的FLASH,可以同时使用底层的SFUD驱动,并使用easyflash作为应用层喽,因为还没用过,请问easyflash对于SFUD和自己编写的flash底层驱动的结合一样方便吗?另外应用层easyflash是不是不局限于片内、SPI、nand、nor等接口?谢谢楼主解答。

出0入198汤圆

 楼主| 发表于 2019-3-6 20:18:00 | 显示全部楼层
qq635274216 发表于 2019-3-6 18:48
没看懂该怎么用,用在哪些地方

最常见的用户是存储产品上的一些设定参数,你可以下载下来,试试里面提供的 demo

出0入198汤圆

 楼主| 发表于 2019-3-6 20:17:14 | 显示全部楼层
zhongsandaoren 发表于 2019-3-6 12:52
easyflash和sfud是个什么关系?

SFUD 是万能 SPI Flash 驱动库,支持几乎市面上所有常见的 SPI Flash,主要是驱动 Flash,提供读、写、擦接口。

EasyFlash 是嵌入式 Flash 闪存库,提供参数存取等实用功能。EasyFlash 的这些功能都是基于 Flash,这些 Flash 可以是 MCU 片内,也可以是片外的 SPI Flash。

所以 SFUD 比 EasyFlash 低一层,负责给 EasyFlash 提供片外 Flash 驱动支持。

出0入0汤圆

发表于 2019-3-6 19:17:20 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2019-3-6 18:48:41 | 显示全部楼层
没看懂该怎么用,用在哪些地方

出0入0汤圆

发表于 2019-3-6 12:52:16 | 显示全部楼层
easyflash和sfud是个什么关系?

出0入0汤圆

发表于 2019-3-2 18:57:51 | 显示全部楼层
nice !!!!!!

出0入198汤圆

 楼主| 发表于 2019-3-1 20:50:46 | 显示全部楼层
syj0925 发表于 2019-3-1 16:40
谢谢指导,问题已经确认了,我底层的 spi_write,调用SDK有长度限制,修改后解决了。

现在又遇到一个新 ...

不会的,还是建议你在 demo 平台上做下对比,我这边在 demo 平台测试不存在问题。

出0入0汤圆

发表于 2019-3-1 20:44:33 | 显示全部楼层
谢谢楼主分享

出0入0汤圆

发表于 2019-3-1 16:40:13 | 显示全部楼层
sunnydragon 发表于 2019-2-28 10:01
想办法运行下自带的 SPI Flash demo 吧,这样好做对比。

我这边 SPI Flash 一直在用,挺正常的。 ...

谢谢指导,问题已经确认了,我底层的 spi_write,调用SDK有长度限制,修改后解决了。

现在又遇到一个新问题:
        我存储zigbee节点的参数大小为2808,发现调用ef_set_env_blob("zignode", &s_zig_list, sizeof(xt_zig_list));重写多次后,参数没掉了。
        看了easyflash 4.0的设计原理,会自动回收脏数据,应该不会出现同一个key,导致数据存满的问题吧?

出0入198汤圆

 楼主| 发表于 2019-2-28 14:08:55 | 显示全部楼层
闪客 发表于 2019-2-28 10:46
赞!
上次跟您提到的LOG存储方面的问题,不知道是不是问题?

不太一样,这个是 4.0 新版本,完全重写的新模式,你也可以试试哈

出0入0汤圆

发表于 2019-2-28 10:46:50 | 显示全部楼层
sunnydragon 发表于 2019-2-28 10:01
想办法运行下自带的 SPI Flash demo 吧,这样好做对比。

我这边 SPI Flash 一直在用,挺正常的。 ...

赞!
上次跟您提到的LOG存储方面的问题,不知道是不是问题?

出0入0汤圆

发表于 2019-2-28 10:10:21 | 显示全部楼层
高手,大公无私!

出0入198汤圆

 楼主| 发表于 2019-2-28 10:01:31 | 显示全部楼层
syj0925 发表于 2019-2-28 09:35
改成#define EF_WRITE_GRAN    1
测试还是一样的结果。

想办法运行下自带的 SPI Flash demo 吧,这样好做对比。

我这边 SPI Flash 一直在用,挺正常的。

出0入8汤圆

发表于 2019-2-28 09:41:44 | 显示全部楼层
佩服楼主,同时感谢楼主的无私精神。下载学习使用,感谢!

出0入0汤圆

发表于 2019-2-28 09:35:02 | 显示全部楼层
sunnydragon 发表于 2019-2-28 09:13
如果是 SPI Flash 可以参考 4.0 的 SPI FLash demo

SPI Flash 擦除粒度 EF_WRITE_GRAN  是 1bit ,而不 ...

改成#define EF_WRITE_GRAN    1
测试还是一样的结果。

有个疑问:比如spi flash粒度是1,如果把EF_WRITE_GRAN配置为8 16 32,应该都没问题吧,这个参数应该只是设计到ef_port模块里面的read/write的对齐吧?

出0入198汤圆

 楼主| 发表于 2019-2-28 09:13:36 | 显示全部楼层
syj0925 发表于 2019-2-28 09:10
使用的rtl8711am 模组里的spi flash。ef_port是参考demo的来移植,现在遇到问题是参数大小被限制在2047, ...

如果是 SPI Flash 可以参考 4.0 的 SPI FLash demo

SPI Flash 擦除粒度 EF_WRITE_GRAN  是 1bit ,而不是你配置的 32bit,这块你改下再试试

出0入0汤圆

发表于 2019-2-28 09:10:27 | 显示全部楼层
sunnydragon 发表于 2019-2-28 09:02
用的是哪种 Flash ,有没有用 4.0 自带的 demo 呢。

使用的rtl8711am 模组里的spi flash。ef_port是参考demo的来移植,现在遇到问题是参数大小被限制在2047,其它功能暂时没发现异常,flashlog的存储和导出都正常。

出0入198汤圆

 楼主| 发表于 2019-2-28 09:02:41 | 显示全部楼层
syj0925 发表于 2019-2-28 08:59
我的配置参数:
    #define EF_ERASE_MIN_SIZE    (4 * 1024)  
    #define EF_WRITE_GRAN    32

用的是哪种 Flash ,有没有用 4.0 自带的 demo 呢。

出0入0汤圆

发表于 2019-2-28 08:59:23 | 显示全部楼层
我的配置参数:
    #define EF_ERASE_MIN_SIZE    (4 * 1024)  
    #define EF_WRITE_GRAN    32
    #define EF_START_ADDR (0X1DD000)
    #define ENV_AREA_SIZE (25 * EF_ERASE_MIN_SIZE)

实测发现:ef_set_env_blob函数 单个参数最大存储为2047bytes,超过就会提示:[Flash]Error: The ENV (@0x001DD084) CRC32 check failed!

以下是成功存储一个2047大小的参数,打印参数列表如下:
    test=0
    __ver_num__=blob @0x001DD080 4bytes
    devobj=blob @0x001E087C 800bytes
    sysruninfo=blob @0x001E0BCC 248bytes
    zienode=blob @0x001E1050 2047bytes

请问有人遇到和我一样的问题吗?

出0入0汤圆

发表于 2019-2-25 11:51:18 | 显示全部楼层
赞赞赞, 佩服楼主,正在膜拜中

出0入0汤圆

发表于 2019-2-25 11:37:48 | 显示全部楼层
sunnydragon 发表于 2019-2-25 11:11
4.0 版本单个 KV 长度不允许超过 扇区大小

我现在移植到我的wifi模组上,扇区是4k,但是存入2808bytes,发现读出来长度为空,不知道是不是配置问题?

出0入198汤圆

 楼主| 发表于 2019-2-25 11:11:01 | 显示全部楼层
syj0925 发表于 2019-2-22 13:54
请问一下,4.0版本目前单个kv,可以支持多的?我有数组结构20k左右,可以存进去吗? ...

4.0 版本单个 KV 长度不允许超过 扇区大小
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-20 13:41

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表