Linux内核到fl2440(s3c2440)移植(1)

本文档详细介绍了如何将Linux内核2.6.22.6移植到fl2440(S3C2440)平台,包括修改U-Boot、内核Makefile、时钟频率、MTD分区、添加YAFFS文件系统支持、构建根文件系统以及DM9000网卡驱动的移植。步骤涉及配置参数、编译选项和代码修改,为读者提供了一个完整的移植流程。
摘要由CSDN通过智能技术生成

/*2010.12.08--2010.12.24*/
/*kernel(linux-2.6.22.6)--到fl2440(s3c2440)移植(1)*/
/*操作系统: ubuntu-10.10*/
/*交叉编译工具: 编译uboot-1.1.4用cross-3.3.2.tar.bz2 ; 编译linux2.6.22.6用cross-3.4.1.tar.bz2*/

 

1.修改uboot1.1.4:
   (1) vi include/asm-arm/mach-types.h 添加:
#define MACH_TYPE_SMDK2440              362 /*和linux2.6.22.6中arch/arm/tools/mach-types中s3c2440序号对应*/

 

   (2) vi board/fl2440/fl2440.c
115行(gd->bd->bi_arch_number = MACH_TYPE_SMDK2410;)改为:
gd->bd->bi_arch_number = MACH_TYPE_SMDK2440;

 

   (3) vi include/configs/fl2440.c
添加:
#define CONFIG_SETUP_MEMORY_TAGS        1   /*允许向内核传递内存分布信息*/
#define CONFIG_CMDLINE_TAG      1   /*允许向内核传递命令行参数*/
#define CONFIG_BOOTCOMMAND "tftp 0x32000000 uImage;bootm 0x32000000"   /*通过TFTP下载主机上的uImage到开发板内存0x32000000,并启动内核*/
#define CONFIG_BOOTARGS         "noinitrd root=/dev/nfs nfsroot=192.168.0.22:/home/arm/rootfs ip=192.168.0.11:192.168.0.22:192.168.0.33:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0,115200"  /*给内核的参数,参数意义可参考内核源码下的Documentation/nfsroot.txt*/

 

2.修改linux-2.6.22.6顶层Makefile:
   185行:ARCH            ?= $(SUBARCH) -> ARCH            ?= arm
   186行:CROSS_COMPILE   ?= -> CROSS_COMPILE   ?= arm-linux-

 

3.vi arch/arm/mach-s3c2440/mach-smdk2440.c
s3c24xx_init_clocks(16934400); -> s3c24xx_init_clocks(12000000); /*外部晶振12MHz*/

 

4.修改MTD分区:
vi arch/arm/plat-s3c24xx/common-smdk.c
修改smdk_default_nand_part函数为:

5.添加yaffs文件系统支持:
tar zxvf yaffs_source.tar.gz   /*产生Development目录*/
cd Development/yaffs2/
./patch-ker.sh c ~/dev_home/kernel/linux-2.6.22.6/

配置内核(make menuconfig):
File systems-->Miscdllaneous filesystems--><*>YAFFS2 file system support
 

   到此内核已经可以跑了,只是因为缺少根文件系统所以最终会产生panic信息!


6.移植根文件系统:
   (1)建立根文件系统目录:
cd ~
mkdir rootfs
chmod 777 rootfs

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值