DECLARE_GLOBAL_DATA_PTR宏定义问题

 

  最近闲着顺便看了看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版本的,接下来准备有时间看一下两个编译器编译出来的代码的差异。

相关文章
相关标签/搜索