在dsp DM642上移植YAFFS2之一:概况与方案
来源:互联网 发布:gif动画制作软件 编辑:程序博客网 时间:2024/06/06 08:54
Yaffs2 之一:Yaffs2的选择与考虑
由于项目里面用到大容量的NAND-flash,所以考虑采用 yaffs2的文件系统来做,因为用来管理NAND的一般用yaffs 与 Jffs ,但由于jffs需要更多内存空间,及代码量大,所以一般会选择Yaffs来做。 FAT也可用,但需要做大量修改工作,而且Yaffs在linux 上用得成熟,大其系统上也很成功。
因为Yaffs是直接挂在linux 系统上的,而我的是处理器是DSP 或 nios, 所以剥去与linux 相关的部分。如何下面先查找相关的信息,
1, 下载源码:可以下面网站下到Yaffs 与 Yaffs2 。
http://www.aleph1.co.uk/cgi-bin/viewcvs.cgi/ #dirlist
2, 解压后有如下内容:
一堆C源码,四个文件夹: direct, mtdemul, patches , utils
其中各文件夹与文件的功能与意义参见http://www.aleph1.co.uk/cgi-bin/viewcvs.cgi/yaffs2/
3,读guide可得到:
Yaffs原来是为linux设计的,但是它是按模块化方式设计的,file-system-specific 也与主filesystem分开了,这样通过os moudle可以很方便地植入到其它操作系统,也可以不用RTOS,这个性化模块就是YAFFS Direct Interface (YDI),
Yaffs支持32位的处理器,对16bit以下的需要做较多修改.
Yaffs 有三部接口供程序员做移植与应用:1- 应用程序接口,2- RTOS集成接口, .
1- 应用程序接口:
是定义在yaffsfs.h文件里面,是带有yaffs_前缀的c标准库函数,如下(部分)
int yaffs_open(,,);
int yaffs_close(int fd);
int yaffs_flush(int fd);
int yaffs_access(,,);
int yaffs_read(,,);
int yaffs_write(,,);
int yaffs_lseek(,,);
int yaffs_rename(,,,)
int yaffs_mount(path)
int yaffs_unmount(path);
int yaffs_freespace(,,);
int yaffs_totalspace(,,);
int yaffs_startup();
应用例子如下:
int maint(…)
{ //initialsation
f= yaffs_open(…);
yaffs_read(f,…);
yaffs_close(f);
}
2- RTOS集成接口:
为了能集成到操作系统里面,必顺针对RTOS的特点来修改配置文件yaffscfg.c,在yaffscfg.c文件里面定义了系统的接口,如void yaffsfs_SetErro(int err);
void yaffsfs_Lock(void);
void yaffsfs_Unlock(void);
void yaffsfs_LocalInitialsation(void);
如果yaffs 用在多线程环境,这个void yaffsfs_LocalInitialsation(void)将初始化适应RTOS的信号与旗语,并用yaffs_Lock,yaffs_Unlock来lock 和 release 旗语.
另外,yaffs 也需要申请内存与释放内存的函数,默认为 malloc()和 free();其它函数在ydirectenv.h 里面。 在用yaffs文件系统时候,首先要调用 yaffs_StartUp(),和yasffs_mount(),如下例子:
yaffs_StarUp();
yaffs_mount(“/boot”);
3 – NAND 配置与访问接口
这一部分包括配置与访问函数,在yasffscfg.c文件里面的yaffs_StartUp();
yaffs_DeviceConfiguration 是一个入口它分成两部分:mount 点名字和yaffs_Device.
yaffs_Device是一个逻辑实体,对应下面几个情况:整个flash芯片,一部flash芯片,或其它非flash设备。也就说多个yaffs_Device可以放在一块芯片里面。
总体查到这里,下面工作就是针对 YAFFS Direct Interface的读解与移植.
- 在dsp DM642上移植YAFFS2之一:概况与方案
- 在dsp DM642上移植YAFFS2之二-----成功
- 【DM642】H.264源代码在DM642上的移植
- 在S3C2410上移植yaffs2文件系统
- 在S3C2410上移植yaffs2文件系统
- 在S3C2410上移植yaffs2文件系统
- mini2440上 移植yaffs2
- yaffs2在mini2440移植
- 在Linux-2.6.38.8上移植yaffs2文件系统
- yaffs2 文件系统在Linux上的移植问题
- 嵌入式实时操作系统μC/OS-Ⅱ 在DSP芯片上的移植与测试
- Linux-2.6.32.2内核在mini2440上的移植(二)---yaffs2文件系统移植
- .Linux-2.6.32.2内核在mini2440上的移植(二)---yaffs2文件系统移植
- Linux-2.6.32.2内核在mini2440上的移植(二)---yaffs2文件系统移植
- Linux-2.6.32.2内核在mini2440上的移植(二)---yaffs2文件系统移植
- 【引用】Linux-2.6.32.2内核在mini2440上的移植(二)---yaffs2文件系统移植
- Linux-2.6.32.2内核在mini2440上的移植(二)---yaffs2文件系统移植
- linux-2.6.32在mini2440开发板上移植(19)之yaffs2文件系统移植
- Oracle: 删除当前用户的所有对象(表、视图、存储过程、包、javasource,job)
- .net 做的IP 访问限制
- 对称块加密算法加密模式详解
- c#接收邮件类
- Struts表单验证开发指南
- 在dsp DM642上移植YAFFS2之一:概况与方案
- silverlight + MVC + WCF + socket 项目说明
- Oracle分析函数over及开窗函数
- GPS_公交_通用解决方案
- PowerDesigner导入SQL生成数据模型
- C#删除数组中的重复项
- Servlet 中的 Listener 的应用
- 将表B中的某几列数据更新到表A中
- GPS_物流_中网信安_解决方案