ARM-Linux 内核移植--基于FL2440开发板(修改为Linux单系统)

硬件平台:FL2440开发板

内核版本:2.6.28

主机:ubuntu 11.04

内核版本:2.6.39

原创作品,转载请标明出处http://blog.csdn.net/yming0221/archive/2011/06/24/6566551.aspx

 

本来以为fl2440的nand flash大小为128M,问了客服才知道,现在FL2440使用的是现代的flash,现在都换成256M的了,只是飞凌的bootloader没有相应的修改,它使用的既不是u-boot,也不是vivi,而是自己的bootloader。现在修改bootloader源码中的nand.c

修改如下:

//可更改删除分区,分区名字不可改
static struct Partition NandPart[] = {
	{0, 		 0x00020000, "boot"},		//128K one block
	{0x00020000, 0x00060000, "bootParam"},	//384K three blocks
	{0x00080000, 0x00100000, "pic"},		//1M
	{0x00180000, 0x00380000, "MyApp"},		//3.5M
	{0x00500000, 0x00300000, "kernel"},		//3M
	{0x00800000, 0x0f000000, "fs_yaffs"},	//240M
	//{0x09e00000, 0x00080000, "eboot"},		//512K
	//{0x09e80000, 0x06400000, "wince"},		//100M
	{0,			 0         , 0}
};


使用ADS工具,重新编译bootloader,生成.bin文件,然后烧写bootloader,这样分给linux文件系统的flash 大小为240M(由于自己不用

WIN CE)

这样使linux充分利用flash,不用将许多库文件挂载成NFS了

 

然后修改FL2440自带的内核(大部分驱动都已经集成)修改linux/arch/arm/plat-s3c24xx/common-smdk.c

static struct mtd_partition smdk_default_nand_part[] = {
[0] = {
		.name	= "Boot",
		.size	= 0x00100000,
		.offset = 0
	},
	[1] = {
		.name	= "MyApp",
		.size	= 0x003c0000,
		.offset = 0x00140000,
	},
	[2] = {
		.name	= "Kernel",
		.size	= 0x00300000,
		.offset = 0x00500000,
	},
	[3] = {
		.name	= "fs_yaffs",
		.size	= 0x0f000000,	 //240M
		.offset = 0x00800000,
	},	
	/*[4] = {
		.name	= "WINCE",
		.size	= 0x03c00000,
		.offset = 0x04400000,
	}
	*/
};		


然后make zImage重新编译内核。烧写内核。

最后将以前制作好的文件系统烧写进去即可。

 

(注:由于大小为64M的sdram,文件系统过大将不能使用这种bootloader烧写进去,可以先将qt的库删除,启动起来后,使用NFS载,然

后复制过去即可)。

 

输入cat /proc/mtd查看分区信息

成功修改分区,将双系统改为单系统。

你可能感兴趣的:(嵌入式ARM+Linux,Linux内核游记,ARM-Linux驱动移植)