网上可以找到资料说是arch/arm/cpu/arm1176/s3c64xx/timer.c里面的变量因为版本差异而不同的问题
打补丁的方法:
正确的为timer1.c,需要修改的为timer.c
diff timer.c timer1.c > timer.patch
patch ./timer.c < timer.patch
打完补丁后编译可能会发现有提示关于timer的结构体及函数没有定义,这是因为新的timer.c里面的结构体定义跟#include <asm/arch/s3c6410.h>定义的不一样,主要就是大小写的问题。在这里我找了个新的S3C6410.h,里面关于外设寄存器的定义比原来从SMDK6400拷贝而来的那个smdk6410.h要全面的得多。
另外如果在driver/serial/s3c64xx.c里面也有结构体或函数未定义的问题。修改成和smdk6410.h里面一样就可以了。
打完补丁,屏蔽掉hang();
编译后下载运行:
U-Boot 2012.10 (Nov 06 2012 - 15:10:19) for SMDK6410
CPU: S3C6410@533MHz
Fclk = 533MHz, Hclk = 133MHz, Pclk = 66MHz (ASYNC Mode)
Board: SMDK6410
DRAM: 256 MiB
WARNING: Caches not enabled
Flash: *** failed ***
NAND: No oob scheme defined for oobsize 218
2048 MiB
*** Warning - bad CRC, using default environment
In: serial
Out: serial
Err: serial
Net: CS8900-0
Hit any key to stop autoboot: 0
SMDK6410 #
可以看到u-boot已经运行起来了,但有个NAND: No oob scheme defined for oobsize 218的提示。而且网卡的驱动不对,ok6410开发板上的网卡芯片是DM9000而非cs8900,所以要修改驱动,使其支持DM9000。