原创 移植2.6.25到友善2440开发板

2009-5-19 14:25 2301 2 3 分类: MCU/ 嵌入式
移植主要参考http://bbs.sunplusedu.com/showtopic-539.aspx这篇文章,首先设置MTD分区,这主要是在arch/arm/plat-s3c24xx/commom-smdk.c中修改完成,
同样,还要禁止ECC,修改drivers/mtd/nand/s3c2410.c 文件,找到s3c2410_nand_init_chip()函数,在该函数体最后加上一条语句:
chip->eccmode = NAND_ECC_NONE;

此时可以MAKE了,但要记住使用 Make s3c2410_defconfig产生默认的2410配置,这是由于2410与2440基本相同。

MAKE zImage

在引导内核的时候如果出现error: unrecognized/unsupported machine ID (r1 = 0x31f07d30).错误,我的方法是修改内核的arch/arm/kernel/head.S,直接将s3c2410的参数赋给内核
__INIT
.type stext, %function
ENTRY(stext)
/****************add here*****************/
mov r0, #0
mov r1, #0xc1
// ?ldr r2, =0x30000100 ?(这句我没有添加,似乎也可以)
/***************end add******************/

做完这些后,应该就可以引导了。
PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户160912 2009-5-21 09:20

移植2.6.13支持2440 creator sz111@126.com 1.首先下载最新的linux2.6.13内核源码。 2.更改makefile: ARCH = arm CROSS_COMPILE = /usr/local/arm/3.4.1/bin/arm-linux- 3.添加nandflash的分区说明。 在mach-smdk2440.c中加入: #include #include #include #include #include #include #include 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 = 0x03d9c000, } }; /* 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 bit_nand_info = { .tacls = 0, .twrph0 = 30, .twrph1 = 0, .nr_sets = ARRAY_SIZE(bit_nand_sets), .sets = bit_nand_sets, }; 加入s3c_device_nand static struct platform_device *smdk2440_devices[] __initdata = { &s3c_device_usb, &s3c_device_lcd, &s3c_device_wdt, &s3c_device_i2c, &s3c_device_iis, &s3c_device_nand, }; 在函数smdk2440_map_io中加入: s3c_device_nand.dev.platform_data = &bit_nand_info; 禁止ecc校验 修改linux-2.6.13\drivers\mtd\nand\s3c2410.c NAND_ECC_SOFT改为NAND_ECC_NONE 把频率s3c24xx_init_clocks(16934400);改为s3c24xx_init_clocks(12000000);
相关推荐阅读
用户160912 2009-06-06 11:24
2440中断总结
1.对于外部中断需要设置外部中断寄存器、外部中断屏蔽位、中断屏蔽位等三个位置。2.中断处理函数的写法:????pISR_EINT0= (unsigned ) doIrq;??doIrq为我们定义的中断...
用户160912 2009-06-03 08:19
Linux-2.6.20的LCD驱动分析(四)
四、s3c2410fb_ops变量详解????? 在上面的文字中,较为详细的解释了platform device相关的代码,通过上面的代码的执行,一个platform设备(framebuffer被当作...
用户160912 2009-06-03 08:18
Linux-2.6.20的LCD驱动分析(三)
三、解剖s3c2410fb_driver变量s3c2410fb_driver变量有什么作用呢?在前面的2.2节提到了它的定义,从它的原型可以看出 s3c2410fb_driver是个platform_...
用户160912 2009-06-03 08:17
Linux-2.6.20的LCD驱动分析(二)[转]
二、s3c2410fb_probe函数分析2.1?驱动的入口点摆在面前的第一个问题相信应该是,这个函数是从那里开始运行的。这里就应该从long long ago?开始了,打开drivers/video...
用户160912 2009-06-03 08:16
Linux-2.6.20的LCD驱动分析 转]
一、让LCD显示可爱的小企鹅还是先说说环境吧,处理器为S3C2410,linux的版本当然是2.6.20的。下面先说说怎样让LCD上显示出可爱的小企鹅。最直接的步骤如下(记住不要问为什么哈~_~,一步...
用户160912 2009-06-02 08:49
u-boot在s3c2410上支持LCD(s3c2410为SKYEYE模拟)
http://blog.csdn.net/zblue78/archive/2009/05/14/4181947.aspx步骤1??修改u-boot 2009.3的makefileifeq ($(ARC...
EE直播间
更多
我要评论
1
2
关闭 站长推荐上一条 /3 下一条