Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1139836
  • 博文数量: 322
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 3276
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-17 09:21
文章分类

全部博文(322)

文章存档

2010年(155)

2009年(167)

我的朋友

分类: 嵌入式

2010-01-10 17:06:25

内核移植

上下载2.6.24的内核

解压linux-2.6.24 (/linux-2.6.24)

编辑其目录下的Makefile,修改目标cpu体系结构和交叉编译工具的路径。

gedit Makefile

ARCH ?= arm

CROSS_COMPILE ?= /work/cross/toolchain/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin/arm-softfloat-linux-gnu-

根据自己所使用的交叉编译器路径设置。

 

拷贝一个系统默认的config作为模板

cp arch/arm/configs/s3c2410_defconfig fs2410.config

 

修改NandFlash 分区信息。

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

smdk_default_nand_part[]修改如下:

static struct mtd_partition smdk_default_nand_part[] = {
 [0] = {
  .name = "Bootloader",
  .size = 0x40000,
  .offset = 0,
 },
 [1] = {
  .name = "Kernel",
  .offset = 0x40000,
  .size = 0x1c0000,
 },
 [2] = {
  .name = "FS",
  .offset = 0x200000,
  .size = 0x1e00000,
 },
 [3] = {
  .name = "WinCE",
  .offset = 0x2000000,
  .size = 0x2000000,
 }
};

分区大小自己看着办,要和uboot的一致。

size的大小只能是2n次方,这个是预定义时候就定义好的,比如64k256k1m2m4m,象500k3m这样的是没有的,只能SZ_1M*3

 

让内核支持devfs 以及在启动时并在/sbin/init 运行之前能自动挂载/dev devfs 文件系统。

编辑fs/Kconfig

906 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

 

禁用Flash ECC校验

    修改drivers/mtd/nand/s3c2410.c

    找到chip->ecc.mode = NAND_ECC_SOFT;

    改为chip->ecc.mode = NAND_ECC_NONE;

不改该处,分好区的flash认不出来,会出现那个典型的vfs错误

 

现在可以编译内核了,

make menuconfig

在配置菜单中,选择system type-->s3c2410 machines 中的smdk2410

其他的arch-machines 全部取消。

Make

编译完成后在arch/arm/boot 下会有一个zImage

这样就有了个最最基本的内核,已经是可以启动的。此内核到目前位置只指出cramfs和nfs启动。

阅读(647) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~