Linux移植【0】NandFlash无法挂在根文件系统

来源:互联网 发布:校园网限制mac地址 编辑:程序博客网 时间:2024/05/01 06:02

最近在做移植内核的工作,将遇到的问题以及解决问题的过程记录在这里。

在将Linux2.6.30.4内核移植到TQ2440开发板后,启动后会出现下列错误:


刚开始怀疑是NandFlash分给内核的空间太小。因此想把空间扩大一些,但是只把内核中common-smdk.c中关于nandflash的分区表调整是不可以的,还要与Uboot中nandflash的参数保持一致才可以。由于之前烧写的Uboot是现成的,没有自己编译。这样一来还要自己重新编译Uboot。

★关于Uboot的配置和编译

◇关于Uboot的配置

在Uboot的顶层Makefile中有这样的代码:


这些代码是用来在日后配置Uboot使用的。

在include/configs下新建一个头文件来存放开发板的配置信息:


在这个头文件中就存放了关于Nandflash的分区参数,下图就是关于分区的代码,将其修改为4M


然后通过make EmbedSky_config来配置,通过make all 编译出可执行文件。然后重新烧写程序后,问题依旧存在

★关于yaffs2文件系统的支持

将思路转到yaffs2文件系统上来。由于内核linux-2.6.30.4不支持yaffs2文件系统,需要打补丁。方式如下:

◇下载文件:git  clone git://www.aleph1.co.uk/yaffs2 

然后可以通过两种方式来讲yaffs2文件添加到内核中。一种是使用patch-ker.sh,它会自动将yaffs2文件夹中的Makefile、Kconfig、以及一些文件拷贝到内核中的fs目录下面。第二种方法就是手动操作,我采用的是第二种方式:

◇将yaffs2文件夹拷贝到内核的fs目录下面

◇修改与fs目录下的Makefile和Kconfig文件

在Kconfig中添加“source "fs/yaffs2/Kconfig"”

在Makefile中添加“obj-$(CONFIG_YAFFS_FS) += yaffs2/”

◇对yaffs2文件夹的内容进行修改


在yaffs2中有Kconfig_multi和Kconfig_single以及Makefile和Makefile.kernel

首先将Makefile去掉然后将Makefile.kernel修改成Makefile,然后选择Kconfig_multi作为Kconfig。这里要将其他的文件也要进行修改(将文件名中带有_multi后缀去掉,否则编译会出错)


然后在内核配置选项中将其添加到内核中


然后重新编译内核,就成功了。之前的错误就是因为使用了Kconfig_single这个配置文件的原因


0 0