移植linux2.635到s3c2416平台(NANDFLASH问题)

本文记录了作者在S3C2416开发板上移植Linux系统的全过程,包括解决NAND Flash驱动问题及成功启动内核的经历。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       最近买了一块s3c2416开发板,想自己完完全全移植一个linux系统,我打算移植2.3.35,因为我下载了几个版本发现它是第一个开始支持s3c2416的内核版本,有这个在移植工作轻松很多,要不然我这个菜鸟估计搞不定。

       其实步骤和移植2440很类似。make menuconfig 选中SMDK2416(把其他的平台统统去掉),还有像串口的支持,NANDFLASH的支持一定要选上。make menuconfig完毕,make 一下,报错。说什么s3c_nand找不到,搜一下原因,很简单就是因为make menuconfig 没配好,不去改那玩意,直接在arch/arm/plat-s3c的makefile上改,把它改成-y就行,很粗鲁很有效,类似的问题同样解决,再MAKE后烧写zImage到开发板,提示找不到nand,很正常,还有yaffs和nand分区表没有修改,但是串口输出是正常的,默认的smdk2416里的串口时钟和平台号都是正确的不同修改(当然是由开发板的晶振还有Uboot传来的参数决定的)。

       接着,我下载Yaffs2,打补丁,修改NANDFLASH分区表,一切很easy,重新make后烧写,问题来了,依然提示找不到NAND,没有办法了找了很多资料无法解决。我无奈下又尝试了2.6.36,2.6.39和3.1。其中2.6.36和2.6.35现象一模一样都是先开始都编译不过,然后同样的步骤同样的问题。但是到了linux3.1和2.6.39问题不一样了,内核启动出现了:

                                          Creating 4 MTD partitions on "NAND 256MiB 3,3V 8-bit":
                                          0x000000000000-0x000000100000 : "Bootloader"
                                          0x000000100000-0x000000300000 : "LOGO"
                                          0x000000300000-0x000000700000 : "Kernel"
                                          0x000000700000-0x000010000000 : "ROOTFS"

但是后面的信息让我崩溃:

挂载根文件系统的时候出现:(为了避免不必要的错误我用了厂家的根文件系统)

 Modules linked in:

CPU: 0    Not tainted  (2.6.39 #2)
PC is at yaffs_del_dir_contents+0x1c/0x90
LR is at yaffs_del_dir_contents+0x48/0x90
pc : [<c012f508>]    lr : [<c012f534>]    psr: 60000013
sp : c3819ce0  ip : c3819cfc  fp : c3819cf8
r10: c3a73174  r9 : c3993d3c  r8 : 00000100
r7 : c39c0990  r6 : c39d1de0  r5 : c39d1da0  r4 : c39d1d38
r3 : 00000003  r2 : 00040002  r1 : c3993e00  r0 : 00006f92
Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
Control: 0005317f  Table: 30004000  DAC: 00000017
Process swapper (pid: 1, stack limit = 0xc3818260)

此处省略很多,查了很多资料,换了很多yaff2版本擦除了nandflash N次没有效果。

我分析下来认为是nandflash驱动的问题(原谅我菜),然后我对比厂家的driver/mtd/nand目录和我自己的,发现它多了一个s3c_nand.c,大喜过望我把它拷贝过来,修改makefile,make通过,然后烧写,内核启动正常了,真是太开心了,虽然是简单得不能再简单但还是感觉收获不小。接着我把它复制到2.6.35下,make报错,内核不同驱动也有所不同,但是非常有限,我稍微修改下就OK了, make 下载linux2.6.35也同样成功启动了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值