Signal # 8 caught的問題:
網上可以找到資料說是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。