2013-10-16 23 views
0

我的問題是以太網/套接字調用。在Linux中,我們有sendto和recvfrom調用來發送和接收來自通過以太網連接的外部設備的數據。現在我正在U-Boot上執行我的代碼作爲獨立應用程序。我需要替換這些獨立於OS的套接字調用。U-Boot上的以太網驅動程序API

U-Boot中是否提供了API /驅動程序,以便我可以直接使用它們並將數據傳輸到目標板和從目標板傳輸數據?如果是這樣,我應該檢查處理器特定的驅動程序?我無法找到它。 我正在使用的主板是基於MPC8548E處理器的自定義主板。

回答

0

的U-Boot獨立API確實支持原料以太網分組eth_send()和eth_receive()。但是,這比Linux套接字的功能少得多。

UDP協議,例如DHCP和TFTP在U-Boot命令中實現(儘管這些協議不會在獨立API中導出)。如果你需要更多的功能,例如TCP,你可能需要一個操作系統,例如Linux,而不是U-Boot。

理想情況下,現有的命令會做你所需要的。例如,您可以在通過命令行調用的獨立應用程序中組合文件內容,然後使用現有的命令tftpboot傳輸該文件。或者你可以在u-boot內部實現自定義命令而不是獨立的應用程序;你可以複製/粘貼現有​​協議的實現。

如果您確實追求獨立應用程序,請參閱examples/api/demo.c。這顯示了獨立API的功能和侷限性。如果你有自定義的u-boot的源代碼,demo.bin將在編譯輸出中(確保你在你的電路板config.h中有#define CONFIG_API),它可以在你的電路板上加載/運行MODS。對於eth接口,它將使用ethact,並且會發送一個填充了00的數據包。板特定的驅動程序已經在您的u-boot中。

+0

請在上面看到我的回答.....總字符數更多,所以我發佈了答案而不是評論。 – user2794645

0

的U-Boot獨立API不支持原始的以太網分組 eth_send()和eth_receive()。 但是,這比Linux套接字的功能少得多。

這一點我更感興趣。據我瞭解,我們可以從U-Boot中導出函數eth_send()和eth_receive()函數,並將它們用於獨立應用程序。對? 功能較少,這是什麼意思?通過使用Linux套接字,我傳輸了原始的以太網幀。這是按照以下鏈接完成的: http://aschauf.landshut.org/fh/linux/udp_vs_raw/ch01s03.html 使用eth_send和eth_receive函數在這裏無法實現類似的功能嗎? 我做了我的獨立應用程序是: 創建一個無符號字符緩衝區與60個元素,並嘗試通過調用eth_send()像這樣發送它們: ethSendVar = eth_send(txFrame,60); 這是正確的方法嗎?當我這樣做時,板子在代碼中我調用eth_send()的地方自動重置。

理想情況下,現有的命令會做你所需要的。 例如,您可以在通過命令行調用的獨立應用程序 中彙編文件內容,然後使用現有命令tftpboot傳輸該文件。 或者您可以在 u-boot內部實現自定義命令,而不是獨立應用程序;你可以從現有協議的實現中複製/粘貼 。

這實際上目前沒有興趣。我應該只能從應用程序發送和接收。