主机:FC9
交叉编译器:arm-linux-gcc-4.3.2
开发板平台:公司的产品2440CPU
这周一口气移了linux2.6.25.14 2.6.26 2.6.29到公司的板子上,前两个都能正常跑到文件系统进入终端,运行个驱动和应用的helo world;移植2.6.29时提示没有串口终端,需要检查init内核字符串,这个还没搞定。貌似2.6.26以后集成了DM9000,想下个内核验证一下,顺便确定一下yaffs2的官方源码获取方法,或者自己修改···
一、内核源码修改
1.修改顶层Makefile文件
2,修改机器码
arch/arm/tools/mach-types
arch/arm/mach-s3c2440
根据uboot传入的数据设置
3.修改时钟,不修改超级终端中会出现乱码
根据硬件外置时钟设置
4.修改对nand的分区信息。
arch/arm/plat-s3c24xx/common-smdk.c
5.修改nand Flash的校验方式,去掉ECC校验。
drivers/mtd/nand/s3c2410.c
在669行左右 NAND_ECC_NONE
6.文件系统支持
安装git
yum install git
获取最新yaffs2源码
git clone git://www.aleph1.co.uk/yaffs2
打补丁到自己的内核路径下
./patch-ker.sh c m ../linux-3.0.2
说明:内核自带DM9000驱动,不用移植了,根据自己的硬件修改配置就可以
二、内核配置
make s3c2410_defconfig
make menuconfig
System Type ---->
[*] S3C2410 DMA support
S3C2410 Machines --->
[*] SMDK2410/A9M2410
S3C2440 Machines --->
[*] SMDK2440
[*] SMDK2440 with S3C2440 CPU module
(2)S3C UART to use for low-level messages (new)
要选择串口2 对应我公司的配置
Kernel hacking-->
(2)S3C UART to use for low-level debug
要选择串口2 对应我公司的配置
Boot option ----->
noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC2,
115200
根据实际需要配置
Device Drivers --->
<*> Memory Technology Device (MTD) support --->
[*] MTD partitioning support
<*> NAND Device Support --->
<*> NAND Flash support for S3C2410/S3C2440 SoC
[ ] S3C2410 NAND Hardware ECC //这个要去掉
[*] Network device support --->
[*] Ethernet (10 or 100Mbit) --->
<*> DM9000 support
这个是系统自带的
Kernel Features ->
[*]Use the ARM EABI to compile the kernel
[*] Allow old ABI binaries to run with this kernel
Filesystem -->
屏蔽 EXT2 EXT3相关
打开自动挂载ramfs等
选中yaffs2
Drivers-->
根据板子的实际情况配置
三、内核编译与模块安装
1、Make
生成zImage文件供下载,确认生成的文件没有比分配给他的分区大
2、Make modules
生成模块
3、Make modules_install
安装模块,用于驱动开发用,在/lib/modules下会生成3.0.2的文件夹。参考代码看LDD3。
四、下载运行
五、