标题: vxworks文件系统 EEPROM和RAM文件管理移植 NASA开源的 [打印本页]

作者: 51黑小牛    时间: 2016-4-10 20:21
标题: vxworks文件系统 EEPROM和RAM文件管理移植 NASA开源的
This is governed by the NASA Open Source Agreement and may be used,distributed and modified only pursuant to the terms of that agreement.
竟然还是NASA开源的 瞬间逼格提升!!!
今天下午完成EEPROM 类文件系统的移植,今晚来总结一下移植过程和问题。

最近在考虑能否做一个基于小容量存储的管理系统,主要用来管理一些随机的存储和小容量的存储。比如EEPROM和部分RAM。但是苦于时间实在不太多,主要是不爱动脑子。所以还是拿来主义吧。于是伸手党先去找了一下RT的源码,可惜没找到关于这方面的,索性翻了一下git果然让我找到了一个。果断down下来。

这个文件系统是专门基于RAM和EEPROM的。看了一下简介似乎是vxworks使用的。


然后里面是一个是libraries一个是drivers还有一个是tools.其他不用管。
看了一下里面确定是GCC编译的。所以需要移植过来。让他单独运行
  
取出库里面的API和驱动文件夹里面的通用驱动interface 之后加入到工程中,app后来加上用于测试
编译,编译出错,主要分为这么几类
1、宏
2、编译器参数
3、头文件
4、平台字段重定义
依次处理完成,其中有个名叫fcnl.h的头文件,只要保留内部所有的和文件相关的宏即可其他无用。

+修改的struct void *全部改为uint8*
+time(NULL)重新修改为        Get_current_time()已完成编译
/* This macro defines the time interface function.  Defaults to time(NULL)  */
/*reused it to  Get_current_time() that reched complited*/
#define  Get_current_time()          now_systick ()

在编译 成功后对照API书写一下应用程序

测试中发现几个小问题,然后重新修改一下

+修改了read中求长度字节 原因是如果是MIN将无法有效读取文件。
EEFS_LibRead(myfile, Eepromdata, len);
BytesToRead = EEFS_MAX((EEFS_FileDescriptorTable[FileDescriptor].FileSize - EEFS_FileDescriptorTable[FileDescriptor].ByteOffset), Length);
                           (MIN)
+修改了myfile=EEFS_LibOpen(&myeefsInodeTable, "eeprom", O_CREAT, 1);
中的mode属性,
原来为:EEFS_FileDescriptorTable[FileDescriptor].Mode = (EEFS_FCREAT | EEFS_FWRITE );
增加读使能
EEFS_FileDescriptorTable[FileDescriptor].Mode = (EEFS_FCREAT | EEFS_FWRITE | EEFS_FREAD);

最后使用内部RAM 1KB测试OK


最后的最后那就是底层接口啦
底层的接口只有三个程序超级简单哪!



只要把他们映射到EPROM的驱动上就好了。目前直接用了RAM模拟之。

就可以在EPROM上玩文件鸟 ,but 文件大小还是可以定义的呀

麻雀是小了点但是五脏俱全,文件的句柄和磁盘管理,文件的搜索、属性、信息的记录等等都实现了并且
All api functions are designed to be as similar to a standard unix file system api as possible。




再怎么然并卵也得向前走啊
比特
wang




作者: lanxichang    时间: 2021-3-20 11:09
在哪呢? 能不能分享一下呢?




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1