一> 准备移植 也可到官方网站http://www./获得最新版本的内核源码解压源码,进入目录:Linux-2.6.31 修改 Makefile: 183行: ARCH ?= arm 指定系统硬件架构 CROSS_COMPILE ?= arm-linux- 指定交叉编译器
修改时钟: 修改arch/arm/mach-s3c2440/mach-smdk2440.c 163行 static void __init smdk2440_map_io(void) { s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc)); s3c24xx_init_clocks(12000000); 输入时钟为 12MHz s3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs)); }
修改机器码(根据实际情况,这个要和bootloader的匹配): 修改:arch/arm/tools/mach-types 379行: s3c2440 ……………………… XXX 后面那个数就是机器码
配置: #make menuconfig 进入图形化配置界面 在配置菜单中选择这一项:“Load an Alternate Configuration File” 输入2440的默认配置文件:arch/arm/configs/s3c2410_defconfig 说明:这个文件就是 S3C24XX 系列开发板的板级支持包(BSP) 然后选择 OK,按回车 进入“System Type”选项单,里面的选项保持默认 在“S3C24XX Machine”选项中只配置这几项(其他的选项取消) S3C2410 Machine ---> [*] SMDK2410/A9M2410 S3C2440 Machine ---> [*] SMDK2440 [*] SMDK2440 with S3C2440 cpu moudle
配置完后,回到主菜单,选择这一项“Save an Alternate Configuration File”输入要保存的配置文件名称:.config (默认) 退出,编译内核: #make zImage 把zImage镜像烧进NandFlash跑一下,看是否正常打印出信息
注意,系统启动最后可能会出现这个错误: Kernel panic - not syncing: Attempted to kill init! 然后出打印出一些很乱的东西。 因为用4.X.X版本的交叉编译器使用EABI,但内核默认是不支持EABI编译的,所以编译出的系统会报错,但用3.X.X版本的编译器就不会出现这个问题。 解决办法是,配置内核支持EABI编译 Kernel Features ---> [*] Use the ARM EABI to compile the kernel [*] Allow old ABI binaries to run with this kernel (EXPERIMENTA)
二> 支持 NandFlash: 修改同时支持64M,256M:arch/arm/plat-s3c24xx/common-smdk.c文件在第110行 static struct mtd_partition smdk_default_nand_part[] = { #if defined(CONFIG_64M_NAND) [0] = { .name = "boot", .offset = 0, .size = SZ_1M, }, [1] = { .name = "kernel", .offset = SZ_1M + SZ_128K, .size = SZ_4M, }, [2] = { .name = "yaffs2", .offset = SZ_1M + SZ_128K + SZ_4M, .size = SZ_64M - SZ_4M - SZ_1M - SZ_128K, } #elif defined(CONFIG_256M_NAND) [0] = { .name = "boot", .offset = 0, .size = SZ_1M, }, [1] = { .name = "kernel", .offset = SZ_1M + SZ_128K, .size = SZ_4M, }, [2] = { .name = "yaffs2", .offset = SZ_1M + SZ_128K + SZ_4M, .size = SZ_256M - SZ_4M - SZ_1M - SZ_128K, } #endif }; 这个分区名字可以随便起。 修改 Kconfig 文件,在配置时选择 NAND 类型,修改driver/mtd/nand/Kconfig,在172行,添加:
choice prompt "Nand Flash Capacity Select" depends on MTD
config 64M_NAND boolean "64M NAND For TX-2440A" depends on MTD
config 256M_NAND boolean "256M NAND For TX-2440A" depends on MTD
endchoice
配置内核,支持NandFlash Device Drivers ---> <*> Memory Technology Device (MTD) support ---> [*] MTD partitioning support <*> NAND Device Support ---> <*> NAND Flash support for S3C2410/S3C2440 SoC [*] S3C2410 NAND Hardware ECC //这个一定要选上 Nand Flash Capacity Select(256M Nand For TX-2440A)--->
三> 支持 yaffs2 文件系统 下载yaffs2源码 解压,进入yaffs2目录: #tar xzvf yaffs2.tar.gz #cd cvs/yaffs2/ 给内核打上yaffs2文件系统的补丁,执行: #./patch-ker.sh c /………/linux-2.6.31/ 这个是你的内核源码的目录
这时内核源码 fs 目录下多了一个 yaffs2 目录,同时 Makefile 文件和 Kconfig 文件也增加了yaffs2的配置和编译条件。 配置对 yaffs2 支持: 这部分配置的比较多,可根据自己的需要进行配置,把不用的文件系统都去掉, 下面是几个主要的配置: File systems ---> DOS/FAT/NT Filesystems ---> <*> MSDOS fs support <*> VFAT (Windows95) fs support Miscellaneous filesystems ---> <*> YAFFS2 file system support [*] Autoselect yaffs2 format 说明:现在内核已经支持 NandFlash 和 yaffs2 文件系统,将内核烧入NandFlash后,再烧入 yaffs2文件系统
补丁文件 文件:linux-2.6.31.rar大小:161KB下载:下载
|
|