折腾了3个晚上,今天21:58 U-boot终于在我的开发板上跑起来了。
最开始用的1.1.4版本,自己修改了程序,编译了s3c2410的u-boot.bin,但是不管是在ram中还是在flash中都不能运行。后经高人指点,u-boo
t好像不支持nand flash启动,我的板子是samsung k9f120800b 64M nand flash,需要在u-boot的前4K字节编写将u-boot拷贝到ram中的程序,
所以我想先从ram中把u-boot跑起来,这样也编译调试,毕竟通过usb写ram比写flash要快。
昨天在立宇泰电子下载了一个编译好的u-boot程序,可以写在nand flash中运行,他的是1.1.0版本的,所以今天编译了一个1.1.0版本u-boot
,同样不能在ram和flash里启动。
发现1.1.0的Makefile和1.1.4版本有很大不同,并且在1.1.4源码树中把s3c2410作为arm920t cpu的一种SOC。
晚上转战1.1.3版本u-boot,因为我觉得最新的版本一般都不好用。
发现include/configs/smdk2410.h中有这样一段:
/*
* If we are developing, we might want to start armboot from ram
* so we MUST NOT initialize critical regs like mem-timing ...
*/
#define CONFIG_INIT_CRITICAL /* undef for developing */
于是注释掉了这个宏定义,不去做initialize critical regs,编译,在ram中运行,串口打出:
U-Boot 1.1.3 (Mar 9 2006 - 20:22:29)
U-Boot code: 33F80000 -> 33F965B0 BSS: -> 33F9A898
RAM Configuration:
Bank #0: 30000000 64 MB
Flash: 512 kB
*** Warning - bad CRC, using default environment
In: serial
Out: serial
Err: serial
SMDK2410 # version
U-Boot 1.1.3 (Mar 9 2006 - 20:22:29)
SMDK2410 #
狂喜! ^_^
BTW:之前一定是在设置mem clock之类的地方出错了,导致u-boot没有输出。