移植YAFFS文件系统:  (linux-3.18.4内核)
1.git clone git://www.aleph1.co.uk/yaffs2  //用此获得yaffs2源码包
1.1 解压源码包
2. 打补丁
cd yaffs-dir
./patch-ker.sh  c m linux-tree   比如 ./patch-ker.sh c m /home/fedora/workspace/linux-3.18.4
3. 配置内核支持YAFFS
-> File systems                                                     |
  |       -> Miscellaneous filesystems (MISC_FILESYSTEMS [=y])              |
  |         -> yaffs2 file system support (YAFFS_FS [=n])                   |
  |           -> 512 byte / page devices (YAFFS_YAFFS1 [=n])                |
  |             -> Use older-style on-NAND data format with pageStatus byte
选上,使用默认值

4. 编译、使用zImage
make ARCH=arm CROSS_COMPILE=arm-linux- zImage
编译出现错误:

fs/yaffs2/yaffs_vfs.c: In function 'yaffs_file_flush':
fs/yaffs2/yaffs_vfs.c:741: error: too few arguments to function 'yaffs_flush_file'
fs/yaffs2/yaffs_vfs.c: In function 'yaffs_sync_object':
fs/yaffs2/yaffs_vfs.c:771: error: too few arguments to function 'yaffs_flush_file'
fs/yaffs2/yaffs_vfs.c: At top level:
fs/yaffs2/yaffs_vfs.c:781: error: 'generic_file_aio_read' undeclared here (not in a function)
fs/yaffs2/yaffs_vfs.c:782: error: 'generic_file_aio_write' undeclared here (not in a function)
fs/yaffs2/yaffs_vfs.c:787: error: 'generic_file_splice_write' undeclared here (not in a function)
fs/yaffs2/yaffs_vfs.c: In function 'yaffs_flush_inodes':
fs/yaffs2/yaffs_vfs.c:2190: error: too few arguments to function 'yaffs_flush_file'
fs/yaffs2/yaffs_vfs.c: In function 'yaffs_flush_super':
fs/yaffs2/yaffs_vfs.c:2203: error: too few arguments to function 'yaffs_flush_whole_cache'

代码修改如下:

diff --git a/yaffs_vfs.c b/yaffs_vfs.c
index 76bc1db..f6e4ec2 100755
--- a/yaffs_vfs.c
+++ b/yaffs_vfs.c
@@ -738,7 +738,7 @@ static int yaffs_file_flush(struct file *file)

yaffs_gross_lock(dev);

- yaffs_flush_file(obj, 1, 0);
+ yaffs_flush_file(obj, 1, 0, 1);

yaffs_gross_unlock(dev);

@@ -768,7 +768,7 @@ static int yaffs_sync_object(struct file *file, struct dentry *dentry,
yaffs_trace(YAFFS_TRACE_OS | YAFFS_TRACE_SYNC,
"yaffs_sync_object");
yaffs_gross_lock(dev);
- yaffs_flush_file(obj, 1, datasync);
+ yaffs_flush_file(obj, 1, datasync, 1);
yaffs_gross_unlock(dev);
return 0;
}
@@ -778,13 +778,13 @@ static int yaffs_sync_object(struct file *file, struct dentry *dentry,
static const struct file_operations yaffs_file_operations = {
.read = do_sync_read,
.write = do_sync_write,
- .aio_read = generic_file_aio_read,
- .aio_write = generic_file_aio_write,
+ .read_iter = generic_file_read_iter,
+ .write_iter = generic_file_write_iter,
.mmap = generic_file_mmap,
.flush = yaffs_file_flush,
.fsync = yaffs_sync_object,
- .splice_read = generic_file_splice_read,
- .splice_write = generic_file_splice_write,
+ .splice_read = generic_file_splice_read,
+ .splice_write = iter_file_splice_write,
.llseek = generic_file_llseek,
};

@@ -2187,7 +2187,7 @@ static void yaffs_flush_inodes(struct super_block *sb)
yaffs_trace(YAFFS_TRACE_OS,
"flushing obj %d",
obj->obj_id);
- yaffs_flush_file(obj, 1, 0);
+ yaffs_flush_file(obj, 1, 0, 1);
}
}
}
@@ -2200,7 +2200,7 @@ static void yaffs_flush_super(struct super_block *sb, int do_checkpoint)

yaffs_flush_inodes(sb);
yaffs_update_dirty_dirs(dev);
- yaffs_flush_whole_cache(dev);
+ yaffs_flush_whole_cache(dev, 1);
if (do_checkpoint)
yaffs_checkpoint_save(dev);
}

重新编译:

CHK include/config/kernel.release
CHK include/generated/uapi/linux/version.h
CHK include/generated/utsrelease.h
make[1]: “include/generated/mach-types.h”是最新的。
CALL scripts/checksyscalls.sh
CHK include/generated/compile.h
CC fs/yaffs2/yaffs_vfs.o
CC fs/yaffs2/yaffs_guts.o
CC fs/yaffs2/yaffs_checkptrw.o
CC fs/yaffs2/yaffs_packedtags1.o
CC fs/yaffs2/yaffs_packedtags2.o
CC fs/yaffs2/yaffs_nand.o
CC fs/yaffs2/yaffs_tagscompat.o
CC fs/yaffs2/yaffs_tagsmarshall.o
CC fs/yaffs2/yaffs_mtdif.o
CC fs/yaffs2/yaffs_nameval.o
CC fs/yaffs2/yaffs_attribs.o
CC fs/yaffs2/yaffs_allocator.o
CC fs/yaffs2/yaffs_yaffs1.o
CC fs/yaffs2/yaffs_yaffs2.o
CC fs/yaffs2/yaffs_bitmap.o
CC fs/yaffs2/yaffs_summary.o
CC fs/yaffs2/yaffs_verify.o
LD fs/yaffs2/yaffs.o
LD fs/yaffs2/built-in.o
LD fs/built-in.o
LINK vmlinux
LD vmlinux.o
MODPOST vmlinux.o
GEN .version
CHK include/generated/compile.h
UPD include/generated/compile.h
CC init/version.o
LD init/built-in.o
KSYM .tmp_kallsyms1.o
KSYM .tmp_kallsyms2.o
LD vmlinux
SORTEX vmlinux
SYSMAP System.map
OBJCOPY arch/arm/boot/Image
Kernel: arch/arm/boot/Image is ready
GZIP arch/arm/boot/compressed/piggy.gzip
AS arch/arm/boot/compressed/piggy.gzip.o
LD arch/arm/boot/compressed/vmlinux
OBJCOPY arch/arm/boot/zImage
Kernel: arch/arm/boot/zImage is ready

OK!

转载于:https://www.cnblogs.com/lion382/p/4261446.html

移植YAFFS2文件系统到linux3.18.4内核(原)相关推荐

  1. win驱动移植linux,LCD移植 - 基于Tiny210v2的Linux-3.9.6内核驱动移植_Linux编程_Linux公社-Linux系统门户网站...

    友善的tiny210v2我买的是7寸电容屏,具体型号得再查查,说是S70. 用原本的LINUX内的SMDKV210的LCD驱动能实现LINUX LOGO的输出,但是有一定的偏差. 主要参考: arm9 ...

  2. YAFFS2文件系统在嵌入式LINUX系统中的应用

    YAFFS2文件系统在嵌入式LINUX系统中的应用 2011-03-31 19:59 181人阅读 评论(0) 收藏 举报 1.文件系统简述 随着32位CPU价格不断下跌,片上存储设备的容量相比越来越 ...

  3. 第二部分 s3c2440 移植linux内核 添加网卡支持 yaffs2文件系统支持

    三.内核的移植 说明:针对的是百问网的jz2440 gcc:4.9.1 1.移植内核 首先,下载源码包:https://www.kernel.org/ 现在时间为2014年12月20日其主界面截图为: ...

  4. s5pv210 linux内核移植,简单根文件系统制作 - S5PV210 Linux3.8.3内核移植_Linux编程_Linux公社-Linux系统门户网站...

    1.这里为什么选nfs文件系统呢? 在产品开发阶段,因为nfs根文件系统并不需要编译进内核,方便调试. 2.制作根文件系统需要用到BusyBox 解压进入busybox目录: root@linuxid ...

  5. linux3.0 nand分区,OK6410(256MRAM2Gnandflash) Linux3.0.1内核移植

    这里我主要移植的是增加yaffs2文件系统支持,修改和移植nand驱动. 1.不知道为什么我这yaffs2的补丁打上了就没发现过编译错误,相当顺利啊 呵呵. 附上补丁地址--------------- ...

  6. 【移植驱动到Linux3.4.2内核之一】移植DM9000C网卡驱动

    学习交流加 个人qq: 1126137994 个人微信: liu1126137994 学习交流资源分享qq群: 962535112 之前已经把uboot,内核,文件系统,都移植好了,今天开始我们把第二 ...

  7. 2440 linux文件写,添加yaffs2文件系统 - Linux2.6.39在S3C2440上的移植_Linux编程_Linux公社-Linux系统门户网站...

    1.主机环境:VMare下Ubuntu10.04 ,1G内存. 2.编译编译环境:arm-linux-gcc 3.开发板:Micro2440,2M nor flash,256M nand flash. ...

  8. S3C2440移植linux3.4.2内核之内核框架介绍及简单修改

    文章目录 uboot启动内核分析 简单配置内核 编译内核 设置机器ID 修改晶振 移植Linux3.4.2内核其他文章链接: S3C2440移植linux3.4.2内核之内核框架介绍及简单修改 S3C ...

  9. IMX6移植Linux3.0.35内核时需要添加的矩阵按键的平台设备信息

    学习交流加 个人qq: 1126137994 个人微信: liu1126137994 学习交流资源分享qq群: 962535112 本文记录在IMX6开发板上移植鼎芯Linux3.0.35内核时,需要 ...

最新文章

  1. cgi,fastcgi,php-cgi,php-fpm之间的关系
  2. C++STL常用查找算法
  3. 基础练习 数列排序 c语言
  4. 数据采集录入填报时如何只更新当前修改行
  5. mysql主从复制时间配置_MySQL主从复制配置
  6. Flink 源码 | 自定义 Format 消费 Maxwell CDC 数据
  7. python中format函数用法简书_增强的格式化字符串format函数
  8. vivo S10系列官方渲染图公布 外壳太好看了!
  9. React与前端:React家族介绍
  10. http协议 文件下载原理详解
  11. PotPlayer+SVP4视频补帧简易教程
  12. java火柴人吃豆豆,4399游戏火柴人吃豆豆全图文通关攻略分享
  13. 【discuzx2】【家园广播】follow_feed.htm
  14. 从动物纪录片中所学所得
  15. Tomcat与JDK版本对应关系,Tomcat各版本特性
  16. Win11游戏模式怎么开启?Win11开启游戏模式的方法
  17. VBA 字典数组运用查询系统
  18. 虚拟机服务器负荷,虚拟机中服务的负荷评估和负载均衡方法
  19. nc文件分解为tiff文件
  20. DB2: SQL0902C A system error occurred. Subsequent SQL statements cannot be processed. IBM software

热门文章

  1. Struts2学习总结三
  2. 【译】Everything You Need to Know About Decentralized AI
  3. Guide To Using The Gnosis Multisig Wallet
  4. 以太坊虚拟机EVM的缺陷与不足
  5. Hyperledger Fabric 交易流程
  6. 详细设计 存储分配_万字长文:云架构设计原则(一)
  7. python免费入门_python入门 2018最新最全学习资料免费获取啦
  8. matlab优化工具箱
  9. ICCV 2017 PTAV:《Parallel Tracking and Verifying:A Framework for Real-Time and High Accuracy ...》论文笔记
  10. 洛谷P1873 砍树