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