開發板運行U-Boot,在終端下使用Ping命令是能Ping通PC機,但PC機Ping不同U-Boot。
在開發行U-Boo下的Ethernet 驅動時,只能在Target上去Ping 外面的主機能檢測以太網是否連通,如果在外面的主機上去ping目標板,則即使目標板上的Ethernet一切OK,也是ping 不通的。這是因為行U-Boo是一個單線程main_loop函數+中斷處理的架構,中斷處理程序處理串口輸入輸出等,main_loop解析U-Boot命令, 並沒有另外的任務接受並處理ICMP的包,即使U-Boot支持ICMP的協議棧。
U-Boot的Ping是通過一個NETLOOP發送和接受ARP包的!LOOP會不斷的檢測是否接受到ARP REPLY。所以可以Ping通PC。但是U-Boot模式下是單線程的,總不會老是停在那裡檢測是否有ARP 。PC Ping通U-Boot的前提是:U-Boot存在一個類似於ARP請求響應的守護進程。
相關閱讀:U-Boot源代碼下載地址 http://www.linuxidc.com/Linux/2011-07/38897.htm