搜索
bottom↓
回复: 105

一个EEPROM上的文件系统源码

  [复制链接]

出0入0汤圆

发表于 2009-11-9 11:17:30 | 显示全部楼层 |阅读模式
不知道大家都是怎么管理eeprom上数据的,在这里想跟大家交流下。
    之前的项目上,都是通过地址的方式来访问eeprom上的数据,程序中要永久保存的变量都一个一个地写到eeprom中去,需要的时侯就从eeprom中读出来。一开始也还觉得可以,但后来发现当数据量增多,发现很难分配好这些变量的地址。当某些数据长度发生变化时我不得不重新给这些变量分配地址,那个麻烦啊!还有,在实际的项目中我不知道大家都有没有给eeprom里面的数据加校验,我们的客户要求我们是必须加的,如果按照上面那种放法往里面存数据,那我不得不每一个变量都加个校验,那个空间浪费严重啊,一个变量按四字节存,加个校验最少1字节。eeprom有效利用率80%,心痛啊!
    后来在网上发现了这么一篇文章《嵌入式系统中 EEPROM 文件系统的设计与实现》。所以有了以下这个e2pfs。当然,这个不是文章作者提供的。我不认识作者,也没在网上找到他的实现源码。所以就自己重新写了个,我把它叫e2pfs。但跟文章中提到的系统有两点不同:
    1.没有使用文件名,而是使用了文件标识,系统中的每一个文件用一个字节的整数来标识,主要是为了提高eeprom的有效利用率,和文件的查找速度。
    2.可选的校验支持。校验算法可选,当前系统中仅支持奇偶校验。
    目前e2pfs支持以下文件操作:
    1.格式化,在第一次使用前必须格式化。
    2.文件的创建,删除。
    3.文件的打开、关闭。
    4.文件的读、写。
    5.文件的定位操作。
    e2pfs自带了个VC的测试工程。是在内存中模拟的eeprom所以每次创建的文件在,下次重新启动程序之后就没有了。我也试着使用磁盘文件来模拟eeprom但还没有完成。

    一直潜水,这回也冒个泡,呵呵。。。。希望各位不要拍砖。。。

点击此处下载 ourdev_501349.rar(文件大小:526K) (原文件名:e2romfs.rar)
点击此处下载 ourdev_501350.pdf(文件大小:313K) (原文件名:eeprom文件系统.pdf)

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

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

出0入0汤圆

发表于 2009-11-9 12:13:27 | 显示全部楼层
下来学习下,谢LZ了!

出0入0汤圆

发表于 2009-11-9 12:14:06 | 显示全部楼层
不知楼上代码中是否考虑了支持多任务环境下?

出0入0汤圆

发表于 2009-11-9 12:15:54 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-11-9 12:22:28 | 显示全部楼层
我是把用到的所有变量构造成一个大结构体,不用管他具体存在哪个地址

出0入0汤圆

发表于 2009-11-9 12:23:35 | 显示全部楼层
好东西!

出0入0汤圆

发表于 2009-11-9 12:33:10 | 显示全部楼层
顶一下  
下来后看看

出0入0汤圆

 楼主| 发表于 2009-11-9 15:34:14 | 显示全部楼层
目前还没有考虑多任务的支持。

出0入0汤圆

发表于 2009-11-9 15:41:56 | 显示全部楼层
玛克

出0入0汤圆

发表于 2009-11-9 15:49:15 | 显示全部楼层
mak

出0入0汤圆

发表于 2009-11-9 17:04:20 | 显示全部楼层
学习

出0入0汤圆

发表于 2009-11-9 17:50:44 | 显示全部楼层
学习一下!

出0入0汤圆

发表于 2009-11-9 17:54:40 | 显示全部楼层
下来看看

出0入0汤圆

发表于 2009-11-9 18:01:14 | 显示全部楼层
jihao

出0入0汤圆

发表于 2009-11-9 19:52:23 | 显示全部楼层
jh

出0入0汤圆

发表于 2009-11-9 20:24:34 | 显示全部楼层
第一次看到这么小的空间里适用的文件系统。不知道什么时候能用得上呢。

出0入0汤圆

发表于 2009-11-9 20:26:19 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-11-9 20:54:23 | 显示全部楼层
MARK,有意思

出0入0汤圆

发表于 2009-11-9 21:01:13 | 显示全部楼层
下来看看

出0入0汤圆

发表于 2009-11-10 15:38:54 | 显示全部楼层
不错,如果EEPROM容量小最好用一个数据结构管理,另外加上CRC校验则更贴近实际应用。

出0入0汤圆

发表于 2009-11-10 16:26:17 | 显示全部楼层
学习中

出0入0汤圆

发表于 2009-11-12 15:44:57 | 显示全部楼层
文档已损坏

出0入0汤圆

发表于 2009-11-16 22:17:10 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-11-16 22:23:34 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-11-19 10:23:47 | 显示全部楼层
对于多任务系统,可以在上层加控制!

出0入0汤圆

发表于 2009-11-23 21:08:38 | 显示全部楼层
xiexie  学习了

出0入0汤圆

发表于 2009-12-5 17:30:47 | 显示全部楼层
SPI flash  也可以使用此文件系统的吧?

      SPI flash  也可以使用此文件系统的吧?

            SPI flash  也可以使用此文件系统的吧?

                 SPI flash  也可以使用此文件系统的吧?

                      SPI flash  也可以使用此文件系统的吧?

出0入0汤圆

发表于 2009-12-5 17:40:07 | 显示全部楼层
思路太好了,有时候也不知如何管理EEPROM里的数据,顶

出0入0汤圆

发表于 2009-12-5 17:47:25 | 显示全部楼层
GOOD

出0入0汤圆

发表于 2010-8-31 09:36:44 | 显示全部楼层
deng!~

出0入0汤圆

发表于 2010-10-10 16:42:29 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-10-11 19:19:35 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-10-12 09:52:04 | 显示全部楼层
有意思

出0入0汤圆

发表于 2010-10-12 10:12:36 | 显示全部楼层
呵呵,我也曾经实现过一个基于LPC ARM7的IAP的MCU片内flash简易文件系统,主要应用于MCU片内的FLASH来保存和管理配置参数数据的,支持上层的文件打开,读取,写入等操作。对上层应用与C 文件操作API类似。
3年前的作品可惜现在找不到代码了。

出0入0汤圆

发表于 2010-10-12 10:23:47 | 显示全部楼层
很好,有参考价值。

出0入0汤圆

发表于 2011-3-22 12:30:29 | 显示全部楼层
以后应该会有参考价值的,先mark了。

出0入0汤圆

发表于 2011-3-22 12:38:25 | 显示全部楼层
这个先标记一下

出0入264汤圆

发表于 2011-3-22 13:51:22 | 显示全部楼层
谢谢

出0入0汤圆

发表于 2011-3-26 01:17:18 | 显示全部楼层
流爪

出0入0汤圆

发表于 2011-3-26 04:24:25 | 显示全部楼层
支持

出0入0汤圆

发表于 2011-3-26 09:01:52 | 显示全部楼层
mark 太好了,特别是对于大一点的EEPROM

出0入0汤圆

发表于 2011-3-26 09:10:59 | 显示全部楼层
好方法

出20入186汤圆

发表于 2011-4-1 09:59:34 | 显示全部楼层
学习了,

出0入0汤圆

发表于 2011-4-1 10:06:27 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-4-1 10:07:51 | 显示全部楼层
好东西 ,MARK

出0入0汤圆

发表于 2011-4-1 10:31:32 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-4-1 10:44:33 | 显示全部楼层
24C02好像不合适

出0入0汤圆

发表于 2011-4-1 10:55:44 | 显示全部楼层
很好,很不错的想法

出0入0汤圆

发表于 2011-4-24 22:07:04 | 显示全部楼层
很好

出0入0汤圆

发表于 2011-4-25 10:13:08 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-4-25 10:24:00 | 显示全部楼层
有意思,很有参考价值。

出0入0汤圆

发表于 2011-4-28 22:42:51 | 显示全部楼层
学习了,先mark

出0入0汤圆

发表于 2011-4-29 00:24:05 | 显示全部楼层
我是把用到的所有变量构造成一个大结构体,不用管他具体存在哪个地址

出0入0汤圆

发表于 2011-5-6 16:47:48 | 显示全部楼层
顶一个,学习一下!

出0入0汤圆

发表于 2011-5-6 18:17:57 | 显示全部楼层
mark!!

出0入0汤圆

发表于 2011-5-8 20:57:17 | 显示全部楼层
xiele

出0入0汤圆

发表于 2011-5-19 15:25:54 | 显示全部楼层
这个必须MARK

出0入0汤圆

发表于 2011-5-21 15:54:03 | 显示全部楼层
e2  fs

出0入0汤圆

发表于 2011-5-21 16:20:25 | 显示全部楼层
一个EEPROM上的文件系统

出0入0汤圆

发表于 2011-6-9 09:54:40 | 显示全部楼层
MARK

出0入13汤圆

发表于 2011-6-9 10:26:00 | 显示全部楼层
这个有意思,支持下

出0入0汤圆

发表于 2011-6-9 15:12:06 | 显示全部楼层
感谢 LZ提供这么好的资料和代码.

出0入0汤圆

发表于 2011-6-11 14:09:36 | 显示全部楼层
有意思,学习啊

出0入0汤圆

发表于 2011-6-11 14:46:33 | 显示全部楼层
文件有问题,不能完整的打开。请LZ检查一下。

出0入0汤圆

发表于 2011-6-11 14:59:03 | 显示全部楼层
谢谢,先留着,看看有否用上的机会

出0入0汤圆

发表于 2011-6-11 15:25:31 | 显示全部楼层
e2prom 文件系统 mark

出0入0汤圆

发表于 2011-6-11 15:35:06 | 显示全部楼层
下来看看

出0入0汤圆

发表于 2011-7-15 08:28:06 | 显示全部楼层
正需要这个,现在手头这个项目有大量数据要存,谢楼主了

出0入0汤圆

发表于 2011-7-15 08:33:49 | 显示全部楼层
很好,学习了

出0入131汤圆

发表于 2011-7-15 08:44:22 | 显示全部楼层
这个得顶 学习新的思路

出0入0汤圆

发表于 2011-7-23 14:43:13 | 显示全部楼层
正在学习EEPROM
买的是24C02
结果楼上说这个不适合……

出0入0汤圆

发表于 2011-11-5 00:49:06 | 显示全部楼层
mark!

出0入0汤圆

发表于 2011-11-5 21:06:27 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-11 10:39:57 | 显示全部楼层
这个文件系统挺好的,但是对于eeprom这样的一般最大只有32k,64k,128k的系统来说,利用率一直很低(在文件数量多一点的情况下,比如100,200的样子)

出0入0汤圆

发表于 2012-2-10 09:39:03 | 显示全部楼层
回复【楼主位】liren0  
-----------------------------------------------------------------------
写的很好,适合于eeprom这种容量不是很大的器件,但需要可靠性的存储器。

出0入0汤圆

发表于 2012-2-20 10:12:14 | 显示全部楼层
mark

出0入4汤圆

发表于 2012-2-20 10:36:26 | 显示全部楼层
记号

出0入30汤圆

发表于 2012-2-20 10:42:31 | 显示全部楼层
MARK.

出0入0汤圆

发表于 2012-2-20 10:42:31 | 显示全部楼层
mark eeprom fs

出0入0汤圆

发表于 2012-2-20 10:55:23 | 显示全部楼层
mark~~学习~~

出0入0汤圆

发表于 2012-2-20 12:12:37 | 显示全部楼层
mark!

出0入0汤圆

发表于 2012-2-20 13:08:07 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-20 13:28:50 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-20 13:41:45 | 显示全部楼层
学习。

出0入0汤圆

发表于 2012-2-20 15:35:49 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-22 22:08:05 | 显示全部楼层
回复【楼主位】liren0  
-----------------------------------------------------------------------
自己试了一下,不错,发现一处错误,E2PFS_DEBUG=0时,编译出错。把它用一个本办法解决了!
上传代码。工程师CVI的,包含运行文件
VC中,新建工程把文件加入就行!

点击此处下载 ourdev_721270H89ZCU.rar(文件大小:809K) (原文件名:e2romfs.rar)

出0入0汤圆

发表于 2012-6-20 09:50:12 | 显示全部楼层
晕,下载不了

出0入0汤圆

发表于 2012-6-20 10:29:06 | 显示全部楼层
论坛上怎么下载不了啊?
哪位好心人能传我一份,非常感谢
erichuang@superfly.com.cn

出0入0汤圆

发表于 2012-6-25 09:26:05 | 显示全部楼层
我有mark过么?

出0入0汤圆

发表于 2012-7-11 07:59:29 | 显示全部楼层
mark
学习了

出0入0汤圆

发表于 2012-10-9 21:18:02 | 显示全部楼层
支持最近正在做这方面的!

出0入0汤圆

发表于 2012-10-9 21:33:15 | 显示全部楼层
挺好的。好像以前就看过了吧。

出0入0汤圆

发表于 2012-10-9 23:41:12 | 显示全部楼层
MARK                     

出0入0汤圆

发表于 2012-10-10 09:14:22 | 显示全部楼层
jackielau 发表于 2012-2-22 22:08
回复【楼主位】liren0  
-----------------------------------------------------------------------
自己 ...

大哥 你这个能正常工作么?LZ的我试了是可以的 但是你这个可以creat 但是不能write啊

出0入0汤圆

发表于 2012-10-10 10:20:54 | 显示全部楼层
支持

出0入0汤圆

发表于 2013-4-6 17:51:06 | 显示全部楼层
正在做这方面的应用,学习一下

出0入0汤圆

发表于 2013-4-6 18:01:30 来自手机 | 显示全部楼层
这个思路好,记好了

出0入0汤圆

发表于 2013-12-4 11:53:43 | 显示全部楼层
这个东西实际用过吗?

出0入0汤圆

发表于 2013-12-4 12:51:34 | 显示全部楼层
下载下来研究研究

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-6-27 02:42

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

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