移植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已经没有源文件,即使配置也 并不会起作用。
|