Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / linux-2.6.14移植到S3C2440

现在应该很少使用2.6.14的内核了,但由于项目需要,最近移植了2.6.版本的内核到S3C2440上,并移植了CS8900网卡驱动(网卡驱动移植参考 http://www.linuxidc.com/Linux/2012-12/76856.htm )。之所以移植网卡驱动,是因为yaffs2格式的文件系统一直挂载不成功,启动后的错误信息如下:Mounted devfs on /devFreeing init memory: 92KFailed to execute /linuxrc.  Attempting defaults...Kernel panic - not syncing: No init found.  Try passing init= option to kernel.这个问题只能先放一下,最后成功挂载nfs。yaffs2格式文件系统的问题以后再深入研究。整理一下最近做过的东西,怕遗忘了。1.顶层Makefile的修改ARCH  ?= arm
CROSS_COMPILE ?= arm-linux-交叉编译器的使用请参考 http://www.linuxidc.com/Linux/2012-12/76859.htm2.修改时钟频率linux/arch/arm/mach-s3c2410/mach-smdk2440.cstatic void __init smdk2440_map_io(void)
{
 s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc));
 s3c24xx_init_clocks(12000000);//12M
 s3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs));
 s3c24xx_set_board(&smdk2440_board);
}3.修改机器IDlinux/arch/arm/tools/mach-typess3c2440   ARCH_S3C2440  S3C2440   168这个值要和uboot中的值对应起来,在uboot的arch/arm/tools/mach-types中有如下定义:#define MACH_TYPE_S3C2440              168这两个值一样即可。4.设置Nand Flash分区4.1建立Nand Flash分区表在linux/arch/arm/mach-s3c2410/devs.c中增加#include <linux/mtd/partitions.h>
#include <linux/mtd/nand.h>
#include <asm/arch/nand.h>/* NAND parititon */static struct mtd_partition smdk_default_nand_part[] = {
 [0]= {
              .name      = "Board_uboot",
              .offset    = 0x00000000,
              .size = 0x00080000,
      },
 [1]= {
              .name      = "Board_kernel",
              .offset= 0x00240000,
              .size = 0x00200000,
      },
 [2]= {
            .name      = "Board_yaffs2",
            .offset= 0x00440000,
            .size =  0x0FB40000,
      }
};