歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> linux-2.6.14移植到S3C2440

linux-2.6.14移植到S3C2440

日期:2017/3/1 10:04:05   编辑:Linux編程

現在應該很少使用2.6.14的內核了,但由於項目需要,最近移植了2.6.版本的內核到S3C2440上,並移植了CS8900網卡驅動(網卡驅動移植參考 http://www.linuxidc.com/Linux/2012-12/76856.htm )。之所以移植網卡驅動,是因為yaffs2格式的文件系統一直掛載不成功,啟動後的錯誤信息如下:

Mounted devfs on /dev

Freeing init memory: 92K

Failed to execute /linuxrc. Attempting defaults...

Kernel panic - not syncing: No init found. Try passing init= option to kernel.

這個問題只能先放一下,最後成功掛載nfs。yaffs2格式文件系統的問題以後再深入研究。整理一下最近做過的東西,怕遺忘了。

1.頂層Makefile的修改

ARCH ?= arm
CROSS_COMPILE ?= arm-linux-

交叉編譯器的使用請參考 http://www.linuxidc.com/Linux/2012-12/76859.htm

2.修改時鐘頻率

linux/arch/arm/mach-s3c2410/mach-smdk2440.c

static void __init smdk2440_map_io(void)
{
s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc));
s3c24xx_init_clocks(12000000);//12M
s3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs));
s3c24xx_set_board(&smdk2440_board);
}

3.修改機器ID

linux/arch/arm/tools/mach-types

s3c2440 ARCH_S3C2440 S3C2440 168

這個值要和uboot中的值對應起來,在uboot的arch/arm/tools/mach-types中有如下定義:

#define MACH_TYPE_S3C2440 168

這兩個值一樣即可。

4.設置Nand Flash分區

4.1建立Nand Flash分區表

在linux/arch/arm/mach-s3c2410/devs.c中增加

#include <linux/mtd/partitions.h>
#include <linux/mtd/nand.h>
#include <asm/arch/nand.h>

/* NAND parititon */

static struct mtd_partition smdk_default_nand_part[] = {
[0]= {
.name = "Board_uboot",
.offset = 0x00000000,
.size = 0x00080000,
},
[1]= {
.name = "Board_kernel",
.offset= 0x00240000,
.size = 0x00200000,
},
[2]= {
.name = "Board_yaffs2",
.offset= 0x00440000,
.size = 0x0FB40000,
}
};

Copyright © Linux教程網 All Rights Reserved