ARM Linux移植攻略之Linux 2.6.30.4移植TE2440II开发板

2014-11-24 09:15:11 · 作者: · 浏览: 0

步骤包括:


1)linux内核打上yaffs2补丁


2)修改机器码


3)修改目标板的arch和编译器路径,


4)增加devfs文件管理器支持


5)修改晶振频率


6)修改MTD分区


7)关闭ECC校验


8)修改nandflash驱动


9)配置内核


首先,从官网上下载linux-2.6.30.4的内核。
ftp://ftp.kernel.org/pub/linux/kernel/v2.6/
可以找到。


新建目录mkdir /home/haker,将内核源码包解压到hacker/目录下


tar –zxvf linux-2.6.30.4.tar.gz


1)给内核打jaffs2补丁


解压到/home/hacker/


tar –zxvf yaffs2.tar.gz


进入目录


cd yaffs2


给内核打补丁


./patch-ker.sh c /home/hacker/linux-2.6.30.4


加上c 他会自动解压到后面的目录中


成功后会打印信息:


Updating /home/hacker/linux-2.6.30.4/fs/Kconfig


Updating /home/hacker/linux-2.6.30.4/fs/Makefile


2)修改机器码


暂时我使用的是飞凌的boot,自己的boot还没有完全做好,飞凌boot的默认机器码是193,修改arch/arm/tools/mach-types,将


s3c2410 ARCH_S3C2410 S3C2410 193 删掉


然后将


s3c2440 ARCH_S3C2440 S3C2440 362


修改为
s3c2440 ARCH_S3C2440 S3C2440 193


3)修改目标板的arch和编译器路径


修改linux/2.6.30.4下的Makefile


ARCH = $(SUBARCH)


CROSS_COMPILE =


修改成


ARCH = arm


CROSS_COMPILE = /usr/local/arm/4.3.2/bin/arm-linux-


4)增加devfs文件管理器支持


修改fs/Kconfig,找到


menu “Pseudo filesystems”


添加


config DEVFS_FS


bool “/dev file system support (OBSOLETE)”


default y


config DEVFS_MOUNT


bool “Automatially mount at bool”


default


depends on DEVFS_FS


5)修改晶振频率


arch/arm/mach-s3c2440/mach-smdk2440.c


/*s3c24xx_init_clocks(16934400);*/ s3c24xx_init_clocks(12000000);


6)修改MTD分区,由于自己的uboot还没有完全做好,暂时用飞凌的boot的分区,


修改文件arch/arm/plat-s3c24xx/common-smdk.c


static struct mtd_partition smdk_default_nand_part[] = {


[0] = {


.name = "Boot",


.size = 0x00100000,


.offset = 0


},


[1] = {


.name = "MyApp",


.size = 0x003c0000,


.offset = 0x00140000,


},


[2] = {


.name = "Kernel",


.size = 0x00300000,


.offset = 0x00500000,


},


[3] = {


.name = "fs_yaffs",


.size = 0x03c00000, //60M


.offset = 0x00800000,


},


[4] = {


.name = "WINCE",


.size = 0x03c00000,


.offset = 0x04400000,


}


};


7)关闭ECC校验


文件drivers/mtd/nand/s3c2410.c


函数:s3c2410_nand_init_chip


/*chip->ecc.mode = NAND_ECC_SOFT; */ chip->ecc.mode = NAND_ECC_NONE;


这个有两个 软件校验和硬件校验都要关掉


8)修改nandflash驱动,修改drivers/mtd/nand下面的nand_bbt.c文件:


static struct nand_bbt_descr largepage_memorybased = {


.options = 0,


.offs = 0,


.len = 1, // 原数值为2,支持2K每页的flash修改为1K9F1G08K9F2G082k每页的flash


.pattern = scan_ff_pattern


};


static struct nand_bbt_descr largepage_flashbased = {


.options = NAND_BBT_SCAN2NDPAGE,


.offs = 0,


.len = 1, //原数值为2,支持2K每页的flash修改为1K9F1G08K9F2G082k每页的flash


.pattern = scan_ff_pattern


};


9)配置内核


make menuconfig



首先加载s3c24xx系列的通用配置,然后在此基础上修改








配置完后将配置文件保存为.config,这样方便下次make menuconfig时默认加载上次配置过的文件




交叉编译内核


make zImage


如果没有任何错误,编译出来的内核在arch/arm/boot/目录下,文件zImage即是。