0

私の問題は、イーサネット/ソケット呼び出しにあります。Linux では、イーサネット経由で接続された外部デバイスからデータを送受信するための sendto および recvfrom 呼び出しがあります。現在、U-Boot でコードをスタンドアロン アプリケーションとして実行しています。OSに依存しないはずのこれらのソケット呼び出しを置き換える必要があります。

直接使用してターゲット ボードとの間でデータを転送できるように、U-Boot で提供される API/ドライバーはありますか? その場合、プロセッサー固有のドライバーはどこで確認すればよいですか? 私はそれを見つけることができません。私が使用しているボードは、MPC8548E プロセッサに基づいてカスタマイズされたものです。

4

2 に答える 2

0

U-Boot スタンドアロンAPIは、生のイーサネット パケット eth_send() および eth_receive() をサポートしています。ただし、これは Linux ソケットよりもはるかに少ない機能です。

DHCP や TFTP などの UDP 経由のプロトコルは、U-Boot コマンドで実装されます (ただし、これらのプロトコルはスタンドアロン API ではエクスポートされません)。TCP など、それ以上の機能が必要な場合は、おそらく U-Boot ではなく Linux などの OS が必要になるでしょう。

理想的には、既存のコマンドで必要なことを実行できます。たとえば、コマンド ラインから呼び出されたスタンドアロン アプリでファイル コンテンツをアセンブルし、既存のコマンド tftpboot を使用してファイルを送信できます。または、スタンドアロン アプリではなく、u-boot 内にカスタム コマンドを実装することもできます。既存のプロトコルの実装からコピー/貼り付けできます。

スタンドアロン アプリケーションを追求する場合は、examples/api/demo.cを参照してください。これは、スタンドアロン API の機能と制限を示しています。カスタマイズした U-Boot のソース コードがある場合、demo.bin はビルド出力に含まれ (ボードの config.h に #define CONFIG_API があることを確認してください)、それ以上何もせずにボードにロード/実行することができます。改造。eth インターフェイスの場合、ethact を使用し、00 で満たされたパケットを送信します。ボード固有のドライバーは、u-boot に既に含まれています。

于 2013-10-18T20:22:56.920 に答える