第1步,改对硬件平台的支持
arm的架构
gedit Makefile
ARCH?=$(SUBARCH)
CROSS_COMPILE?=
改成:
ARCH?= arm
CROSS_COMPILE?= arm-linux- //(编译器前缀根据自己的编译器来定,详见编译工具链的bin目录下的命令统一前缀)
2、改平台时钟
gedit arch/arm/mach-XXX/mach-XXX.c //看你的开发板上外接的晶振是多少
3、改机器码
gedit arch/arm/tools/mach-types
4、移植nandflash驱动,改MTD分区
gedit arch/arm/plat-XXX/commond-smdk.c //根据bootlorder里面的分区情况进行更改
机器码和nand flash的分区呢,就要看你的vivi在开发板上显示的信息作相应的更改
将开发板连接上电脑,启动超级终端
进入supervivi模式
输入以下命令:
param show //查看机器码
part show //查看分区
5、在 arch/arm/tools/mach-type 中XXX(eg:s3c2440)的机器码一定要与vivi 中的一致
Vivi中param show查看
6、改MTD分区
在 arch/arm/plat-XXX/common-smdk.c 中修改
Vivi 中 part show –显示以下参数
bootloader中的分区要与内核中的分区完全一致,包括分区名、起始地址、分区大小,保证内核、文件系统能够烧写到nandflash中
定制内核:
首先复制arch/arm/configs/里面相同/相近平台的通用配置
cp arch/arm/configs/s3c2410_defconfig .config
Kernel Features --->
[*] Use the ARM EABI to compile the kernel
[*] Allow old ABI binaries to run with this kernel (EXPERIMENTA)
支持 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-24
还有别的以下定制
gedit drivers/mtd/nand/s3c2410.c
找到chip->ecc.mode = nand_ECC_SOFT 改为NONE
接着就是添加yaffs2的文件系统的支持,当然你也可以选别的
arm的架构
arm-linux-gcc的编译方式
第2步,平台时钟
只有选择了相对应得平台时钟才能正常的工作
第3步,硬件分区的支持
就是nand flash驱动的移植
linux内核的移植中,要更改的大部分设置都在 arch/架构/ 目录下
1、先添加对arm的支持
gedit Makefile
ARCH?=$(SUBARCH)
CROSS_COMPILE?=
改成:
ARCH?= arm
CROSS_COMPILE?= arm-linux- //(编译器前缀根据自己的编译器来定,详见编译工具链的bin目录下的命令统一前缀)
2、改平台时钟
gedit arch/arm/mach-XXX/mach-XXX.c //看你的开发板上外接的晶振是多少
3、改机器码
gedit arch/arm/tools/mach-types
4、移植nandflash驱动,改MTD分区
gedit arch/arm/plat-XXX/commond-smdk.c //根据bootlorder里面的分区情况进行更改
机器码和nand flash的分区呢,就要看你的vivi在开发板上显示的信息作相应的更改
将开发板连接上电脑,启动超级终端
进入supervivi模式
输入以下命令:
param show //查看机器码
part show //查看分区
5、在 arch/arm/tools/mach-type 中XXX(eg:s3c2440)的机器码一定要与vivi 中的一致
Vivi中param show查看
6、改MTD分区
在 arch/arm/plat-XXX/common-smdk.c 中修改
Vivi 中 part show –显示以下参数
bootloader中的分区要与内核中的分区完全一致,包括分区名、起始地址、分区大小,保证内核、文件系统能够烧写到nandflash中
定制内核:
首先复制arch/arm/configs/里面相同/相近平台的通用配置
cp arch/arm/configs/s3c2410_defconfig .config
或
make s3c2410_defconfig
make menuconfig
Kernel Features --->
[*] Use the ARM EABI to compile the kernel
[*] Allow old ABI binaries to run with this kernel (EXPERIMENTA)
支持 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-24
还有别的以下定制
system type -> 2410/arm92410
gedit drivers/mtd/nand/s3c2410.c
找到chip->ecc.mode = nand_ECC_SOFT 改为NONE
接着就是添加yaffs2的文件系统的支持,当然你也可以选别的
如果选择yaffs2的话,在网上下载一个yaffs2源码,
进入,执行
./patch-ker.sh c /home/test/linux-2.6.32.2/ //后面是你自己的linux源码的位置,注意最后面的/不要忘了, 添加完成后,make zImage 内核就算移植完成了。
如果遇到什么问题的话,就具体问题具体分析了。