加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

内核添加对yaffs2文件系统的支持

发布时间:2020-12-15 19:58:56 所属栏目:百科 来源:网络整理
导读:CSDN GitHub 内核添加对yaffs2文件系统的支持 AderXCoding/system/tools/yaffs2 本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可,转载请注明出处,谢谢合作 1 yaffs介绍 YAFFS , Yet Another Flash File System ,是一种类似于 JF
CSDN GitHub
内核添加对yaffs2文件系统的支持 AderXCoding/system/tools/yaffs2



本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可,转载请注明出处,谢谢合作

1 yaffs介绍


YAFFS,Yet Another Flash File System,是一种类似于 JFFS/JFFS2 的专门为 Flash 设计的嵌入式文件系统. 与 JFFS 相比,它减少了一些功能,因此速度更快、占用内存更少. YAFFSJFFS 都提供了写均衡,垃圾收集等底层操作. 它们的不同之处在于 :

  1. JFFS 是一种日志文件系统,通过日志机制保证文件系统的稳定性. YAFFS 仅仅借鉴了日志系统的思想,不提供日志机能,所以稳定性不如 JAFFS,但是资源占用少.

  2. JFFS 中使用多级链表管理需要回收的脏块,并且使用系统生成伪随机变量决定要回收的块,通过这种方法能提供较好的写均衡,在 YAFFS 中是从头到尾对块搜索,所以在垃圾收集上 JFFS 的速度慢,但是能延长 NAND 的寿命.

  3. JFFS 支持文件压缩,适合存储容量较小的系统; YAFFS 不支持压缩,更适合存储容量大的系统.

  4. YAFFS 还带有 NAND 芯片驱动,并为嵌入式系统提供了直接访问文件系统的 API,用户可以不使用 Linux 中的 MTDVFS,直接对文件进行操作. NAND Flash 大多采用 MTD+YAFFS 的模式. MTD(Memory Technology Devices,内存技术设备)是对 Flash 操作的接口,提供了一系列的标准函数,将硬件驱动设计和系统程序设计分开.

YAFFS2YAFFS 的升级版,能更好的支持 NAND FLASH,我们采用最新的 YAFFS2文件系统. 我们首先下载 YAFFS文件系统.

2 内核添加对yaffs2文件系统的支持


内核中默认是不支持 yaffs 文件系统的,因此我们需要为内核打上 yaffs 的补丁

File  systems  --->
    Miscellaneous  filesystems  --->
        <*>  YAFFS2  file  system  support
        [*]  Autoselect  yaffs2  format

2.1 下载yaffs源码


第一步,我们需要 YAFFS2 的源码,如果大家有兴趣想了解 YAFFS2 文件系统的驱动原理的话可以直接去访问他们的官网

官网地址 : www.yaffs2.net

有源码下载地址,怕大家进去后难找,直接贴出YAFFS2的最新源码地址吧 http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=summary

直接点击,点最新版本,点击最右边的 SNAPSHOT 下载,这个是目前最新的YAFFS2的源码了.

或者直接访问,即可自动下载

http://aleph1.co.uk/gitweb?p=yaffs2.git;a=snapshot;h=HEAD;

下载后解压缩 yaffs 源代码

当然我们也可以使用git进行下载

  • 普通用户使用
git clone git://www.aleph1.co.uk/yaffs2
  • 内部开发人员

yaffs 的开发人员会有自己的开发账户,因此可以直接访问 git 进行下载

git clone ssh://www.aleph1.co.uk/home/aleph1/git/yaffs2

下载内核源代码

2.2 为内核打上patch


第二步,将下载下来的 YAFFS2 最新源码 YAFFS2.tar.gz 放入你 LINUX 的任意一个目录下,执行 tar zxvf YAFFS2.tar.gz 然后进入 YAFFS2 源码包

yafss源代码目录

由于最新的源码再执行脚本 patch-ker.sh 时 有四个参数,可以追加:c,l,m,s,

./patch-ker.sh  c/l m/s kernelpath
 if c/l is c,then copy. If l then link
 if m/s is m,then use multi version code. If s then use single version code

patch帮助信息

上面这段英文应该很好懂吧,简而言之,C 是复制文件,L是链接文件,M是多种,S是单个的,

那么在这里,我们只需执行

./patch-ker.sh c m your-linux-kernel-directory

patch内核

执行完这条命令之后,你将会发现在 kernel 源代码目录下发现有了 yaffs2 目录了,并且里面也出现了好多文件

  1. 修改内核 fs/Kconfig,增加了 yaffs2 下的 Kconfig
# Patched by YAFFS
source "fs/yaffs2/Kconfig"

内核fs/Kconfig增加的信息

  1. 修改内核 fs/Makefile,增加了 yaffs 目录的信息

同时将原来的 Makefile 备份为 Makefile.pre.yaffs

# Patched by YAFFS
obj-$(CONFIG_YAFFS_FS)          += yaffs2/

fs/Makefile增加的信息

  1. 在内核fs/目录下创建yaffs2子目录

    • 将yaffs2源码目录下的Makefile.kernel复制为内核fs/yaffs2/Makefile文件

    • 将yaffs2源码目录下的Kconfig文件复制到内核fs/yaffs2/目录下

    • 将yaffs2源码目录下的.c,.h文件(不包括子目录下的文件)复制到内核fs/yaffs2/目录下

yaffs2子目录的信息

2.3 配置内核


最后就是配置编译内核,让内核支持yaffs2文件系统

```cpp
File  systems  --->
    Miscellaneous  filesystems  --->
        <*>  YAFFS2  file  system  support
        [*]  Autoselect  yaffs2  format


配置语言选项

Native  Language  support  --->
    (iso8859-1)  Default  NLS  Option
    <*>  Codepage  437(United  States,Canada)
    <*>  Simplified  Chinese  charset(CP936,GB2312)
    <*>  NLS  ISO8859-1  (Latin  1;  Western  European  Language)
    <*>  NLS  UTF-8

配置内核

yaffs2 需要内核 MTD 的支持

若在 make menuconfig 中没有出现 yaffs2 文件系统的支持,请检查 MTD 的配置,yaffs2 依赖于 MTD . MTD中配置了 linux 内核对 NANDFlash 的支持.

Device Drivers --->
  Memory Technology Device (MTD) support  --->


# 进一步把其中的NAND Flase的支持打开

mtd-support

mtd-support

内核支持 NandFlashyaffs2 文件系统,将内核烧入 NandFlash后,再烧入 yaffs2 文件系统,可以使用制作好的文件系统,也可以自己制作

启动时(成功挂载文件系统)输出:

yaffs:  dev  is  32505858  name  is  "mtdblock2"
yaffs:  passed  flags  ""
yaffs:  Attempting  MTD  mount  on  31.2,"mtdblock2"
yaffs:  auto  selecting  yaffs2
yaffs_read_super:  isCheckpointed  0
VFS:  Mounted  root  (yaffs  filesystem)  on  device  31:2.
Freeing  init  memory:  196K


本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可,谢谢合作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读