CNET中国旗舰网站

ZDNet China | CNET科技资讯网 | 政府采购 | 行业网站联盟





 
标题: [转贴] Linux 2.6.11.7 内核移植到S3C2410平台
ly5418
初级会员




UID 321554
精华 0
积分 117
帖子 6
威望 52
ZD币 26 元
阅读权限 25
注册 2008-4-23
状态 离线
  楼主
发表于 2008-4-23 16:38  资料  个人空间  短消息  加为好友 
开发者在线

Linux 2.6.11.7 内核移植到S3C2410平台

1,下载内核文件 http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.11.7.tar.gz   ,当然跟着是把它解压到你想放的地方啦。
2,修改Makefile
1)  ARCH = arm
2)  CROSS_COMPILE = /usr/local/arm/3.4.1/bin/arm-linux-
若交叉编译器的路径已经增加到环境变量中去了,可以不再指明路径,否则需要写出绝对路径。
3,修改文件 arch/arm/mach-s3c2410/devs.c  (增加部分用咖啡色)
/***********add here*************/
#include <linux/mtd/partitions.h>
#include <asm/arch/nand.h>
#include <linux/mtd/nand.h>
/***********end add*************/
static struct mtd_partition partition_info[] ={
{
    name: "loader",
    size: 0x00020000,
    offset: 0,
},
{
    name: "param",
    size: 0x00010000,
    offset: 0x00020000,
},
{
    name: "kernel",
    size: 0x001c0000,
    offset: 0x00030000,
},     
{
    name: "root",
    size:   0x00400000,
    offset: 0x00200000,
    mask_flags: MTD_WRITEABLE,
},
{
    name: "user",
    size:   0x03a00000,
    offset: 0x00600000,
}
};
struct s3c2410_nand_set nandset ={
nr_partitions: 5 ,
partitions: partition_info ,
};
struct s3c2410_platform_nand  hujunPlatform={
tacls:0,
twrph0:30,
twrph1:0,
sets: &nandset,
nr_sets: 1,
};
struct platform_device s3c_device_nand = {
    .name          = "s3c2410-nand",
    .id          = -1,
    .num_resources      = ARRAY_SIZE(s3c_nand_resource),
    .resource      = s3c_nand_resource,
//hujun add start
         .dev={
     .platform_data = &hujunPlatform        //注意此处不要","号  **********add here*****
//hujun add  end
};
EXPORT_SYMBOL(s3c_device_nand);  //此句原来就有,此处列出是要求上面加的代码在此句之前。
4,在arch/arm/mach-s3c2410/mach-smdk2410.c文件中添加 &s3c_device_nand

static struct platform_device *smdk2410_devices[] __initdata = {
    &s3c_device_usb,
    &s3c_device_lcd,
    &s3c_device_wdt,
    &s3c_device_i2c,
    &s3c_device_iis,
    &s3c_device_nand,          //在这里加,注意有逗号
};
5,当时使用cramfs 文件系统,修改了drivers/mtd/nand/s3c2410.c 文件,至于有没有必要就没有去试验:找到s3c2410_nand_init_chip()函数
将chip->eccmode = NAND_ECC_SOFT;
改为
chip->eccmode = NAND_ECC_NONE;
保存,退出。
若使用YAFFS 文件系统则不改。
6,我是在一个配置文件的基础上修改的,先是make smdk2410_defconfig,再make menuconfig,就把smdk2410_defconfig的配置选上了。然后再根据需要改。
System Type--->
  • S3C2410 DMA support
    General setup--->
  • NWFPE math emulation
    Memory Technology Devices(MTD)--->
  • MTD partitioning support
                                                                            
  • Command line partition table parsing
                                                                             NAND Flash Device Drivers
                                                                                     
  • NAND Device Support
                                                                                     
  • NAND Flash support for S3C2410 SoC
    Block devices--->
  • Initial RAM disk(initrd) support
    Character devices--->
  • Non-standard serial port support
                                          
  • S3C2410 RTC Driver
    File systems--->Miscellaneous filesystems
                                  
  • Compressed Rom file system support(cramfs)
                         --->Pseudo filesystems
                                  
  • Virtual memory file system support(former shm fs)
                                  
  • /dev file system support(OBSOLETE)
                                  
  • Automatically mount at boot
    7,修改内核的command line(bootloader使用vivi)
    vivi >param set linux_cmd_line"noinitrd root=/dev/mtdblock3  init=/linuxrcconsole=ttySAC0"(我用的是这个,下面的那个有时可以,好象板子用这个跑多几次,再改了下面的那个也可以,有待证实~~)
    vivi>param set linux_cmd_line "noinitrd root=/dev/mtdblock/3  init=/linuxrc console=ttySAC0" (todaygood用的是这个)
    总结:
    1,当linux cmd line中的root参数不对时,就会出现下面的错。
    VFS: Cannot open root device "mtd/mtdblock/3" or unknown-block(2,0)
    Please append a correct "root=" boot option
    Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
    2,命令行的console参数错了,应该为console=ttySAC0,不是console=ttyS0。
    Uncompressing Linux................................................................ done, booting the kernel. 就不动了
    3,没有选上/dev fs及Automatically mount at boot时出现的错误提示。
    VFS: Mounted root (cramfs filesystem) readonly.
    Freeing init memory: 88K
    Warning: unable to open an initial console.




  • 顶部
    热点频道推荐: C/S开发| 数据库| WEB开发| 嵌入式| 项目管理|
     



    当前时区 GMT+8, 现在时间是 2009-1-10 11:04

      Powered by Discuz! 5.5.0 © 2001-2007 Comsenz Inc.
    Processed in 0.102483 second(s), 4/3 queries

    清除 Cookies - 联系我们 - ZDNetChina中文社区 - 无图版