第一步,应该是修改对硬件平台的支持。
首先的应该是arm架构,arm-linux-gcc的编译方式的支持
第二步就是平台时钟和机器码了,只有选择了相对应得平台时钟才能正常的工作。
第三步就是对硬件分区的支持了,也可以说是nand flash驱动的移植。
第四步是对yaffs2的文件系统的支持
在linux内核的移植中,你所要更改的大部分设置都在arch/arm 目录下
1。先添加对arm的支持
gedit Makefile
ARCH?=$(SUBARCH)
CROSS_COMPILE?=
改成:
ARCH?=arm
CROSS_COMPILE?=arm-linux-
2。修改平台时钟
gedit arch/arm/mach-s3c2440/mach-smdk2440.c
找到数字16930000改为12000000
3.修改机器码
gedit arch/arm/tools/mach-types
将S3C2440 后面的数字改为1999
将MINI2440后面的数字改为362
4移植nandflash驱动
gedit arch/arm/plat-s3c24xx/commond-smdk.c
根据bootlorder 里面的分区情况进行更改
平台时钟要看你的开发板上外接的晶振是多少,
机器码和nand flash的分区呢,就要看你的vivi在开发板上显示的信息作相应的更改了
将开发板连接上电脑,启动超级终端
进入supervivi模式
输入以下命令
param show 查看机器码
part show 查看分区
5。 在 arch/arm/tools/mach-type 中s3c2440的机器码一定要与vivi 中的一致
Vivi中 param show –显示一小参数
6,修改MTD分区
在 arch/arm/plat-s3c24xx/common-smdk.c 中修改
Vivi 中 part show –显示以下参数
bootloader中的分区要与内核中的分区完全一致,包括分区名、起始地址、分区大小,比保
证内核、文件系统能够烧写到nandflash中
接下来就是对内核的定制了
首先复制一下对于S3C2410/2440的通用配置
注意:在执行make menuconfig 之前一定要先执行下面这一步
cp -rf arch/arm/configs/s3c2410_defconfig .config
make menuconfig
支持EABI
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 ->
找到 S3C2400 Machines ---> │ │
│ │ S3C2410 Machines ---> │ │
│ │ S3C2412 Machines ---> │ │
│ │ S3C2440 Machines ---> │ │
│ │ S3C2442 Machines ---> │ │
│ │ S3C2443 Machines --->
出去S3C2410Machines中的第一项和S3C2440Machines中全部选项留下外,
其余的全部去掉。
接着
去掉软浮点检测
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 内核就算移植完成了。如果遇到什么问题的话,就具体问题具体分析了。