搜索
bottom↓
回复: 78

【开源】FlashDB V1.0.0 正式版发布,还有在线的文档中心

  [复制链接]

出0入198汤圆

发表于 2020-10-8 21:42:55 | 显示全部楼层 |阅读模式
本帖最后由 sunnydragon 于 2020-10-8 21:42 编辑

FlashDB 是一款超轻量级的嵌入式数据库,专注于提供嵌入式产品的数据存储方案。与传统的基于文件系统的数据库不同,FlashDB 结合了 Flash 的特性,具有较强的性能及可靠性。并在保证极低的资源占用前提下,尽可能延长 Flash 使用寿命。

更多关于 FlashDB 的介绍,请查看: https://github.com/armink/FlashDB

FlashDB beta 测试版目前已发布数月,在这段时间里, 陆陆续续收到大家的很多意见反馈,有些甚至也已经用在项目上了 。
结合大家的反馈,相关的问题均已修正,并对文档、测试等方面做了挺多完善。
今天正式版终于可以与大家见面了,一起来看下正式版的大致更新内容:

新增在线文档中心
内容丰富,分为:入门、示例及开发三大章节,上手方便,详见: http://armink.gitee.io/flashdb/#/zh-cn/


新增自动化测试
新增基于 Travis CI 的自动化构建检查及自动化测试,保证每次代码提交不仅编译通过,功能也都经过 qemu 模拟器环境下的测试验证。qemu 模拟器下的自动化测试部分日志大致如下,完整日志请查看:https://travis-ci.com/github/armink/FlashDB


新增 KV 迭代器的 API
方便实现对 KVDB 中的全部 KV 进行遍历,感谢网友 eggcar 的贡献。

新增 contorl 控制函数
通过 fdb_kvdb_control 及 fdb_tsdb_control 的控制函数,用户可以实现一些对于数据库的控制管理功能。比如:设置 加锁和解锁 函数、设置 扇区大小 等
对于 TSDB 的 control 函数,用户还可以
  • 设置让数据库不启动处理滚动写入模式,这样如果数据库满,最旧的数据也不会删除,但无法插入新的数据
  • 获取上次的使用的时间戳,这样即便系统中没有 RTC ,也可以使用软件模拟时间戳功能,适用于一些对于 实时时间不敏感的场景。点击查看更多介绍

其他
  • 完善打印日志
  • 修正一些潜在 bug

下载
本坛下载:
Github (最新版本): https://github.com/armink/FlashDB



本帖子中包含更多资源

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

x

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

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2020-10-8 21:57:42 | 显示全部楼层
沙发推荐

出0入0汤圆

发表于 2020-10-8 22:36:54 | 显示全部楼层
good  一直想尝试没时间去弄  这次好好研究下

出0入0汤圆

发表于 2020-10-9 03:43:58 来自手机 | 显示全部楼层

一直关注楼主的开源作品,已经应用了好几个实际项目

出0入0汤圆

发表于 2020-10-9 07:36:42 来自手机 | 显示全部楼层
感谢楼主分享

出0入0汤圆

发表于 2020-10-9 08:03:09 | 显示全部楼层
持续关注中

出100入101汤圆

发表于 2020-10-9 08:19:49 | 显示全部楼层
请问在线文档怎么做的?

出0入42汤圆

发表于 2020-10-9 08:42:19 | 显示全部楼层
  感谢楼主无私分享

出0入0汤圆

发表于 2020-10-9 08:45:17 | 显示全部楼层
感谢楼主分享

出0入0汤圆

发表于 2020-10-9 08:49:33 | 显示全部楼层
感谢楼主无私分享

出0入0汤圆

发表于 2020-10-9 08:52:52 | 显示全部楼层
学习一下,很好的资料

出1000入0汤圆

发表于 2020-10-9 08:55:37 | 显示全部楼层
感谢分享

出0入0汤圆

发表于 2020-10-9 12:46:17 | 显示全部楼层
真的变成数据库了

出110入0汤圆

发表于 2020-10-9 13:23:27 | 显示全部楼层
新项目可以放弃之前的sfud+自建的数据格式了

出0入8汤圆

发表于 2020-10-9 13:59:52 | 显示全部楼层
fengyunyu 发表于 2020-10-9 08:19
请问在线文档怎么做的?

戳这里看看:https://docsify.js.org/#/

出0入8汤圆

发表于 2020-10-9 14:00:49 | 显示全部楼层
祝贺一下!

出0入198汤圆

 楼主| 发表于 2020-10-10 09:29:19 | 显示全部楼层

多谢兄弟捧场

出0入198汤圆

 楼主| 发表于 2020-10-10 09:30:31 | 显示全部楼层
Flyback 发表于 2020-10-9 13:23
新项目可以放弃之前的sfud+自建的数据格式了

快来试试吧,FlasDB 对于掉电安全和磨损均衡支持的很好,对于用户使用就省事了

出0入0汤圆

发表于 2020-10-10 10:26:40 | 显示全部楼层
有个疑问,flash满了会怎么处理,满了已经是TSDB中删除状态的记录会自动擦除吗?

出0入0汤圆

发表于 2020-10-10 10:27:50 | 显示全部楼层
sunnydragon 发表于 2020-10-10 09:30
快来试试吧,FlasDB 对于掉电安全和磨损均衡支持的很好,对于用户使用就省事了 ...

掉电安全的原理是什么呢?电都没有了,怎么写入数据,怎么保证安全?

难道是不停的写入,不开很大的缓存?或者是靠系统剩余的点来保存数据,但是这个你又怎么知道系统没电了?

出0入8汤圆

发表于 2020-10-10 10:36:01 | 显示全部楼层
xtaens 发表于 2020-10-10 10:27
掉电安全的原理是什么呢?电都没有了,怎么写入数据,怎么保证安全?

难道是不停的写入,不开很大的缓存 ...

基本原理:两种状态:完全写入新的数据,和完全不写入(或者说回滚到上一次的数据)。

出0入0汤圆

发表于 2020-10-11 16:35:02 | 显示全部楼层
支持,后续可以替换掉easyflash了

出0入0汤圆

发表于 2020-10-11 16:44:04 | 显示全部楼层
支持一下,楼主发的开源都还不错

出0入0汤圆

发表于 2020-10-11 21:54:52 来自手机 | 显示全部楼层
支持,很厉害的样子

出0入0汤圆

发表于 2020-10-12 11:32:48 | 显示全部楼层
security 发表于 2020-10-10 10:36
基本原理:两种状态:完全写入新的数据,和完全不写入(或者说回滚到上一次的数据)。 ...

完全不写入倒是好理解。

完全写入那就得有新数据就马上写入,这样会造成flash寿命缩短【其实也不是很重要了,保存数据为重】,如果在写入时没电了这样也会造成数据丢失的,这种情况怎么处理呢?

出0入8汤圆

发表于 2020-10-12 12:01:00 | 显示全部楼层
xtaens 发表于 2020-10-12 11:32
完全不写入倒是好理解。

完全写入那就得有新数据就马上写入,这样会造成flash寿命缩短【其实也不是很重 ...

写入时没电了,那就是没写成功,等同于完全不写入。
掉电安全的意思就是:保证不会损坏数据,数据都会是有效的,只不过数据可能不是最新的。

出0入17汤圆

发表于 2020-10-12 13:14:50 | 显示全部楼层
能不能用在51芯片上?速度和代码占用怎么样?

出20入0汤圆

发表于 2020-10-12 13:54:37 | 显示全部楼层
大佬又发布作品了,支持支持。

出0入0汤圆

发表于 2020-10-12 14:02:59 | 显示全部楼层
在esp8266上移植flash DB,在FAL层的fal_partition.c出现了编译问题,麻烦帮忙看下:
提示错误信息:
.flash.rodata len 0x0f1d0 load 0x4026d8c4

A fatal error occurred: Segment loaded at 0x4026d8c4 lands in same 64KB flash mapping as segment loaded at 0x4026d844. Can't generate binary. Suggest changing linker script or ELF to merge sections.

屏蔽了SECTION(x) 就可以编译成功,但是运行会异常,代码如下所示:

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2020-10-12 20:22:03 | 显示全部楼层
感谢分享,支持楼主

出0入198汤圆

 楼主| 发表于 2020-10-12 22:25:45 | 显示全部楼层
syj0925 发表于 2020-10-12 14:02
在esp8266上移植flash DB,在FAL层的fal_partition.c出现了编译问题,麻烦帮忙看下:
提示错误信息:
.flas ...

按照你的方式注释掉就好了哈,异常报错可能是别的原因把?有没有日志啥的

出0入0汤圆

发表于 2020-10-13 11:25:54 来自手机 | 显示全部楼层
注释掉section,编译过了,但是一启动就死机。感觉像是这些加载分区导致的

出0入198汤圆

 楼主| 发表于 2020-10-13 12:38:18 | 显示全部楼层
syj0925 发表于 2020-10-13 11:25
注释掉section,编译过了,但是一启动就死机。感觉像是这些加载分区导致的

默认是都是直接引用在 fal_cfg.h 中  FAL_PART_TABLE 宏定义的分区表,不会去执行加载分区表动作,除非你定义了 FAL_PART_HAS_TABLE_CFG 宏

出0入17汤圆

发表于 2020-10-13 13:02:40 | 显示全部楼层
sunnydragon 发表于 2020-10-10 09:30
快来试试吧,FlasDB 对于掉电安全和磨损均衡支持的很好,对于用户使用就省事了 ...

能不能用在51芯片上?速度和代码占用怎么样?

出0入0汤圆

发表于 2020-10-13 21:56:50 | 显示全部楼层
sunnydragon 发表于 2020-10-13 12:38
默认是都是直接引用在 fal_cfg.h 中  FAL_PART_TABLE 宏定义的分区表,不会去执行加载分区表动作,除非你 ...

谢谢解答。问题解决了,原因是:fal层reed write erase中的offset没有加上addr偏移导致,把bootloader给破坏了。
有个疑惑请教一下:
1.就是用SECTION这个宏定义flash表,的作用是什么?
2.我把SECTION注释掉了,对我应用有啥影响吗?

出0入8汤圆

发表于 2020-10-13 22:10:45 来自手机 | 显示全部楼层
newuseruser 发表于 2020-10-13 13:02
能不能用在51芯片上?速度和代码占用怎么样?

51 的架构,应该不太能适应,玩不了太高级的东西。

出0入198汤圆

 楼主| 发表于 2020-10-14 09:17:18 | 显示全部楼层
newuseruser 发表于 2020-10-13 13:02
能不能用在51芯片上?速度和代码占用怎么样?

多年不玩了,不太确定,感觉对芯片平台没啥限制

出0入198汤圆

 楼主| 发表于 2020-10-14 09:25:10 | 显示全部楼层
syj0925 发表于 2020-10-13 21:56
谢谢解答。问题解决了,原因是:fal层reed write erase中的offset没有加上addr偏移导致,把bootloader给 ...

是已经在 8266 上用起来了吗?方便做一个 8266 的 demo ,提交到 FlashDB 上吗?这样其他试用 8266 用户上手也会更加方便 https://github.com/armink/FlashDB/tree/master/demos

1.就是用SECTION这个宏定义flash表,的作用是什么


这个是当 不配置 FAL_PART_HAS_TABLE_CFG 时才有用处,此时可以在指定的 flash 地址上查找分区表,比如: 把分区表存放在 Bootloader 固件固件的指定位置里,而不是定义在 app 上

2.我把SECTION注释掉了,对我应用有啥影响吗?


没有影响,后面我也考虑把这个删除

出0入0汤圆

发表于 2020-10-14 11:07:18 | 显示全部楼层
security 发表于 2020-10-12 12:01
写入时没电了,那就是没写成功,等同于完全不写入。
掉电安全的意思就是:保证不会损坏数据,数据都会是 ...

谢谢

那新的数据什么时间写呢?怎么保证写了就一定能写成功呢?写了一半突然掉电数据就会被破坏,这些问题我觉得单从软件方面无法可靠的实现啊。【改天我研究下这部分代码看看怎么实现的,总觉得支持掉电保护功能不靠谱

出0入8汤圆

发表于 2020-10-14 11:17:20 | 显示全部楼层
xtaens 发表于 2020-10-14 11:07
谢谢

那新的数据什么时间写呢?怎么保证写了就一定能写成功呢?写了一半突然掉电数据就会被破坏,这些问 ...

你去看一下源码,看完了,可以再在这边分享。
不用担心,掉电安全的本质就是那样,这是成熟的理论。

出0入0汤圆

发表于 2020-10-14 11:24:52 | 显示全部楼层
security 发表于 2020-10-14 11:17
你去看一下源码,看完了,可以再在这边分享。
不用担心,掉电安全的本质就是那样,这是成熟的理论。 ...

好的,谢谢

出0入0汤圆

发表于 2020-10-14 13:37:26 来自手机 | 显示全部楼层
sunnydragon 发表于 2020-10-14 09:25
是已经在 8266 上用起来了吗?方便做一个 8266 的 demo ,提交到 FlashDB 上吗?这样其他试用 8266 用户 ...

可以的,我这周末有空我提交一个

出0入0汤圆

发表于 2020-10-20 22:30:22 | 显示全部楼层
在此请教一个问题:关于key/value 如何存储复杂结构体参数?
描述:
在智能家居网关中,网关需要存放cloud设置下发的联动应用,比如网关要能存储最大50个联动,网关用结构体来存放联动,结构如下:

目前的存储方式:
一个联动用一个key/value来存储,上电初始化,直接把key/vlaue读取到结构体数组中;
遇到的问题:
联动要加入新场景,就必须改动结构体,这样OTA升级已经出厂的设备,就会导致原有设备中的联动参数失效;
目前能想到的办法:
结构体中的数据先转换为json,然后在写入key/value,读取时,从json转换为结构体;但是这种方式,感觉效率很低,又繁琐,不知道大伙有什么更好的机制来解决这个问题?

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2020-10-21 16:58:55 | 显示全部楼层
syj0925 发表于 2020-10-20 22:30
在此请教一个问题:关于key/value 如何存储复杂结构体参数?
描述:
在智能家居网关中,网关需要存放cloud ...

你的问题我在github上提交估issue了,目前不支持value内容变更升级,朱总给了目前的解决方案。
解决方案

出0入198汤圆

 楼主| 发表于 2020-10-22 08:58:26 | 显示全部楼层
syj0925 发表于 2020-10-20 22:30
在此请教一个问题:关于key/value 如何存储复杂结构体参数?
描述:
在智能家居网关中,网关需要存放cloud ...

建议在结构体的第一个元素用于存储当前结构体 数据结构的版本号

从 flash 中读取回来的 kv 先判断版本号是否与当前使用的结构体版本一致,如果不一致,执行你的对应业务,比如旧版本迁移到新版本再存储,或者重新写入新的,等等

出0入0汤圆

发表于 2020-10-22 09:14:42 | 显示全部楼层
看着很厉害的样子

出0入0汤圆

发表于 2020-10-22 13:40:05 | 显示全部楼层
待会开始移植试试

出0入10汤圆

发表于 2020-10-22 20:36:47 | 显示全部楼层
哇 感谢!!咨询下 那个文档 可以下载离线的吗??? 公司没有外网了 想下载学习

出0入198汤圆

 楼主| 发表于 2020-10-23 12:46:16 | 显示全部楼层
jaywen 发表于 2020-10-22 20:36
哇 感谢!!咨询下 那个文档 可以下载离线的吗??? 公司没有外网了 想下载学习 ...

文档在 doc 目录下,是 Markdown 的,可以直接使用 Markdown 软件看

出0入0汤圆

发表于 2020-10-23 19:22:01 | 显示全部楼层
我这个彩笔从3点几,就开始保存版主的这个大宝贝代码,总想着一定要用起来。。后来用新的版本替换旧的。。。直到现在,本彩笔还是没有勇气打开看一下。。。我怕太菜看不懂

出0入198汤圆

 楼主| 发表于 2020-10-25 22:19:49 | 显示全部楼层
QVQ 发表于 2020-10-23 19:22
我这个彩笔从3点几,就开始保存版主的这个大宝贝代码,总想着一定要用起来。。后来用新的版本替换旧的。。 ...

学习都会有个过程,可以先简单看下示例程序,还有丰富的说明文档,直观上有个概念了,后面再学习会更加顺利一些哈

出0入0汤圆

发表于 2020-11-19 17:17:27 | 显示全部楼层
在线文档,很好。谢谢分享!

出0入0汤圆

发表于 2020-11-25 14:54:23 | 显示全部楼层
请教下楼主,tsdb在初始化后调用 tsdb_sample(&tsdb);运行是正常的,从日志看,数据读写是ok的。   
但是如果初始化后,注释掉tsdb_sample;在其他地方调用 tsdb_sample(&tsdb);    读写flash会出错。
试过kvdb这么操作没问题。
谢谢帮忙解答一下。
        fdb_tsdb_control(&tsdb, FDB_TSDB_CTRL_SET_LOCK, lock);
        fdb_tsdb_control(&tsdb, FDB_TSDB_CTRL_SET_UNLOCK, unlock);
        /* Time series database initialization
         *
         *       &tsdb: database object
         *       "log": database name
         * "fdb_tsdb1": The flash partition name base on FAL. Please make sure it's in FAL partition table.
         *              Please change to YOUR partition name.
         *    get_time: The get current timestamp function.
         *         128: maximum length of each log
         *        NULL: The user data if you need, now is empty.
         */
        result = fdb_tsdb_init(&tsdb, "record", "fdb_tsdb1", get_time, 32, NULL);
        /* read last saved time for simulated timestamp */
        fdb_tsdb_control(&tsdb, FDB_TSDB_CTRL_GET_LAST_TIME, &_TimeCount_250ms);

        if (result != FDB_NO_ERR) {
            return -1;
        }

        /* run TSDB sample */
//        tsdb_sample(&tsdb);

出0入198汤圆

 楼主| 发表于 2020-11-25 21:08:03 | 显示全部楼层
oooios 发表于 2020-11-25 14:54
请教下楼主,tsdb在初始化后调用 tsdb_sample(&tsdb);运行是正常的,从日志看,数据读写是ok的。   
但是如 ...

有在 demo 平台上,直接跑 demo 测试吗

出0入0汤圆

发表于 2020-11-25 21:20:48 | 显示全部楼层
sunnydragon 发表于 2020-11-25 21:08
有在 demo 平台上,直接跑 demo 测试吗

谢谢回复。马上试一下。

出0入0汤圆

发表于 2020-11-25 22:37:55 | 显示全部楼层
sunnydragon 发表于 2020-11-25 21:08
有在 demo 平台上,直接跑 demo 测试吗

是自己调用的有问题,打算按键后产生一条日志的,fdb_tsl_append放在中断里面了,放到主循环中是OK的。谢谢

出0入0汤圆

发表于 2020-12-14 11:15:49 | 显示全部楼层
请问有没有条数数量上限,例如达到5000条以后,性能有没有下降?能否给出几个代表性单片机上的性能数据?

出5入8汤圆

发表于 2020-12-17 18:30:30 | 显示全部楼层
您好  我直接下载的103的demo 不过串口打印后显示有错误,第一次用,麻烦帮忙看下是什么问题,谢谢

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2020-12-30 17:46:49 | 显示全部楼层
很厉害的样子,希望有Esp8266的demo。

出0入198汤圆

 楼主| 发表于 2020-12-31 08:59:58 | 显示全部楼层
diyeyuye 发表于 2020-12-17 18:30
您好  我直接下载的103的demo 不过串口打印后显示有错误,第一次用,麻烦帮忙看下是什么问题,谢谢
...

第一次使用是需要自动格式化的过程,所以有这个提示

出0入198汤圆

 楼主| 发表于 2020-12-31 09:00:37 | 显示全部楼层
Serial 发表于 2020-12-30 17:46
很厉害的样子,希望有Esp8266的demo。

https://github.com/armink/FlashD ... s/esp8266_spi_flash

已经有了哈

出0入0汤圆

发表于 2021-2-19 10:20:52 | 显示全部楼层
这个能用在EEPROM里面吗?比如24C256。

出0入0汤圆

发表于 2021-2-24 17:05:26 | 显示全部楼层
不错,很好用,正在学习!

出0入0汤圆

发表于 2021-3-5 09:35:31 | 显示全部楼层
这个H743上面可以用吗

出0入0汤圆

发表于 2021-3-10 20:03:25 | 显示全部楼层
本帖最后由 andy_huang 于 2021-3-10 20:06 编辑

花了两天时间,移植并调试成功应用在STM32F407+SPIFLASH,非常6,感谢楼主armink的开源

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2021-3-22 16:39:39 | 显示全部楼层
这个支持QSPI吗

出0入0汤圆

发表于 2021-3-23 16:23:12 | 显示全部楼层
收到,谢谢分享

出0入0汤圆

发表于 2021-3-27 16:29:25 | 显示全部楼层
不知道能不能动态建立库?分不同的时间段建立不同库,不需要的的时候直接删除库,查找库的的速度更快。

出0入0汤圆

发表于 2021-3-27 16:30:41 | 显示全部楼层
andy_huang 发表于 2021-3-10 20:03
花了两天时间,移植并调试成功应用在STM32F407+SPIFLASH,非常6,感谢楼主armink的开源
...

能不能发个源码?手边刚好有块407的板子,带了spiflash。

出0入198汤圆

 楼主| 发表于 2021-4-4 18:41:00 | 显示全部楼层
fcmer2016 发表于 2021-3-27 16:29
不知道能不能动态建立库?分不同的时间段建立不同库,不需要的的时候直接删除库,查找库的的速度更快。 ...

可以的,新版本是支持文件模式,这样就可以动态创建了

出0入0汤圆

发表于 2021-4-5 20:55:23 | 显示全部楼层
本帖最后由 fcmer2016 于 2021-4-5 20:56 编辑
sunnydragon 发表于 2021-4-4 18:41
可以的,新版本是支持文件模式,这样就可以动态创建了


我不太熟悉hal库,我手边刚好有个stm32f40ve的板子,能不能给发个demo。spi1接W25Q16。
另外手头在用的个芯片,厂家没有提供hal库,只能用标准库,怎么移植?

出0入0汤圆

发表于 2021-4-7 17:53:07 | 显示全部楼层
    Module                  ro code  ro data  rw data
    ------                  -------  -------  -------
    fdb.o                     276      232        1
    fdb_kvdb.o              4 584      356        1
    fdb_tsdb.o              1 160      236
    fdb_utils.o               418    1 024

还能更小吗?    如果是一共就几十K的MCU。  舍不得花6K来做flash存储处理

出0入0汤圆

发表于 2021-4-17 14:39:02 | 显示全部楼层
STM32G4系列移植有什么注意的地方吗?G4系列的flash操作只有双字读写和快速块写,现在采用的双字模式,FDB_WRITE_GRAN已改为64,flash读写函数单独测试是OK的,现在测试执行的log如图

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2021-5-4 22:55:23 来自手机 | 显示全部楼层
请教一下,使用tsl的时候,query by time 查询出一条记录,我在query by time cb中直接调用fdb tsl iter()想把当前查到的这条记录从write改到usr1改如何操作?从日志看它并不是修改的当前一条,而是从头开始修改,如果头上已经有修改成其他状态,就会失败。还麻烦指导下。谢谢

出0入0汤圆

发表于 2021-5-30 03:17:06 | 显示全部楼层
楼主,请教一个问题,在初始化的时候偶尔会出现“[FlashDB][tsl][log_data] Error: this TSL (0x000A03F8) size (1400) is out of bound.”和扇区损坏导致重新格式化的情况,这是在断电之后再上电,偶尔会出现,这种情况有没有方法避免?

出0入0汤圆

发表于 2021-5-30 10:52:22 来自手机 | 显示全部楼层
做成arduino下的库就好了

出0入0汤圆

发表于 2021-6-25 15:09:05 | 显示全部楼层
使用flashDB时如何获取剩余的可用存储空间大小?

出50入0汤圆

发表于 2021-6-29 10:58:24 | 显示全部楼层
请教版主
tsdb记录 如何按时间降序排序读取显示呢,谢谢

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-4-27 05:30

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

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