搜索
bottom↓
回复: 91
打印 上一主题 下一主题

【开源】EasyFlash 发布 V5.0.0 beta,时序数据库功能来袭 ……

  [复制链接]

出0入198汤圆

跳转到指定楼层
1
发表于 2020-5-5 23:48:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 sunnydragon 于 2020-6-7 18:29 编辑

注意EasyFlash V5.0 新版本先已更名为 FlashDB ,欢迎大家继续关注,详见 https://www.amobbs.com/thread-5734466-1-1.html


从去年发布 V4.0 后,陆陆续续收到了大家的很多反馈。虽然 V4 开始资源占用变得更低了,但是性能经常听到大家吐槽。
大家动不动就是好几万条的数据要存储,查询时间
需要做到秒级以内。解决这个问题,恐怕动动小手术是不行的。
这个五一在家有时间,又对 EasyFlash 进行了重构,并且重新定位了 EasyFlash 的目标,未来将会聚焦于嵌入式超轻量级数据库解决方案

这次重构,主要改动了两大方面
  • 首先增加了多实例模式,这个对于提升性能会有很大的帮助,1万条 KV 的数据库,如果觉得速度慢,可以根据类别进行细分,分别存储到不同子数据库中。子数据库根据细分的比例,理论上比原有的会小 N 倍
  • 其次,增加了时序数据库功能。这个对于存储产品运行记录会非常有帮助,存储的数据量大,并且具有很高的插入及查询速度。

这次更新改动巨大,不仅是功能,还有产品定位。所以更多内容,请看 EasyFlash 最新的说明文档吧。
Github: https://github.com/armink/EasyFlash
该版本为 beta 测试版本,可能还有细节待改进,期待大家试用反馈哈~~~~


简介
EasyFlash 是一款超轻量级的嵌入式数据库开源项目,专注于提供嵌入式产品的数据存储方案。其拥有较强的可靠性及性能,并在保证极低的资源占用前提下,尽可能延长 Flash 使用寿命。
EasyFlash 提供两种数据库模式:
  • 键值数据库 :是一种非关系数据库,它将数据存储为键值(Key-Value)对集合,其中键作为唯一标识符。KVDB 操作简洁,可扩展性强。
  • 时序数据库 :时间序列数据库 (Time Series Database , 简称 TSDB),它将数据按照 时间顺序存储 。TSDB 数据具有时间戳,数据存储量大,插入及查询性能高。

使用场景
如今,物联网产品种类越来越多,运行时产生的数据种类及总量及也在不断变大。EasyFlash 提供了多样化的数据存储方案,不仅资源占用小,并且存储容量大,非常适合用于物联网产品。下面是主要应用场景:
  • 键值数据库 :
    • 产品参数存储
    • 用户配置信息存储
    • 小文件管理

  • 时序数据库 :
    • 存储动态产生的结构化数据:如 温湿度传感器采集的环境监测信息,智能手环实时记录的人体健康信息等
    • 记录运行日志:存储产品历史的运行日志,异常告警的记录等

主要特性
  • 资源占用极低,内存占用几乎为 0 ;
  • 支持 多分区,多实例 。数据量大时,可细化分区,降低检索时间;
  • 支持 磨损平衡 ,延长 Flash 寿命;
  • 支持 掉电保护 功能,可靠性高;
  • 支持 字符串及 blob 两种 KV 类型,方便用户操作;
  • 支持 KV 增量升级 ,产品固件升级后, KVDB 内容也支持自动升级;
  • 支持 修改每条 TSDB 记录的状态,方便用户进行管理;

性能及资源占用统计
TSDB 性能测试1 (nor flash W25Q64)
  1. msh />tsl bench
  2. Append 1250 TSL in 5 seconds, average: 250.00 tsl/S, 4.00 ms/per
  3. Query total spent 2248 (ms) for 1251 TSL, min 1, max 2, average: 1.80 ms/per</font>
复制代码
插入平均:4 ms,查询平均:1.8 ms


TSDB 性能测试2 (stm32f2 onchip flash)
  1. msh />tsl bench
  2. Append 13527 TSL in 5 seconds, average: 2705.40 tsl/S, 0.37 ms/per
  3. Query total spent 1621 (ms) for 13528 TSL, min 0, max 1, average: 0.12 ms/per</font>
复制代码
插入平均:0.37 ms,查询平均:0.12 ms


资源占用 (stm32f4 IAR8.20)
  1.    Module                  ro code  ro data  rw data
  2.     ------                  -------  -------  -------
  3.     easyflash.o                 276      232        1
  4.     ef_kv.o                   4 584      356        1
  5.     ef_ts_log.o               1 160      236
  6.     ef_utils.o                  418    1 024
复制代码
上面是 IAR 的 map 文件信息,可见 EasyFlash 的资源占用非常低

如何使用
从 EasyFlash V5.0 开始,由于软件架构完全重构,导致代码改动巨大,为此牺牲了之前 API 的兼容性。后续 EasyFlash 的 V4.X 版本将会继续维护(见 stable-v4.x 分支),希望大家谅解。

移植
EasyFlash 底层依赖于 RT-Thread 的 FAL (Flash Abstraction Layer) Flash 抽象层开源软件包 ,该开源库也支持运行在裸机平台 (点击查看介绍)。所以只需要将所用到的 Flash 对接到 FAL ,即可完成整个移植工作。
FAL 移植主要流程:
示例
EasyFlash 提供了主要功能的示例,直接加入工程即可运行,并具有一定的参考性
文件路径介绍备注
samples/kvdb_type_string_sample.cKVDB 使用字符型键值的示例
samples/kvdb_type_blob_sample.cKVDB 使用 blob 型(任意类型)键值的示例
samples/tsdb_sample.cTSDB 示例

本坛下载:

最新版本 GitHub 下载 :https://github.com/armink/EasyFlash








本帖子中包含更多资源

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

x

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

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

2
发表于 2020-5-6 00:32:59 来自手机 | 只看该作者
火前先留名,沙发是我的。

出140入115汤圆

3
发表于 2020-5-6 00:41:42 来自手机 | 只看该作者
火贴板凳,一直在跟随,多谢大神

出0入4汤圆

4
发表于 2020-5-6 00:47:41 | 只看该作者
这个要支持,这是要成为小资源的“SQLite”啊。

出0入0汤圆

5
发表于 2020-5-6 00:53:00 来自手机 | 只看该作者
好东西。理解楼主的开发路线,有个小建议,5.x和4.x没有必要都叫做eazy flash,因为api差异大,服务提供也不同,干脆另外取个名字,两个作品同时维护,不同侧重点

出0入0汤圆

6
发表于 2020-5-6 03:54:44 来自手机 | 只看该作者
支持楼上

出0入42汤圆

7
发表于 2020-5-6 06:12:42 来自手机 | 只看该作者
支持楼主

出0入0汤圆

8
发表于 2020-5-6 06:23:04 来自手机 | 只看该作者
火钳刘明!

出0入0汤圆

9
发表于 2020-5-6 06:56:57 来自手机 | 只看该作者
感谢楼主分享

出0入0汤圆

10
发表于 2020-5-6 07:16:22 | 只看该作者
楼主辛苦!
还没看代码
找个是裸机 还是 要有操作系统啊

出0入10汤圆

11
发表于 2020-5-6 07:32:08 来自手机 | 只看该作者
感谢分享!

出0入0汤圆

12
发表于 2020-5-6 07:57:16 | 只看该作者
留个脚印

出0入0汤圆

13
发表于 2020-5-6 08:05:33 | 只看该作者
多谢大神

出0入0汤圆

14
发表于 2020-5-6 08:13:28 | 只看该作者
这个厉害了,EASYFLASH早就听说大名了。啥时候也用到项目里。

出0入8汤圆

15
发表于 2020-5-6 08:24:23 来自手机 | 只看该作者
终于等到你

出0入0汤圆

16
发表于 2020-5-6 08:26:17 | 只看该作者
强烈支持,感谢

出0入0汤圆

17
发表于 2020-5-6 08:29:39 | 只看该作者
感谢分享

出0入0汤圆

18
发表于 2020-5-6 08:34:22 | 只看该作者
感谢分享

出0入8汤圆

19
发表于 2020-5-6 08:35:35 | 只看该作者
楼主辛苦啊,强烈支持~~

出0入0汤圆

20
发表于 2020-5-6 08:38:07 | 只看该作者
厉害厉害

出0入0汤圆

21
发表于 2020-5-6 08:39:14 | 只看该作者
终于把循环写数据这个问题解决了

出110入0汤圆

22
发表于 2020-5-6 08:57:58 | 只看该作者
几年前就用过老的版本,看来是时候尝试下新版了

出0入0汤圆

23
发表于 2020-5-6 09:05:59 来自手机 | 只看该作者
随后跟进测试,多谢开源…

出0入0汤圆

24
发表于 2020-5-6 09:13:43 | 只看该作者
Mark!Easy Flash感谢楼主分享

出0入0汤圆

25
发表于 2020-5-6 09:27:57 | 只看该作者
一直在用,感谢大神。

出0入0汤圆

26
发表于 2020-5-6 10:22:27 | 只看该作者
谢谢分享

出0入0汤圆

27
发表于 2020-5-6 10:35:07 | 只看该作者
感谢分享  
mark   EasyFlash 发布 V5.0.0 beta  键值数据库和时序数据库

出0入0汤圆

28
发表于 2020-5-6 10:38:25 | 只看该作者

感谢楼主分享,辛苦了!                                               

出0入8汤圆

29
发表于 2020-5-6 10:44:02 来自手机 | 只看该作者
刚开始用

出0入42汤圆

30
发表于 2020-5-6 10:47:58 | 只看该作者
楼主辛苦!感谢!

出0入42汤圆

31
发表于 2020-5-6 10:50:53 | 只看该作者
用过4.0感觉还是很方便的,感谢楼主分享

出0入0汤圆

32
发表于 2020-5-6 10:59:28 | 只看该作者
感谢楼主开源,一直在用4.0版本

出0入0汤圆

33
发表于 2020-5-6 11:09:33 | 只看该作者
Berkeley DB(BDB)是一个高效的嵌入式数据库和键-值数据库编程库,C语言、C++、Java、Perl、Python、Tcl以及其他很多语言都有其对应的API。Berkeley DB可以保存任意类型的键/值对(Key/Value Pair),而且可以为一个键保存多个数据。Berkeley DB支持让数千的并发线程同时操作数据库,支持最大256TB的数据,广泛用于各种操作系统,其中包括大多数类Unix操作系统、Windows操作系统以及实时操作系统。
berkeley db

出0入76汤圆

34
发表于 2020-5-6 11:12:46 | 只看该作者
感谢分享,后面有时间再试试新版

出0入0汤圆

35
发表于 2020-5-6 11:40:59 | 只看该作者
感谢楼主开源,

出0入85汤圆

36
发表于 2020-5-6 11:50:34 | 只看该作者
wx-ta 发表于 2020-5-6 00:53
好东西。理解楼主的开发路线,有个小建议,5.x和4.x没有必要都叫做eazy flash,因为api差异大,服务提供也 ...

同意。

出0入4汤圆

37
发表于 2020-5-6 12:02:02 | 只看该作者
支持楼主, 之前想过移植SQLITE3,后来发现硬件资源不够用,也没那么多精力,就放弃了。

出0入0汤圆

38
发表于 2020-5-6 12:02:03 | 只看该作者
虽然不知道怎么用,还是要谢谢分享。先收藏

出0入0汤圆

39
发表于 2020-5-6 12:21:29 | 只看该作者
支持楼主

出0入198汤圆

40
 楼主| 发表于 2020-5-6 15:21:57 | 只看该作者
wx-ta 发表于 2020-5-6 00:53
好东西。理解楼主的开发路线,有个小建议,5.x和4.x没有必要都叫做eazy flash,因为api差异大,服务提供也 ...

感谢你的建议哈,之前确实也考虑过这个问题,但苦于想不好名字

现在正式版还没发布,大家也可以帮忙想个新名字哈

出0入198汤圆

41
 楼主| 发表于 2020-5-6 15:22:57 | 只看该作者
xiaoergao 发表于 2020-5-6 00:47
这个要支持,这是要成为小资源的“SQLite”啊。

SQlite 是关系型数据库,体积会稍大,EasyFlash 比它要非常的轻量级

出0入198汤圆

42
 楼主| 发表于 2020-5-6 15:23:31 | 只看该作者
interstellar_tr 发表于 2020-5-6 07:16
楼主辛苦!
还没看代码
找个是裸机 还是 要有操作系统啊

裸机和操作系统都行的,没有限制

出0入198汤圆

43
 楼主| 发表于 2020-5-6 15:24:38 | 只看该作者
amxx 发表于 2020-5-6 08:13
这个厉害了,EASYFLASH早就听说大名了。啥时候也用到项目里。

哈哈~~不一定现在就用在项目上,可以先试试哈

出0入198汤圆

44
 楼主| 发表于 2020-5-6 15:25:54 | 只看该作者

也帮忙想个新名字哈

出0入198汤圆

45
 楼主| 发表于 2020-5-6 15:26:28 | 只看该作者
huchunlei 发表于 2020-5-6 12:02
支持楼主, 之前想过移植SQLITE3,后来发现硬件资源不够用,也没那么多精力,就放弃了。 ...

EasyFlash 资源占用不到 10K ROM ,绝对小巧,下次可以试试哈

出0入0汤圆

46
发表于 2020-5-6 15:39:01 | 只看该作者
感谢楼主分享

出0入149汤圆

47
发表于 2020-5-6 15:57:31 来自手机 | 只看该作者
可考虑EasyDB

出0入0汤圆

48
发表于 2020-5-6 16:14:23 | 只看该作者
4.0已经用在项目上了,小批量出货,参数保存读取非常好用,保存记录数据也非常好用,感谢楼主

出0入198汤圆

49
 楼主| 发表于 2020-5-6 17:05:56 | 只看该作者

+1 跟我开始的想法一样   

出0入0汤圆

50
发表于 2020-5-6 17:26:01 | 只看该作者
sunnydragon 发表于 2020-5-6 15:21
感谢你的建议哈,之前确实也考虑过这个问题,但苦于想不好名字

现在正式版还没发布,大家也可以帮忙想个 ...

嗯,分成两个产品之后,就不用纠结各种问题了,Goahead就维护了两个产品吧,后来那个叫做WebAPP;还有RTT和后来的RTT nano;保持命名规则统一的话可以叫做EazyDB,见名知意的话也一叫做FlashDB,哈哈

出0入4汤圆

51
发表于 2020-5-6 19:21:53 | 只看该作者
时序数据库这个太好了,我之前存这些数据,是自己写的,写待比较差劲,就不拿出来献丑,有空研究下lz这个,然后把我的工程移植过去

出0入0汤圆

52
发表于 2020-5-6 19:43:20 | 只看该作者
EasyFlashDB

出0入0汤圆

53
发表于 2020-5-6 19:45:25 | 只看该作者
其实在v4版本里面,我至今还是不清楚这数据怎么存进去,到现在还是蒙的

出0入0汤圆

54
发表于 2020-5-6 20:18:14 | 只看该作者
非常感谢,项目中很有用处

出0入0汤圆

55
发表于 2020-5-6 21:56:49 | 只看该作者
火前留名

出0入0汤圆

56
发表于 2020-5-6 22:01:08 | 只看该作者
感谢楼主分享

出0入0汤圆

57
发表于 2020-5-6 22:11:04 | 只看该作者

支持楼主

出0入0汤圆

58
发表于 2020-5-6 22:46:51 | 只看该作者
支持楼主,谢谢分享

出0入0汤圆

59
发表于 2020-5-6 23:37:27 | 只看该作者
支持楼主,请问KV值大小这个版本有限制吗?

出0入0汤圆

60
发表于 2020-5-7 02:21:04 来自手机 | 只看该作者
关注留存并支持!

出70入145汤圆

61
发表于 2020-5-7 02:32:13 来自手机 | 只看该作者
谢谢分享。

出0入0汤圆

62
发表于 2020-5-7 08:17:15 | 只看该作者
有裸机支持吗

出0入198汤圆

63
 楼主| 发表于 2020-5-7 09:14:07 | 只看该作者
syj0925 发表于 2020-5-6 23:37
支持楼主,请问KV值大小这个版本有限制吗?

限制不大了,用户可以设置通过 API 设置 sector size,后面也会出个 sample 专门讲下 big blob 的处理

出0入198汤圆

64
 楼主| 发表于 2020-5-7 09:14:25 | 只看该作者

支持的裸机

出0入198汤圆

65
 楼主| 发表于 2020-5-7 09:15:02 | 只看该作者
liuqian 发表于 2020-5-6 19:21
时序数据库这个太好了,我之前存这些数据,是自己写的,写待比较差劲,就不拿出来献丑,有空研究下lz这个, ...

好呀~~期待早日用起来,分享下经验哈

出0入198汤圆

66
 楼主| 发表于 2020-5-7 09:18:12 | 只看该作者
wx-ta 发表于 2020-5-6 17:26
嗯,分成两个产品之后,就不用纠结各种问题了,Goahead就维护了两个产品吧,后来那个叫做WebAPP;还有RTT ...

好的哈,等下个版本就换掉

可以先尝尝鲜,体验下新版本的功能哈

出0入0汤圆

67
发表于 2020-5-7 09:56:42 | 只看该作者
我们产品用户有需求不同用户使用的参数可以互相拷贝(不同用户的软件版本可能不同,所以参数个数也有细微的不同),现在功能实现了(很麻烦,不便维护)不是用的Cjson,不知道EasyFlash能不能做。

出0入169汤圆

68
发表于 2020-5-7 10:19:36 | 只看该作者
LZ辛苦,目前正有超轻量数据记录存储、查询和标记功能的需要,真是雪中送炭啊,抽出时间来看看

出0入0汤圆

69
发表于 2020-5-7 12:01:41 | 只看该作者
你好有个问题请教一下。项目中使用easylog 2.1.0 和 easy flash 4.0.0;上电启动打印以下信息:
D/EasyLogger V2.1.0 is initialize success.
<info> app: Setting vector table to bootloader: 0x00078000
<info> app: Setting vector table to main app: 0x00026000
D/ENV start address is 0x0006C000, size is 8192 bytes.

D/flash erase success 1
D/after kv init
D/lock_flash_init
D/lock_settings_load
D/lock_settings_save
D/in ef_set_env_blob
D/in set_env
D/Trigger a GC check after alloc ENV failed.
D/Warning: Alloc an ENV (size 128) failed when new ENV. Now will GC then retry.
D/The remain empty sector is 1, GC threshold is 1.
D/Trigger a GC check after alloc ENV failed.
请问是哪儿出错了
以下是配置
#define EF_USING_ENV
#define EF_ENV_VER_NUM            1
#define EF_ERASE_MIN_SIZE         (4096)
#define EF_WRITE_GRAN             (32)
#define EF_START_ADDR             (EH_NV_START_ADDR + EH_NV_AREA_SIZE)//0x6a000+0x2000
#define ENV_AREA_SIZE             (0x2000)
#define LOG_AREA_SIZE             -

谢谢

出0入198汤圆

70
 楼主| 发表于 2020-5-7 12:23:41 | 只看该作者
Xy201207 发表于 2020-5-7 09:56
我们产品用户有需求不同用户使用的参数可以互相拷贝(不同用户的软件版本可能不同,所以参数个数也有细微的 ...

可以支持的哦,可以用多个 KV 数据库,KV 数据库本身还支持增量升级

出0入198汤圆

71
 楼主| 发表于 2020-5-7 12:24:06 | 只看该作者
d__xin 发表于 2020-5-7 10:19
LZ辛苦,目前正有超轻量数据记录存储、查询和标记功能的需要,真是雪中送炭啊,抽出时间来看看 ...

那一定要试试哈,其他试用的反馈

出0入198汤圆

72
 楼主| 发表于 2020-5-7 12:24:51 | 只看该作者
oooios 发表于 2020-5-7 12:01
你好有个问题请教一下。项目中使用easylog 2.1.0 和 easy flash 4.0.0;上电启动打印以下信息:
D/EasyLogg ...

每次上电都是这样的吗?好像没有看到有错误,只是有 GC 的警告

出0入0汤圆

73
发表于 2020-5-7 12:52:54 来自手机 | 只看该作者
不是,每次全片擦除后会有。

出0入0汤圆

74
发表于 2020-5-7 17:38:28 | 只看该作者
针对5.0版本,楼主能提供一个STM32的工程文件最好。可以更快上手。

出40入18汤圆

75
发表于 2020-5-7 17:53:01 | 只看该作者
请问支持SPI 接口的NAND Flash吗?

出0入0汤圆

76
发表于 2020-5-7 21:41:35 来自手机 | 只看该作者
支持支持

出0入198汤圆

77
 楼主| 发表于 2020-5-8 08:42:27 | 只看该作者
oooios 发表于 2020-5-7 12:52
不是,每次全片擦除后会有。

那应该是正常

出0入198汤圆

78
 楼主| 发表于 2020-5-8 08:43:05 | 只看该作者
jia_xuan 发表于 2020-5-7 17:38
针对5.0版本,楼主能提供一个STM32的工程文件最好。可以更快上手。

请继续关注项目,后面会提供 demo 的

出0入0汤圆

79
发表于 2020-5-8 22:23:35 来自手机 | 只看该作者
这两个失败和警告会有啥影响?会导致数据存储出错吗?目前数据存储是正常的,但是有失败和警告存在心里还是有点慌!

出0入0汤圆

80
发表于 2020-5-9 09:50:38 | 只看该作者
....刚用上4.1小批量,这是不是得换5,0?  还有能否支持 铁电存储

出0入0汤圆

81
发表于 2020-5-13 10:02:39 | 只看该作者
我用的是STM32L431,
宏定义配置如下:
/* the flash write granularity, unit: bit
* only support 1(nor flash)/ 8(stm32f4)/ 32(stm32f1)/ 64(stm32l4) */
#define EF_WRITE_GRAN    8/* @note you must define it for a value */
写函数如下:
EfErrCode ef_port_write(uint32_t addr, const uint32_t *buf, size_t size) {
   
        EfErrCode result = EF_NO_ERR;
        EF_ASSERT(size % 4 == 0);
    /* You can add your code under here. */

        HAL_StatusTypeDef FlashStatus=HAL_OK;
        u32 i;
        __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_ALL_ERRORS);
   
        HAL_FLASH_Unlock();             //解锁       
        if(FlashStatus==HAL_OK)
        {
                for(i=0;i<size;i++)
                {
                        if(HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD,addr, *buf)!=HAL_OK)//写入数据
                        {
                                return 1;        //写入异常
                        }
                        addr +=8;
                        buf++;
                }  
        }
        HAL_FLASH_Lock();//上锁         
            return result;
}

问题:
ef_port_write()函数定义数据 uint32_t *buf,HAL_FLASH_Program()函数定义uint64_t *buf,这个地方数据如何转换,一直调试不通。

出0入0汤圆

82
发表于 2020-5-18 21:09:05 | 只看该作者
jia_xuan 发表于 2020-5-13 10:02
我用的是STM32L431,
宏定义配置如下:
/* the flash write granularity, unit: bit

HAL_FLASH_Unlock();

  __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_BSY | FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPERR);
       
       
        for (i = 0; i < size;buf++,i += 4,addr += 4) {
                        /* write data */
                        if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, addr, (uint64_t)*buf) == HAL_OK){
                                //printf("address: 0x%X size: %d data: 0x%X",addr,size,*buf);
                        }else{
                                printf("Flash program error: %d! \r\n",HAL_FLASH_GetError());
                        }
                        read_data = *(uint32_t *)addr;
                        /* check data */
                        if (read_data != *buf) {
                                        result = EF_WRITE_ERR;
                                        break;
                        }
    }
        /* Lock the Flash to disable the flash control register access */
        HAL_FLASH_Lock();

  return result;

出0入0汤圆

83
发表于 2020-5-18 21:09:22 | 只看该作者
jia_xuan 发表于 2020-5-13 10:02
我用的是STM32L431,
宏定义配置如下:
/* the flash write granularity, unit: bit


试试这个看行不行

出0入0汤圆

84
发表于 2020-5-19 14:13:06 | 只看该作者
lhaoyue 发表于 2020-5-18 21:09
HAL_FLASH_Unlock();

  __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_BSY | FLASH_FLAG_EOP | FLASH_FLAG_PGERR | ...

看到移植说明这样说的:


在移植时务必先要了解项目的Flash规格,这里需要了解是规格是 擦除粒度(擦除最小单元) 、写入粒度及 内部存储结构 ,各个厂家的Flash规格都有差异,同一厂家不同系列的规格也有差异。以下是一些常见 Flash 的规格

Flash 类型        写入粒度        擦除粒度        内部存储结构
STM32F1 片内 Flash        4bytes        1K/2K        均匀分布
STM32F2/F4 片内 Flash        1byte        16K/64K/128K        最大的有128K,最小的有16K
Nor Flash(SPI-Flash)        1bit        4K        均匀分布
注意 :

1、务必保证熟悉Flash规格后,再继续下章节;
2、V4.0 新模式暂时无法使用在 STM32L4 片内 Flash 上,L4 只能使用 V3.0 版本或者 V4.0 的 EF_ENV_USING_LEGACY_MODE 模式



我试了,也没成功,暂时先放一放,等有时间了再试。也谢谢你。

出0入0汤圆

85
发表于 2020-6-7 12:20:57 | 只看该作者
谢谢大神分享~

出16390入6832汤圆

86
发表于 2020-6-7 12:34:22 来自手机 | 只看该作者
sunnydragon 发表于 2020-5-8 08:43
请继续关注项目,后面会提供 demo 的


我一会帮你开一个分论坛“EasyFlash” 专栏(分论坛)吧。

帮你将之前的帖子汇总到该分论坛,跟方便交流。

开源到何种程度由你决定。版权和发行成品套件的利润全归你。

出0入0汤圆

87
发表于 2020-6-10 18:57:34 | 只看该作者
讲讲移植的方法撒

出0入198汤圆

88
 楼主| 发表于 2020-6-11 11:39:44 | 只看该作者
ysu_er 发表于 2020-6-10 18:57
讲讲移植的方法撒

看下这里的介绍 https://www.amobbs.com/forum.php?mod=viewthread&tid=5734466

出0入0汤圆

89
发表于 2020-6-13 10:01:50 | 只看该作者
这个一定用一下,sqlite对我的项目还是有点大。

出0入0汤圆

90
发表于 2020-6-13 21:03:20 | 只看该作者
看着挺不错,以后试着用在项目中!

出0入0汤圆

91
发表于 2020-6-21 22:05:26 | 只看该作者
好东西,支持楼主

出0入0汤圆

92
发表于 2020-6-23 18:03:15 | 只看该作者
有移植到linux系统中的吗?  linux文件模拟flash存储。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-7-29 08:14

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

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