linux-2.6.33.7内核移植

1、为linux-2.6.33.7内核打上支持yaffs文件系统的补丁。

提前下载好linux-2.6.33.7.tar.bz2和 yaffs2.tar.gz

#tar -xjvf linux-2.6.33.7.tar.bz2

#tar -xzvf yaffs2.tar.gz

#cd yaffs2

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

 

Updating ../linux-2.6.33.7//fs/Kconfig

Updating ../linux-2.6.33.7//fs/Makefile


出现上述两行字样,则表示已经打好补丁。

 

2、修改顶层Makefile,使内核支持arm平台。

为了让内核编译成arm平台可用的内核,需在顶层的Makefile上做出相应的修改:

#vim Makefile

ARCH ?= $(SUBARCH) CROSS_COMPILE ?=

修改为:

ARCH ?= arm CROSS_COMPILE ?= /usr/local/arm/4.3.2/bin/arm-linux-


3、修改机器码,要和FL2440的机器码相同。

飞凌开发板的bootloader默认的机器码是193,所以我们在使用smdk2440机器的时候,需要修改机器码。修改arch/arm/tools/ mach-types。

#vim arch/arm/tools/ mach-types

将该行注释:

s3c2410                 ARCH_S3C2410            S3C2410                 182

然后将以下行:

s3c2440                 ARCH_S3C2440            S3C2440                 362

修改为:

s3c2440                 ARCH_S3C2440            S3C2440                 193


4、增加devfs设备文件系统的支持。

#vim 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


5、修改2440晶振的频率。

如果用默认的晶振频率,串口将会输出乱码,而无法看到启动信息。

#vim arch/arm/mach-s3c2440/mach-smdk2440.c

将如下行注释:

s3c24xx_init_clocks(16934400);

并在原位置增加一行为:

s3c24xx_init_clocks(12000000);


 

6、修改NandFlash的分区信息和硬件信息。

  一、内核中关于nandflash的分区必须跟bootloader分区一样;

二、文件系统fs_yaffs必须在第4个分区,即索引号为3。其他一些分区信息可以按需要选择,如下:

# vim arch/arm/plat-s3c24xx/common-smdk.c

找到static struct mtd_partition smdk_default_nand_part[]的结构体,将内容修改为:

        [0] = {

                .name        = "boot",

                .size       = 0x00020000,

                .offset = 0

        },

        [1] = {

                .name        = "bootParam",

                .size          = 0x00060000,

                .offset = 0x00020000,

        },

        [2] = {

                .name      = "Kernel",

                .size        = 0x00300000,

                .offset = 0x00500000,

        },

        [3] = {

                .name        = "fs_yaffs",

                .size        = 0x03c00000,

                .offset = 0x00800000,

        },       

        [4] = {

                .name        = "eboot",

                .size        = 0x00080000,

                .offset = 0x04400000,

        },

        [5] = {

                .name        = "WINCE",

                .size        = 0x03b80000,

                .offset = 0x04480000,

        }


<!--[if !supportLists]--> 7、  <!--[endif]-->关闭ECC校验。修改文件drivers/mtd/nand/s3c2410.c

# vim drivers/mtd/nand/s3c2410.c

将以下行:

chip->ecc.mode      = NAND_ECC_SOFT;

修改为:

chip->ecc.mode      = NAND_ECC_NONE;

 

8、修改nandflash驱动,适应FL2440开发板上的K9F1G08 128的flash芯片。

 

# vi drivers/mtd/nand/nand_bbt.c

将以下两个部分进行修改

static struct nand_bbt_descr largepage_memorybased = {

        .options = 0,

        .offs = 0,

        .len = 1, // 原数值为2,支持2K每页的flash修改为1。K9F1G08,K9F2G08是2k每页的flash

        .pattern = scan_ff_pattern

};

static struct nand_bbt_descr largepage_flashbased = {

        .options = NAND_BBT_SCAN2NDPAGE,

        .offs = 0,

        .len = 1, // 原数值为2,支持2K每页的flash修改为1。K9F1G08,K9F2G08是2k每页的flash

        .pattern = scan_ff_pattern

};

 

至此,已经为fl2440配置好一个简单的内核,此时将配置信息写入config文件:

#make s3c2410_defconfig

 

  HOSTCC  scripts/basic/fixdep

  HOSTCC  scripts/basic/docproc

  HOSTCC  scripts/basic/hash

  HOSTCC  scripts/kconfig/conf.o

  HOSTCC  scripts/kconfig/kxgettext.o

  SHIPPED scripts/kconfig/zconf.tab.c

  SHIPPED scripts/kconfig/lex.zconf.c

  SHIPPED scripts/kconfig/zconf.hash.c

  HOSTCC  scripts/kconfig/zconf.tab.o

  HOSTLD  scripts/kconfig/conf

#

# configuration written to .config

#

 

12、配置内核

 

# make menuconfig

配置CPU选项(记得跟S3C2440 Machines平级的其它以及子项都不选)去掉S3C2400 Machines、S3C2410 Machines(留下

S3C2410 Machines  --->  [*] SMDK2410/A9M2410    留下这项就够了,其他全部“N”掉)、S3C2412 Machines、S3C2442 Machines的所有选项,否则会报错。如果现在编译 内核,下载到开发板中, 内核就可以正常启动了。具体如下。
  1. General setup ---> 
  2.     [*] Configure standard kernel features (for small systems) ---> 
  3.     [*] Enable 16-bit UID system calls 
  4.     [*] Sysctl syscall support 
  5.     [*] Load all symbols for debugging/ksymoops 
  6.         [ ] Include all symbols in kallsyms 
  7.         [ ] Do an extra kallsyms pass 
  8. System Type ---> 
  9.     S3C2400 Machines ---> 
  10.     S3C2410 Machines ---> 
  11.         [*] SMDK2410/A9M2410 
  12.         [ ] IPAQ H1940 
  13.         [ ] Acer N30 family 
  14.             [ ] Simtec Electronics BAST (EB2410ITX) 
  15.         [ ] NexVision OTOM Board 
  16.         [ ] AML M5900 Series 
  17.         [ ] TCT Hammer Board 
  18.         [ ] Thorco 
  19.     S3C2412 Machines ---> 
  20.         [ ] Logitech Jive 
  21.         [ ] SMDK2413 
  22.             [ ] SMDK2412 
  23.             [ ] VMSTMS 
  24.         S3C2440 Machines ---> 
  25.             [ ] Simtec Electronics ANUBIS 
  26.         [ ] Simtec IM2440D20 (OSIRIS) module 
  27.         [ ] HP iPAQ rx3715 
  28.         [*] SMDK2440 
  29.         [ ] NexVision NEXCODER 2440 Light Board 
  30.             [*] SMDK2440 with S3C2440 CPU module 
  31.         [ ] Avantech AT2440EVB development board 
  32.             [ ] MINI2440 development board 
  33.         S3C2442 Machines ---> 
  34.         [ ] SMDM2440 with S3C2442 CPU module 
  35.         [ ] Openmoko GTA02 / Freerunner phone 
  36.         S3C2443 Machines ---> 
  37.         [ ] SMDK2443 
  38. Boot options ---> 
  39.     (0x0) Compressed ROM boot loader base address 
  40.     (0x0) Compressed ROM boot loader BSS address 
  41.     (noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0 Default command string 
  42.     [ ] Kernel Execute-In-Place from ROM 
  43.     [ ] Kexec system call (EXPERIMENTAL) 
  44. Device Drivers ---> 
  45.     <*> Memory Technology Device (MTD) support ---> 
  46.     <*> NAND Device Support ---> 
  47.     [ ] Verify NAND page writes 
  48.     [ ] NAND ECC Smart Media byte order 
  49.     [ ] Enable chip ids for obsolete ancient NAND devices 
  50.     < > GPIO NAND Flash driver 
  51.     <*> NAND Flash support for Samsung S3C SoCs 
  52.     [ ] Samsung S3C NAND driver debug 
  53.     [ ] Samsung S3C NAND Hardware ECC 
  54.     [ ] Samsung S3C NAND IDLE clock stop 
  55.     < > DiskOnChip 2000, Millennium and Millennium Plus (NAND reimplementation)(EXPERIMENTAL) 
  56.     < > Support for NAND Flash Simulator 
  57.     < > Support for generic platform NAND driver 
  58.     < > MTD driver for Olympus MAUSB-10 and Fujifilm DPC-R1 
  59. File systems ---> 
  60.     [*] Miscellaneous filesystems ---> 
  61.             <*> YAFFS2 file system support 
  62.             -*- 512 byte / page devices 
  63.                 -*- 2048 byte (or larger) / page devices 
  64.                 [*] Autoselect yaffs2 format 
  65.                 [*] Cache short names in RAM
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值