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