Chinaunix首页 | 论坛 | 博客
  • 博客访问: 852362
  • 博文数量: 189
  • 博客积分: 4310
  • 博客等级: 上校
  • 技术积分: 1925
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-27 08:56
文章分类

全部博文(189)

文章存档

2015年(1)

2013年(2)

2012年(1)

2011年(39)

2010年(98)

2009年(48)

分类: LINUX

2010-03-22 20:16:30

谢谢以下博文的作者使我少走了很多弯路,提高我了很多信息
 
 
系统的移植要注意的是mach_type,这个要跟你的bootloader的一致。
移植的步骤:
1. 修改顶层的Makefile
     直接将Makefile文件里面的        
   ARCH ?= $(SUBARCH)
   CROSS_COMPILE ?=
   改为:
   ARCH ?= arm
   CROSS_COMPILE ?=arm-linux-
并创建配置文件 cp arch/arm/congfigs/s3c2410_defconfig .config   就是加载配置文件。S3C2410和S3C2440差不多的,注意.config前有个空格。
2. 修改分区,主要修改一个数组
文件位置在arch/arm/plat-s3c24xx/common-smdk.c
主要修改smdk_default_nand_part[]
{
[0] = {
.name = “supervivi”,
.size = 0x00060000,
.offset = 0,
},
[1] = {
.name = “Kernel”,
.offset = 0x00060000,
.size = 0x00200000,
},
[2] = {
.name = “root”,
.offset = 0x00260000,
.size = 1024*1024*1024,
},
[3] = {
.name = “nand”,
.offset = 0x00000000,
.size = 1024*1024*1024,
}
};
然后把其他的去掉或不编译。
这个要参考友善之臂带的源码里的信息。
3. 修改时钟频率
在arch/arm/mach-s3c2440/mach-smdk2440.c
修改下时钟频率
s3c24xx_init_clocks(12000000);
4. make menuconfig
在boot option >Default kernel command sring的内容
修改为noinitrd root=/dev/mtdblock2 init=/linuxrc console =ttySAC0,115200 mem=64M
 
5. 加载YAFFS2
我直接把友善之臂的/fs/ysffs2 拷过来,然后修改fs/Kconfig文件和fs/Makefile的文件
修改如下:
在KCONFIG 文件中加入
# Patched by YAFFS
source "fs/yaffs2/Kconfig"
在Makefile中加入
# Patched by YAFFS
obj-$(CONFIG_YAFFS_FS)  += yaffs2/
这个可以对照友善之臂提供的源码。
6.配置及编译内核
然后用S3C2410的默认配置文件
#cp arch/arm/configs/s3c2410_defconfig .config
#make menuconfig               //只需修改下面几项

[*] Enable loadable module support --->

       [*]   Module unloading

       [*]   Automatic kernel module loading

      选择这两个,剩下的可以去掉

System Type ---->

       [*] S3C2410 DMA support

       S3C2410 Machines --->

              [*] SMDK2410/A9M2410 

       S3C2440 Machines --->

              [*] SMDK2440

              [*] SMDK2440 with S3C2440 CPU module

//System Type这部分,只选这些,其他可以全部去掉,

Boot option ----->

    修改启动参数为:noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0,115200

    可能根据个人板子的设置会不一样,我的是从Nand Flash中加载文件系统,其中mtdblock2是存放我的Linux文件系统的分区。不过,在bootloader可以传递内核参数的情况下这个设置是无效的。

 

Device Drivers --->

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

              [*]   MTD partitioning support

              <*> NAND Device Support --->

                      <*>   NAND Flash support for S3C2410/S3C2440 SoC

                      [ ]    S3C2410 NAND Hardware ECC     //这个要去掉

       [*] Network device support --->

               [*]   Ethernet (10 or 100Mbit) ---> 

                   <*>   DM9000 support
Kernel Features ->
     [*]Use the ARM EABI to compile the kernel
     [*]  Allow old ABI binaries to run with this kernel

到这边kernel一般可以boot起来,这时会出现一些 rtc和网络的一些问题,呵呵,这些再慢慢解决吧。

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