免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 797 | 回复: 0
打印 上一主题 下一主题

移植Linux 2.6.25到s3c2440 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-25 23:07 |只看该作者 |倒序浏览
移植Linux 2.6.25到s3c2440
creator
sz111@126.com
   
    今天正式开始移植最新的内核版本,目前选择是2.6.25版本。闲话少说,麻烦进入移植阶段。
    (可能比较简单,更详细的是我上次的2.6.13版本,可以参考我的那篇文章《移植2.6.13支持2440 》
    http://blog.chinaunix.net/u1/49088/showart_572866.html)。
    1.首先下载最新的内核源码。不知道哪里下?呵呵,那你就不用学Linux了,大名鼎鼎的www.kernel.org啊。
    2.我们选择的板子上SMDK2440,关于nand的MTD分区已经有了,在common-smdk.c文件中,我的分区上3个。
      可以修改一下,我的如下:
      
        
        static int chip0_map[] = { 0 };     //add by lili
        struct mtd_partition bit_default_nand_part[] = {
        [0] = {
        .name = "bootloader",
        .offset = 0x00000000,
        .size = 0x00060000,
        },  
        [1] = {
        .name = "kernel",
        .offset = 0x00060000,
        .size = 0x00200000,
        },  
        [2] = {
        .name = "root",
        .offset = 0x00260000,
        .size = 0x03d90000, //0x03d9c000// 03ff0000后面有坏块
        }   
        };  
            
        /* the bit has 1 selectable slots for nand-flash, the three
         * on-board chip areas, as well as the external SmartMedia
         * slot.
         *  
         * Note, there is no current hot-plug support for the SmartMedia
         * socket.
        */  
            
        static struct s3c2410_nand_set bit_nand_sets[] = {
            [0] = {
                .name        = "chip0",
                .nr_chips    = 1,
                .nr_map        = chip0_map,
                .nr_partitions    = ARRAY_SIZE(bit_default_nand_part),
                .partitions    = bit_default_nand_part
            },
        };  
            
            
        static struct s3c2410_platform_nand smdk_nand_info = {
            .tacls        = 0,
            .twrph0        = 30,
            .twrph1        = 0,
            .nr_sets    = ARRAY_SIZE(bit_nand_sets),
            .sets        = bit_nand_sets,
        };  
    3.修改mach-smdk2440.c中的设定clock的地方。改为12M.
    s3c24xx_init_clocks(12000000);//16934400
    4.修改nand Flash的校验方式,去掉ECC校验。
       在drivers/mtd/nand/s3c2410.c
       将chip->ecc.mode = NAND_ECC_SOFT;
       改为 chip->ecc.mode = NAND_ECC_NONE;
       在配置mtd文件中也不可以选择硬件ECC部分。
       [ ]    S3C2410 NAND Hardware ECC     //这个要去掉
      
    make s3c2410_defconfig
    make menuconfig
    make uImage
    就完成了我的系统需要的uImage。我的文件系统是采用cramfs。
   
    后记:
    遇到问题
    1.还是按照以前的方式,在mach-smdk2440.c加入nand的mtd分区,最后发现没有产生效果,
      最后发现在common-smdk.c已经有了,仅仅需要修改一下就可以了。
    2.有网友说可以用硬件ECC了,我测试仍然不行,会出现end_request: I/O error, dev mtdblock2, sector 2
    3.有网友说cramfs生成image的时候需要通过-e选项指定版本号。如果不指定会出现如下错误:
      Warning: unable to open an initial console.
      clk: version magic '2.6.12-h1940 ARMv4 gcc-3.4' should be '2.6.24.4 mod_unload ARMv4 '
      s3c2410mci: version magic '2.6.12-h1940 ARMv4 gcc-3.4' should be '2.6.24.4 mod_unload ARMv4 '
      我的并没有出现,我采用的mkcramfs工具是网上下载编译的,具体可以参考我的另外一篇文章
      cramfs根文件系统的使用  http://blog.chinaunix.net/u1/49088/showart_705138.html
    4.有的网友仍然加入devfs的config,其实我测试已经不需要,并且devfs已经没有源文件,即使配置也
      并不会起作用。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/49088/showart_706248.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP