zoukankan      html  css  js  c++  java
  • 移植kernel-3.10.79 (2) 支持 yaffs

    网站: http://www.yaffs.net/
    获取方法: 执行git clone git://www.aleph1.co.uk/yaffs2
    解压:tar zxf yaffs_source.tar.gz
    打补丁:

    #cd /work/tmp/yaffs2 // cd yaffs-dir
    #./patch-ker.sh c m ~/mini2440/linux-3.10.79 // ./patch-ker.sh c m linux-tree
    make menuconfig
        
        File Systems
        ---> Miscellaneous filesystems
            ---> [*]YAFFS2 file system support
        make uImage

    出错:fs/yaffs2/yaffs_vfs.c:3398: error: implicit declaration of function 'create_proc_entry'

    原因:编译fs/yaffs2/yaffs_vfs.c时出现错误,function 'create_proc_entry'没有申明。
    原来这个接口在linux-3.10被删除了,应该使用proc_create代替。

    修改:

    vim fs/yaffs2/yaffs_vfs.c 

    #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)) 修改为#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0))
        #define YAFFS_NEW_PROCFS
        #include <linux/seq_file.h>
        #endif

    问题2:
    end_request: I/O error, dev mtdblock4, sector 0
    移植内核时出现了这种错误,这种错误通常是由校验造成的.这种情况的解决办法为:

    禁止Flash ECC校验
    我们的内核都是通过UBOOT写到Nand Flash的, UBOOT通过的软件ECC算法产生ECC校验码, 这与内核校验的ECC码不一样, 内核中的ECC码是由S3C2410中Nand Flash控制器产生的. 所以, 我们在这里选择禁止内核ECC校验.
    修改drivers/mtd/nand/s3c2410.c 文件:
    vi drivers/mtd/nand/s3c2410.c
    找到s3c2410_nand_init_chip()函数,在该函数体最后加上一条语句:

    chip->ecc.mode = NAND_ECC_NONE;
  • 相关阅读:
    USACO Milk2 区间合并
    Codeforces 490B Queue【模拟】
    HDU 3974 Assign the task 简单搜索
    HDU 5119 Happy Matt Friends(2014北京区域赛现场赛H题 裸背包DP)
    Cin、Cout 加快效率方法
    POJ 1159 回文LCS滚动数组优化
    POJ 2479 不相交最大子段和
    POJ 1458 最长公共子序列 LCS
    在阿里最深刻的,还是职场之道给我的震撼
    精细化
  • 原文地址:https://www.cnblogs.com/hulig7/p/9924202.html
Copyright © 2011-2022 走看看