尝试移植内核到s3c2440
一、环境搭建:
1.下载资源包:
linux-3.0.12.tar.gz (https://www.kernel.org/pub/linux/kernel/v3.0/)
ARM-Linux GCC 4.4.3(http://arm9download.cncncn.com/mini2440/linux/arm-linux-gcc-4.4.3-20100728.tar.gz)
2.解压内核:
1.tar -xzvf linux-3.0.12.tar.gz
2.cd linux-3.0.12
3.make s3c2410_defconfig
4.修改Makefile
195行 ARCH ?= arm 196 行CROSS_COMPILE ?= arm-linux-
5.make menuconfig添加你需要的驱动支持
如果此处报错Unable to find the ncurses libraries or the,则是需要安装ncurses-devel
ubuntu下:sudo apt-get install ncurses安装
6.修改晶振频率:
内核默认晶振是16M的,但大多数开发板是12M,需要修改,不然会出现乱扣乱码的现象
arch/arm/mach-s3c2440/mach-smdk2440.c中的
7.修改分区160static void __init smdk2440_map_io(void) 161 { 162 s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc)); 163 s3c24xx_init_clocks(12000000); 164 s3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs)) ; 165 }
arch/arm/plat-s3c24xx/common-smdk.c中的smdk_default_nand_part[]结构体数组我的分区如下:
7.make uImage111 static struct mtd_partition smdk_default_nand_part[] = { 112 [0] = { 113 .name = "bootloader", 114 .size = SZ_256K, 115 .offset = 0, 116 }, 117 [1] = { 118 .name = "params", 119 .offset = MTDPART_OFS_APPEND, 120 .size = SZ_128K, 121 }, 122 [2] = { 123 .name = "kernel", 124 .offset = MTDPART_OFS_APPEND, 125 .size = SZ_4M, 126 }, 127 [3] = { 128 .name = "roots", 129 .offset = MTDPART_OFS_APPEND, 130 .size = MTDPART_SIZ_FULL, 131 }, 132 };
8.将arch/arm/boot/uImage烧到开发板中
此时的内核还不支持yaff文件系统可以烧jffs2文件系统