设为首页 加入收藏

TOP

移植Linux2.6.24.7到博创2410-S(s3c2410s),包括AX88796移植
2014-11-24 07:29:24 来源: 作者: 【 】 浏览:0
Tags:移植 Linux2.6.24.7 2410-S s3c2410s 包括 AX88796

一、下载并解压Linux2.6.24.7内核源码
从网上下载linux-2.6.24.7内核源码到/arm2410s目录下,并解压


#tar xzvf linux2.6.24.7.tar.gz
# cd linux2.6.24.7
进入内核解压后的目录


注:以后示例中,只要是相对路径全部是相对于/arm2410s/linux2.6.24.7/此目录



--------------------------------------------------------------------------------


二、修改内核源码根目录下的Makefile文件


#vi Makefile


修改Makefile中的ARCH和CROSS_COMPILE变量,修改为



ARCH = arm
CROSS_COMPILE = arm-linux- //该值是交叉编译器的前缀,具体值因人而异



注:arm和arm-linux-后面不能有空格,否则make menuconfig时会出现“/arm2410s/linux-2.6.24.7/arch/arm: 是一个目录”错误。



--------------------------------------------------------------------------------



三、设置nand flash分区信息


修改arch/arm/plat-s3c24xx/common-smdk.c文件,修改Nand Flash的分区信息和Nand Flash的硬件信息(这部分信息应该与vivi中的flash(mtd)分区对应起来,不可随便设置)。


(LED 器件的初始化也在这个文件里,但是博创的平台没有那四个LED管,所以要不要那些程序都无所谓。我就把它们放在那里,反正启动时不会有影响,也没有出错信息。)


修改的内容如下:


static struct mtd_partition smdk_default_nand_part[] = {


[0] = {


.name = "vivi",


.size = SZ_128K,


.offset = 0,


},


[1] = {


.name = "param",


.offset = SZ_128K,


.size = SZ_1M-SZ_128K,


},


[2] = {


.name = "kernel",


.offset = SZ_1M,


.size = SZ_1M * 3,


},


[3] = {


.name = "root",


.offset = SZ_4M,


.size = SZ_4M * 5,


},


[4] = {


.name = "user",


.offset = SZ_4M * 6,


.size = SZ_4M * 10,


},


};




注意:请不要画蛇添足地在进行自定义nand flash分区时仍然按照以前内核的移植步骤,在devs.c中自己添加分区信息,不然系统启动时会有出错信息:


kobject_add failed for s3c2410-nand with -EEXIST, don't try to register things with the same name in the same directory.
[] (dump_stack+0x0/0x14) from [] (kobject_shadow_add+0x160/0x1a8)
[] (kobject_shadow_add+0x0/0x1a8) from [] (kobject_add+0x14/0x18)
[] (kobject_add+0x0/0x18) from [] (device_add+0xa0/0x568)
[] (device_add+0x0/0x568) from [] (platform_device_add+0x100/0x150)
[] (platform_device_add+0x0/0x150) from [] (platform_device_register+0x20/0x24)
r7:c0022a10 r6:c0020a1c r5:00000000 r4:c02cab30
[] (platform_device_register+0x0/0x24) from [] (platform_add_devices+0x24/0x6c)
r4:00000000
[] (platform_add_devices+0x0/0x6c) from [] (smdk_machine_init+0x84/0x98)
r8:c03b8000 r7:00000000 r6:c0020a1c r5:00000000 r4:c0021404
[] (smdk_machine_init+0x0/0x98) from [] (smdk2410_init+0x1c/0x24)
[] (smdk2410_init+0x0/0x24) from [] (customize_machine+0x20/0x2c)
[] (customize_machine+0x0/0x2c) from [] (kernel_init+0xb8/0x284)
[] (kernel_init+0x0/0x284) from [] (do_exit+0x0/0x76c)




--------------------------------------------------------------------------------



四、 禁止nand flash的ECC校验




修改文件drivers/mtd/nand/s3c2410.c文件,查找函数s3c2410_nand_init_chip(),在函数的最后一行,添加chip->ecc.mode=NAND_ECC_NONE;



--------------------------------------------------------------------------------


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇使用Java编写控制台程序 在屏幕上.. 下一篇Ubuntu Linux编程入门——用hello..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·数据库:推荐几款 Re (2025-12-25 12:17:11)
·如何最简单、通俗地 (2025-12-25 12:17:09)
·什么是Redis?为什么 (2025-12-25 12:17:06)
·对于一个想入坑Linux (2025-12-25 11:49:07)
·Linux 怎么读? (2025-12-25 11:49:04)