【转帖】详述linux.-2.6.33内.核在飞凌2440开发板的移植.
本文转引自飞凌BBS:
http://bbs.witech.com.cn/thread-468-1-1.html学习
宿主机:ubuntu9.04
目标机:飞凌OK2.440开发板外贸
交叉编译器:arm-lin.ux-gcc-3.4.1.
交.叉编译器路径:/usr/local/arm/3..4.1.
要移植的内核版.本:linux-2.6.33.
文.件系统类型: yaffs2 (目前使.用光盘中linux-2.6.28.7的文件系统)电影
欢迎大.家一起讨论,请各位指正。另外请回帖的各位老师、同学、工程师写清楚移植过程。如果只是.通篇的问题,很难判断哪里有问题。.
下载解压内核
首先,从官网.上下载linux-2.6.33的内.核。学习
ftp://ftp.kernel.org/pub/linux./ker.nel/v2.6/可以找到。.
新建目录mkdir /file/fl。将内核源码包拷.贝到/file/f.l的目录下。服务器
解压源码包
tar zxvf .linu.x-2.6.33.tar.gz 健康
移植yaffs2驱动
下载最新的驱动
http://www.aleph1.co.uk/cgi-bin/ ... fs2.tar.gz?view=tar 乙肝
解压在/file/fl下
tar zxvf yaffs2.t.ar.gz(广告)
进入yaffs2,
cd yaffs2
给内核打补丁
./patch-ker.sh c ./fil.e/fl/linux-2.6.33 美容
成功后打印信息
U.pdating /file/fl/linux-.2.6.33/fs/Kconfig.
Updating /file/f.l/linux-2.6.33/fs/Make.file服务器
修改机器码
飞.凌开发板的bootloader默认的机器码是193,所以我们在使用smdk.2440机器的时候,需要修改机器码。修改arch/arm./tools/mach-types。将.
s3c2410 . AR.CH_S3C2410 S3C2410 193( 游戏 )
s3c2440 . ARCH_S3C2440 S3C2440 3.62 汽车
s3c24.40 ARCH_.S3C2440 S3C2440 193 乙肝
指定目标板machine、编译器和编译器路.径电影
修改linux-2.6.33/Make.file,将 汽车
ARCH . ?= $(SUBARCH.)服务器
CRO.SS_COMPILE ?= .
修改成
#ARCH. ?= $.(SUBARCH)虚拟主机
#CROSS_COMPILE ?.=电脑
ARCH . . ?= arm 外汇
CROSS_COMPILE ?= /usr/local/arm/3..4.1/.bin/arm-linux- 健康
增加devfs文.件管理器的支持外贸
我们所用的文件系统使用的是d.evfs文件管理器。修改.fs/Kconfig,--- 印刷
找到
menu "Pseudo fi.lesystems".
添加如下语句:
co.nfig DEVFS_FS健康
boo.l "/dev file sy.stem support (OBSOLETE)" 女人
default y . 健康
config DEVFS_MOUN.T 汽车
bool "Automat.ica.lly mount at boot"(广告)
default y
depends on DEVFS_.FS.
修改晶振频率( 可解决打印信息乱码问.题 ).
文件:arch/arm/mach-s3c2440/.mach-smd.k2440.c 婚庆
/*s.3c24xx_init_clocks(16934400);*/ s3c24xx_init_clocks(12.000000); 电脑
修改MTD分区
文件: arch/ar.m/plat-s3c24xx/common.-smdk.c .
需要和bootloader.中的分区信息相同(128M),否则.,启动时出错。外贸
static struct mtd_partition. smdk_default_nan.d_part[] = { 外汇
. [0] = {虚拟主机
. .name . = "Boot",.
. .si.ze = 0x00100000,学习
.. .offset = 0 鲜花
},
. [1] = {.
. .name = "MyA.pp", 女人
.size . . = 0x003c0000,.
.offset = 0x.0.0140000,外贸
},
. [2] = {( 游戏 )
.name = "K.ernel.",教育
. . .size = 0x00300000,.
.offse.t .= 0x00500000, 乙肝
},
[3] .= {.
.n.ame . = "fs_yaffs",.
.. .size = 0x03c00000, //30M教育
. .offset = 0x0080000.0, 杀毒
},. .
[4.] = {投资
.name . .= "WINCE",.
. .size = 0x03c00.000, 健康
.of.f.set = 0x04400000,域名
}
};
关闭ECC校验
文件:drivers/mtd/nand/..s3c2410.c服务器
函数:s.3c2410_nand_init_chip投资
/*chip->ecc.mode = NAND_ECC_S.OFT; */ chip->ecc.mode = NAND._ECC_NONE; 婚庆
修改nandflash驱动,.支持.K9F1G08的nandflash 健康
修改drivers/mtd/nand下面的nand._.bbt.c文件:.
static struct nand_bbt_d.escr. largepage_memorybased = {.
.options .= 0,--------------彩票
.off.s = 0, 汽车
.len = 1, // 原数值为.2,支持128.M的K9F1G08修改为1 女人
.patte.r.n = scan_ff_pattern学习
};
static s.truct nand_bbt_descr l.argepage_flashbased = { 美容
.options = NA.ND_BBT_SCAN2ND.PAGE, 汽车
. .offs = 0,.
.le.n = .1, // 原数值为2,支持128M的K9F1G08修改为1虚拟主机
.. .pattern = scan_ff_pattern 婚庆
};
下面,开始配置内核。
进.入linux-2.6.33目录,把s3.c2410的默认配置写入config文件。.
m.ake s3c2410_defconfig投资
配置文件系统选项
配置yaffs2文件系统
修改配置如下:
File sys.tems ---> 健康
Mi.scell.aneous filesystems --->--- 印刷
<*> YAFFS2. file s.ystem support .
. -*- 512 byte / page dev.ices 女人
-*- . 2048 byt.e (or larger) / page devices .
. 学习
Aut..oselect yaffs2 format 电脑
. 外汇
Cache s.hort names i.n RAM.
配置cpu相关选项
修改配置如下:
System Type --->. (广告)
. S3C2440 Machines ---.> .
SMDK2440
S.MDK2.440 with S3C2440 CPU module 杀毒
如果现在编译内核,下载到开发板中,内核就可以正常启动了。呵呵,有了雏形,咱们继续.移植设备.驱动。.