分类: LINUX
2009-07-19 17:12:58
1.修改Makefile,匹配交叉编译器。
在内核代码根目录下:
vim
Makefile
在193行找到ARCH
修改为
ARCH
= arm
CROSS_COMPILE ?=
/usr/local/arm/3.4.1/bin/arm-linux-
CORSS_COMPILE视自己的环境定
保存
2.然后将
cp
arch/arm/configs/s3c2410_defconfig .config
3.执行:make
menuconfig
但是可能出现如下错误。
make: *** /home/jimmy/source/linux-2.6.13/arch/arm: 是一个目录。 停止。
这是因为你在没有修改Makefile之前就执行了make menuconfig
这时就生成一些pc版本的linux的配置导致错误。
解决方法:
执行make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig
或者删除源文件,重新解压后修改Makefile然后执行make menuconfig
这个时候可以不执行任何设置,保存即可。
然后make ARCH=arm CROSS_COMPILE=arm-linux- zImage
4.make zImage
5.下载到板子:即将arch/arm/boot/zImage下载到板子。
运行时终端出现如下信息:
zImage magic = 0x016f2818
Setup linux parameters at 0x30000100
linux command line is: "noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttyS"
MACH_TYPE = 782
NOW, Booting Linux......
Uncompressing Linux.............................................................
Error: unrecognized/unsupported machine ID (r1 = 0x0000030e).
Available machine support:
ID (hex) NAME
0000014b Simtec-BAST
0000015b IPAQ-H1940
00000290 Acer-N30
000000c1 SMDK2410
0000016a SMDK2440
000001db Thorcom-VR1000
00000250 IPAQ-RX3715
000002a8 Nex Vision - Otom 1.1
000002a9 NexVision - Nexcoder 2440
Please check your kernel config and/or bootloader.
出现此错误,是因为kernel里的MACH_TYPE_SMDK2410和bootloader传递过来的不一样。
修改方法:
一:
修改vivi
二:修改内核
由于我们现在是移植内核,于是采用第二种。
Kernel中 MACH_TYPE_SMDK2410在include/asm-arm/mach_type.h中定义了 #define MACH_TYPE_SMDK2410 193
将其修改为
#define MACH_TYPE_SMDK2410 782 保存然后重新照上面的步骤编译即可。 重新下载内核到板子,得到如下运行结果: IP route cache hash table entries: 1024 (order: 0, 4096 bytes) TCP established hash table entries: 4096 (order: 3, 32768 bytes) TCP bind hash table entries: 4096 (order: 2, 16384 bytes) TCP: Hash tables configured (established 4096 bind 4096) TCP reno registered TCP bic registered NET: Registered protocol family 1 Root-NFS: No NFS server available, giving up. VFS: Unable to mount root fs via NFS, trying floppy. VFS: Cannot open root device "mtdblock2" or unknown-block(2,0) Please append a correct "root=" boot option Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0) 出现这个错误是因为我们的根文件系统是yaffs,而我们的内核没有yaffs的驱动,故加载不了,这个是明天要做的了,今天的任务如果运行到此就是完成了。