上一节S3C2440移植linux3.4.2内核之修改分区以及制作根文件系统我们构建了根文件系统,这节我们修改内核支持yaffs2文件系统

移植Linux3.4.2内核其他文章链接:

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

S3C2440移植linux3.4.2内核之修改分区以及制作根文件系统

S3C2440移植linux3.4.2内核之支持YAFFS文件系统

S3C2440移植linux3.4.2内核之内核裁剪

获取yaffs2源码并给内核打补丁

  首先获取yaffs2源码(参考git命令使用详解)

cd /work/nfs_root

git clone git@github.com:lifeyx/yaffs2.git
//若下载出现error:403,可以试试vi /etc/resolv.conf,将nameserver地址改为: 114.114.114.114

  将yaffs2源码来配置到内核里(使内核支持yaffs2)

vi /work/nfs_root/yaffs2/README-linux



  参考上图:

/*给内核打补丁*/
cd /work/nfs_root/yaffs2/
./patch-ker.sh c m /work/system/linux-3.4.2//c:将yffs2文件夹copy到linux-3.4.2/fs里, m:指定多版本 /*通过menuconfig,来使内核支持yaffs2*/
cd /work/system/linux-3.4.2/
make menuconfig

  搜索yaffs,找到位于:

-> File systems
-> Miscellaneous filesystems (MISC_FILESYSTEMS [=y])
<*> yaffs2 file system support //按Y键,使内核支持yaffs2

编译内核make uImage

  如下图所示,出现很多错误:



  如上图,问题都是出在fs/yaffs2/下,很多error都讲述:调用的成员名,在struct mtd_info结构体里没有定义.

修改yaffs2源码

  接下来我们便将fs/yaffs2文件夹添加到内核3.4的si工程中.

  然后进入yaffs2/yaffs_vfs.c,第1958行:

(linux下显示的是yaffs_vfs.c,vi可以打开yaffs_vfs.c。但是在si工程中没有找到yaffs_vfs.c,所以从ubuntu中拷贝一份yaffs_vfs.c添加到si中。)

   然而发现struct mtd_info *mtd的结构体mtd_info定义的是_sync成员,如下图所示:



  所以接下来只有遇到与struct mtd_info有关的error,都在成员前加上: _

  比如:

  将yaffs_vfs.c文件2514~2515行的mtd->sync 改为: mtd->_sync

  将yaffs_vfs.c文件2702行的mtd->erase改为: mtd->_erase

  将yaffs_vfs.c文件2703行的mtd->read改为: mtd->_read

  ... ...

  并将yaffs_vfs.c的第2967行的 root = d_alloc_root(inode);改为: root = d_make_root(inode);



  全部修改后,将yaffs_vfs.c上传到ubuntu,再次make uImage,

  报错如下

  内核没有定义 d_alloc_root

  我们在内核搜索下s_root看下别的文件系统怎么使用的。

  全部修改后,将yaffs_vfs.c上传到ubuntu,再次make uImage,报错如下

  估计是缺少下划线



  修改完后重新编译

  报错



  同样,没有在SI工程中找到yaffs_mtdif1.c,从ubuntu中拷贝下来,添加到si工程中

  上图报错的各个文件内的函数都要添加下划线

  编译报错



  把ubuntu上的yaffs_mtdif2.c文件拷贝到本地假如si工程,继续上述文件中的下划线

  最终编译成功

拷贝

cp arch/arm/boot/uIamge /work/nfs_root/uImage_yaffs

  由于上章-我们制作了文件系统,名为fs_mini_mdev_new,所以直接使用mkyaffs2image工具制作:

mkyaffs2image  fs_mini_mdev_new  fs_mini_mdev_new.yaffs2

  然后通过uboot来烧写yaffs2、烧写uImage发现没成功,我们用替代法查找问题

   UBOOT可能有问题:换上1.1.6的UBOOT,文件系统启动成功

发现1.1.6的UBOOT没问题,所以就是我们移植的新UBOOT有BUG:

drivers\mtd\nand\Nand_util.c
if (!need_skip && !(flags & WITH_DROP_FFS)) {

改为

if (!need_skip && !(flags & WITH_DROP_FFS) && !(flags & WITH_YAFFS_OOB)) {

  最后启动yaffs2成功:



下一节S3C2440移植linux3.4.2内核之内核裁剪我们将裁剪内核。

有任何问题,均可通过公告中的二维码联系我

S3C2440移植linux3.4.2内核之支持YAFFS文件系统的更多相关文章

  1. 移植Linux-3.4.2内核到S3C2440

    一.BootLoader引导内核过程     1.Bootloader的工作     1.1.将内核读入内存     2.2.保存内核启动参数到指定位置,内核启动时去这个位置解析参数     3.3. ...

  2. S3C2440 移植最新5.2linux内核

    基于 移植uboot后. 1. 移植linux内核 1.1 下载源码 打开 https://www.kernel.org/ 直接肝最新的 5.2.8 下载完后,在ubuntu里解压备用. 1.2 搭建 ...

  3. linux2.6.30.4内核移植(3)——yaffs文件系统移植

    内核源码:linux2.6.30.4 交叉编译工具:3.4.5 移植linux内核至:TQ2440 工作基础:http://www.cnblogs.com/nufangrensheng/p/36696 ...

  4. 在内核中增加对yaffs文件系统的支持

    自己最近在搞一些内核以及根文件系统的移植,就涉及到了需要在内核中增加对yaffs文件系统的支持.在网上找了一些文档后,自己将具体的操作过程做了一个总结,方便以后查询使用: 1.获取yaffs源码 YA ...

  5. 【转发】Linux下如何查看当前支持的文件系统及各分区的文件系统类型

    Linux下查看当前内核系统支持的文件系统: 一般都在 /lib/modules/kernl-version/kernel/fs/ 目录下包含了当前内核版本支持的文件系统: ls /lib/modul ...

  6. 内核增加支持yaffs2错误问题汇总

    Q1: fs/yaffs2/yaffs_mtdif2.c:xxx: error: 'struct xxx1' has no member named 'fun_xxx' A1:比对fun_xxx和st ...

  7. 移植linux3.7到nuc900系列开发板遇到的问题

    通过移植学习linux新版本内核,大概了解一下内核变化. 记录一下移植过程中遇到的问题或值得注意的地方. 1,添加一款arm9芯片的支持 首先修改\arch\arm\tools\mach-types文 ...

  8. linux如何编译安装新内核支持NTFS文件系统?(以redhat7.2x64为例)

    内核,是一个操作系统的核心.它负责管理系统的进程.内存.设备驱动程序.文件和网络系统,决定着系统的性能和稳定性.Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新.新的内核修订了旧内核 ...

  9. 对<< ubuntu 12.04编译安装linux-3.6.10内核笔记>>的修正

    前题: 在前几个月的时候,写了一篇笔记,说的是kernel compile的事情,当时经验不足,虽说编译过了,但有些地方写的有错误--因为当时的理解是有错误的.今天一一更正,记录如下: 前文笔记链接: ...

  10. Thinkpad E430+CentOS 6.4+ linux-3.10.12内核网卡驱动(无线+有线)配置

    配置并编译安装内核模块和内核后,解压附件 firmware.tar.bz2,拷贝其中的rtlwifi文件夹到/lib/firmware下,然后 执行装载内核模块命令: sudo modprobe rt ...

随机推荐

  1. [CF1844G] Tree Weights

    题目描述 You are given a tree with $ n $ nodes labelled $ 1,2,\dots,n $ . The $ i $ -th edge connects no ...

  2. [ABC261Ex] Game on Graph

    Problem Statement We have a directed graph with \(N\) vertices and \(M\) edges. Edge \(i\) is direct ...

  3. CSP_J

  4. 微软成为PostgreSQL主要贡献者

    微软成为PostgreSQL主要贡献者 微软对PostgreSQL贡献的很多新功能都来自于客户在使用微软Azure上的PostgreSQL管理实例数据库,所以这些新功能都来自于真实的客户需求 微软对P ...

  5. Github 星标 8K+ 这款国人开源的 Redis 可视化管理工具,真香...

    做程序员就少不了与一些工具打交道,比如:监控工具.管理工具等,有些工具是命令行界面,有些工具是可视化界面,反正都是可以能够满足日常使用的功能需求. 对于redis管理工具来说,也有不少可能的产品,比如 ...

  6. Numpy计算近邻表时间对比

    技术背景 所谓的近邻表求解,就是给定N个原子的体系,找出满足cutoff要求的每一对原子.在前面的几篇博客中,我们分别介绍过CUDA近邻表计算与JAX-MD关于格点法求解近邻表的实现.虽然我们从理论上 ...

  7. 下载安装Android Studio

    1,安装java的jdk 2,下载安装Dart 3,下载安装  Android Studio 建议这个安装在C盘,以防后期出现各种问题 在plugins中 (1)下载dart插件 (2)下载flutt ...

  8. GDAL数据集写入空间坐标参考

    目录 1. 概述 2. 栅格数据 3. 矢量数据 1. 概述 可以通过GDAL给地理数据写入空间参考信息,不过要注意的是GDAL给矢量数据和栅格数据写入空间坐标参考的接口不太一样. 2. 栅格数据 实 ...

  9. 华为云API Explorer重磅推出API编排,开发者0代码高效构建工作流

    本文分享自华为云社区<华为云API Explorer重磅推出API编排,开发者0代码高效构建工作流(体验用户招募中)>,作者:华为云PaaS服务小智. 打破传统开发模式,API编排应运而生 ...

  10. 技术实操丨SoundNet迁移学习之由声音分类到语音情感识别

    摘要:声音也是识别对象的一种重要数据源.其中根据声音来识别声音所处的环境也是语音识别的研究内容之一. 一.思路 1.SoundNet模型在视频数据中先预训练,视频任务可能是场景识别,可参考这篇文章So ...