分享

linux-2.6内核移植

 hnust9727 2013-04-29

准备移植

也可到官方网站http://www./获得最新版本的内核源码解压源码,进入目录:Linux-2.6.31

修改 Makefile  183行:

ARCH = arm                   指定系统硬件架构

CROSS_COMPILE ?= arm-linux-    指定交叉编译器

 

修改时钟:

修改arch/arm/mach-s3c2440/mach-smdk2440.c        163

static void __init smdk2440_map_io(void)

{

s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc));

s3c24xx_init_clocks(12000000);    输入时钟为 12MHz

s3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs));

 

修改机器码(根据实际情况,这个要和bootloader的匹配):

修改:arch/arm/tools/mach-types   379行:

s3c2440  ………………………     XXX    后面那个数就是机器码

 

配置:

#make menuconfig     进入图形化配置界面

在配置菜单中选择这一项:“Load an Alternate Configuration File 输入2440的默认配置文件:arch/arm/configs/s3c2410_defconfig 说明:这个文件就是 S3C24XX 系列开发板的板级支持包(BSP 然后选择 OK,按回车 进入“System Type”选项单,里面的选项保持默认 在“S3C24XX Machine”选项中只配置这几项(其他的选项取消)

S3C2410 Machine --->

    [*] SMDK2410/A9M2410

  S3C2440 Machine --->

    [*] SMDK2440

    [*] SMDK2440 with S3C2440 cpu moudle

 

配置完后,回到主菜单,选择这一项“Save an Alternate Configuration File”输入要保存的配置文件名称:.config (默认退出,编译内核: #make zImage

zImage镜像烧进NandFlash跑一下,看是否正常打印出信息

 

注意,系统启动最后可能会出现这个错误:

Kernel panic - not syncing: Attempted to kill init!

然后出打印出一些很乱的东西。 因为用4.X.X版本的交叉编译器使用EABI,但内核默认是不支持EABI编译的,所以编译出的系统会报错,但用3.X.X版本的编译器就不会出现这个问题。 解决办法是,配置内核支持EABI编译

Kernel Features  --->

            [*] Use the ARM EABI to compile the kernel                   

            [*]      Allow  old  ABI  binaries  to  run  with  this  kernel

(EXPERIMENTA)

 

支持 NandFlash

修改同时支持64M256March/arm/plat-s3c24xx/common-smdk.c文件在第110

static struct mtd_partition smdk_default_nand_part[] = {

#if defined(CONFIG_64M_NAND)

  [0] = {

    .name  = "boot",

    .offset  = 0,

    .size  = SZ_1M,

  },

  [1] = {

    .name  = "kernel",

    .offset = SZ_1M + SZ_128K,

    .size  = SZ_4M,

  },

  [2] = {

    .name  = "yaffs2",

    .offset = SZ_1M + SZ_128K + SZ_4M,

    .size  = SZ_64M - SZ_4M - SZ_1M - SZ_128K,

 }

#elif defined(CONFIG_256M_NAND)

  [0] = {

    .name  = "boot",

    .offset  = 0,

    .size  = SZ_1M,

  },

  [1] = {

    .name  = "kernel",

    .offset = SZ_1M + SZ_128K,

    .size  = SZ_4M,

  },

  [2] = {

    .name  = "yaffs2",

    .offset = SZ_1M + SZ_128K + SZ_4M,

    .size  = SZ_256M - SZ_4M - SZ_1M - SZ_128K,

 }

#endif

};

这个分区名字可以随便起。

修改 Kconfig 文件,在配置时选择 NAND 类型,修改driver/mtd/nand/Kconfig,172行,添加:

 

choice 

prompt "Nand Flash Capacity Select"

  depends on MTD

 

config 64M_NAND

  boolean "64M NAND For TX-2440A"

  depends on MTD

 

config 256M_NAND

  boolean "256M NAND For TX-2440A"

  depends on MTD

 

endchoice

 

配置内核,支持NandFlash

Device Drivers --->

     <*> Memory Technology Device (MTD) support --->

           [*]   MTD partitioning support

           <*> NAND Device Support --->

                <*>   NAND Flash support for S3C2410/S3C2440 SoC

                [*]    S3C2410 NAND Hardware ECC     //这个一定要选上

      Nand Flash Capacity Select(256M Nand For TX-2440A)--->

 

支持 yaffs2 文件系统

下载yaffs2源码  解压,进入yaffs2目录:

#tar xzvf yaffs2.tar.gz

#cd cvs/yaffs2/

给内核打上yaffs2文件系统的补丁,执行:

#./patch-ker.sh c /………/linux-2.6.31/   这个是你的内核源码的目录

 

这时内核源码 fs 目录下多了一个 yaffs2 目录,同时 Makefile 文件和 Kconfig

文件也增加了yaffs2的配置和编译条件。

配置对 yaffs2 支持:

这部分配置的比较多,可根据自己的需要进行配置,把不用的文件系统都去掉,

下面是几个主要的配置:

  File systems --->

    DOS/FAT/NT Filesystems --->

      <*> MSDOS fs support

      <*> VFAT (Windows95) fs support

    Miscellaneous filesystems --->

     <*> YAFFS2 file system support

        [*] Autoselect yaffs2 format

说明:现在内核已经支持 NandFlash  yaffs2 文件系统,将内核烧入NandFlash后,再烧入 yaffs2文件系统

 

 补丁文件

文件:linux-2.6.31.rar大小:161KB下载:下载

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多