s5p6818開發板uboot網絡開通


手上的開發板網絡默認是不通的,但是通過閱讀uboot源碼,發現uboot源碼中,是有對這個網絡的初始化的實現的函數的,只不過是沒有調用而已,所以,要手動調用這個函數,把板子的網絡調通:

首先是遇到了這個定義:

1 static int __def_eth_init(bd_t *bis) 2 { 3     return -1; 4 } 5 int cpu_eth_init(bd_t *bis) __attribute__((weak, alias("__def_eth_init")));  6 int board_eth_init(bd_t *bis) __attribute__((weak, alias("__def_eth_init")));
__attribute__這個東西是gnu的產物來的,是特有的語法,上述語句可以了解為:
  weak是弱定義的意思,alias是給某些東西起一個別名
  意思是如果cpu_eth_init(bd_t *bis)沒有進行定義,這個函數就是實現后面這個__def_eth_init(bd_t *bis)的函數;
通過閱讀源碼可以知道,cpu_eth_init(bd_t *bis)可以定義,調用已經有的函數:
  
 1 int GEC6818_board_eth_init(bd_t *bis)
 2 {
 3 #if defined(CONFIG_DESIGNWARE_ETH)
 4     u32 interface;
 5     int num = 0;
 6     nxpmac_init();
 7     interface = PHY_INTERFACE_MODE_RGMII;
 8 
 9     if (designware_initialize(CONFIG_DWCGMAC_BASE, interface) >= 0)
10         num++;
11 
12     return num;
13 #endif  /* CONFIG_DESIGNWARE_ETH */
14 }

這個是對板子的eth進行初始化

1 #include <netdev.h>
2 int board_eth_init(bd_t *bis)
3 {
4     int ret = 0;
5     ret  =  GEC6818_board_eth_init(bis);
6     eth_init(bis);
7 }

這個先是進行這個函數GEC6818_board_eth_init();進行網絡的登記,然后再進去eth_init()函數,進行全局的初始化;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM