最近闲着顺便看了看6410的uboot代码,由于友善的boot对nand部分代码作了隐藏,因此干脆找了光盘里面三星原厂的uboot代码来看,由于友善的boot代码确定也是基于厂商的代码改的,确定能够的。安全
安全起见,直接编译了三星的uboot代码,放到友善的板子上跑了一下,结果果真能够跑,可是发现起来以后,打印出来的dram size是0。编译器
今天查了一下,发现是DECLARE_GLOBAL_DATA_PTR这个定义的问题,友善的代码里面加了注释,说gcc4.5.1+版本对这个宏定义的定义已经不支持了!asm
uboot中原始定义以下:编译
#define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r8")变量
友善给改为了:gcc
#define DECLARE_GLOBAL_DATA_PTR extern gd_t *gd;gc
就是定义了全局变量!注释
改了以后,Dram的size就正常了。时间
查了查8127的uboot代码,发现仍然使用的uboot原始定义,等周一去公司看一下8127的uboot编译器的版本,目前暂时没法验证了。版本
继续,在公司验证了8127的uboot代码编译器的确是4.3.3版本的,接下来准备有时间看一下两个编译器编译出来的代码的差异。