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版本的,接下來準備有時間看一下兩個編譯器編譯出來的代碼的差異。

相關文章
相關標籤/搜索