内核移植──2.6.14

1   修改 linux2.6.14 下面的 makefile 文件

    找到 ARCH CROSS_COMPILE 修改

    ARCH ?= arm

    CROSS_COMPILE ?= /usr/local/arm/3.4.1/bin/arm-linux- 

( 此处为你交叉编译的路径 )

 

设置 flash 分区

    arch/arm/machs3c2410/devs.c 文件中添加头文件

    #include <linux/mtd/partitions.h>

    #include <linux/mtd/nand.h>

    #include <asm/arch/nand.h> 

    然后建立分区表

    /* 一个 Nand Flash 总共 64MB, 按如下大小进行分区 分区大小自己看着办 */

    static struct mtd_partition partition_info[] ={

        { /* 1MB */

            name: "vivi",

            size: 0x00100000,

            offset: 0x0,

        },{ /* 3MB */

            name: "kernel",

            size: 0x00300000,

            offset: 0x00100000,

        }, { /* 40MB */

            name: "root",

            size: 0x02800000,

            offset: 0x00400000,

        }, { /* 20MB */

        name: "user",

        size: 0x00f00000,

        offset: 0x02d00000,

        }

    };

 

    /*加入Nand Flash分区*/

    struct s3c2410_nand_set nandset ={

    nr_partitions: 4, /*指明partition_info中定义的分区数目*/

    partitions: partition_info, /* partition table分区信息表*/

    };

 

    /*建立Nand Flash芯片支持*/

    struct s3c2410_platform_nand superlpplatform={

        tacls:0,

        twrph0:30,

        twrph1:0,

        sets: &nandset,

        nr_sets: 1,

    };

    tacls, twrph0, twrph1 的意思见 S3C2410 手册的 63,

    3 个值最后会被设置到 NFCONF , S3C2410 手册 66.

    sets: 支持的分区集         nr_set: 分区集的个数

   

    /* 加入 Nand Flash 芯片支持到 Nand Flash 驱动

    另外 还要修改此文件中的 s3c_device_nand 结构体变量 , 添加对 dev 成员的赋值 */

    struct platform_device s3c_device_nand = {

        .name = "s3c2410-nand",

            /* Device name */

        .id = -1,

            /* Device ID */

        .num_resources = ARRAY_SIZE(s3c_nand_resource),

        .resource = s3c_nand_resource, /* Nand Flash Controller Registers */

            /* Add the Nand Flash device */

        .dev = {

        .platform_data = &superlpplatform

        }

    };

    指定启动时初始化

    arch/arm/machs-3c2410/mach-smdk2410.c 文件

    找到 platform_device *smdk2410_devices[] __initdata 函数 在该函数体最后加上一条语句 :

    &s3c_device_nand,

 

    禁用禁止 Flash ECC 校验 有不同说法 )

    修改 drivers/mtd/nand/s3c2410.c

    找到 chip->eccmode = NAND_ECC_SOFT;

    改为 chip->eccmode = NAND_ECC_NONE;

   

    支持启动挂载 devfs

    修改 fs/Kconfig 文件  

    找到 menu "Pseudo filesystems" 添加

    config DEVFS_FS

        bool "/dev file system support (OBSOLETE)"

        default y

 

    config DEVFS_MOUNT

        bool "Automatically mount at boot"

        default y

        depends on DEVFS_FS

 

3   Yaffs2 文件系统支持

下载yaffs2.tar.gz 源码包,解压源码,并进入目录执行

#./patch-ker.sh c /linux-2.6.14.1/

注:假定内核源码在/linux-2.6.14.1/

 

4   编译配置内核 首先先 load 一个默认的内核 /linux-2.6.14/arch/arm/configs/smdk2410_defconfig, 在这个配置文件上改

    Loadable module support >

        [*] Enable loadable module support

            [*] Automatic kernel module loading

 

    System Type >

        [*] S3C2410 DMA support

 

    Boot options >

        Default kernel command string:

        noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0,115200

 

    Floating point emulation >

        [*] NWFPE math emulation

 

    Device Drivers >

        Memory Technology Devices (MTD) >

            [*] MTD partitioning support

                #支持MTD分区,这样我们在前面设置的分区才有意义

            [*] Command line partition table parsing

                #支持从命令行设置flash分区信息,灵活

            RAM/ROM/Flash chip drivers >

                <*> Detect flash chips by Common Flash Interface (CFI) probe

                <*> Detect nonCFI AMD/JEDECcompatible flash chips

                <*> Support for Intel/Sharp flash chips

                <*> Support for AMD/Fujitsu flash chips

                <*> Support for ROM chips in bus mapping

            NAND Flash Device Drivers >

                <*> NAND Device Support

                <*> NAND Flash support for S3C2410/S3C2440 SoC

       

Character devices >

            [*] Nonstandard serial port support

            [*] S3C2410 RTC Driver

 

    File systems >

        <> Second extended fs support # 去除对 ext2 的支持

        Pseudo filesystems >

            [*] /proc file system support

            [*] Virtual memory file system support (former shm fs)

            [*] /dev file system support (OBSOLETE)

            [*] Automatically mount at boot (NEW)

                # 这里会看到我们前先修改 fs/Kconfig 的成果 devfs 已经被支持上了

        Miscellaneous filesystems >

            <*> Compressed ROM file system support (cramfs) # 支持 cramfs

            <*> YAFFS2 file system support                   # 支持 yaffs2

        Network File Systems >

            <*> NFS file system support

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值