2016-06-30 10 views
0

RISC-Vでネットワークプログラム(nginxなど)を実行しようとしています。RISC-Vでネットワーク(ソケット)プログラムを実行する方法はありますか?

私はRISC-Vで利用可能なネットワークデバイスを認識していません。それを自分で実装したくないので、別の方法を探しています。

まず、指定されたアドレスにHTTPリクエストを送信する簡単なプログラムを実行しようとしました。 gethostbynameを使用してIPアドレスを解決し、HTTP要求を送信します。

スパイクシミュレータでriscv-linuxをうまく実行し、プログラムをコンパイルして実行しました。 gethostbynameUnknown server errorを返し、IPアドレスを直接使用すると、connectNetwork is unreachableエラーを返します。

フロントエンドサーバfesvrは、RISC-Vプロセッサから転送されたシステムコールを処理でき、ネットワーク関連のシステムコールを処理すると考えられます。私もfesvr-ethが見つかりました。それはネットワークサービスの処理に関連するものかもしれませんが、this linkによれば、PC上で実行中のfesvrをイーサネットで開発ボードに接続するだけです。また、fesvr-ethは最新のgitリポジトリから削除されました。

これで、Linuxのrisc-vを見て、それが実際にconnectのようなネットワークシステムコールをどのように処理しているかを見てみたいと思います。ネットワークの操作がlocalhostの内部でのみ行われていると、ネットワークデバイスなしで正しく処理できると思っています。または、ネットワークサービスを処理するためにfesvrを簡単に拡張する方法があります。私は逃したことを、

  • は、RISC-Vでのネットワークアプリケーションを実行するための方法がある:

    質問を要約すると?

  • ネットワークデバイスがない場合でも、同じホスト内からの要求であればネットワークサービスを実際に処理できますか?
  • 他にも参考になる参考資料や参考資料はありますか?

答えて

0

現時点では、spikeもriscv-qemuもネットワークインターフェイスのモデルを提供していません。これらのツールを使用すると、ループバックデバイス(127.0.0.1)をプロセス間のネットワークに使用できます。ループバックネットワーキングは、OSカーネルによって直接実装されます。

他のアーキテクチャの場合、qemuは多数のネットワークオプションを提供します。 riscv-qemu/hw/riscv/riscv_board.cを変更して、これらの仮想ネットワークインタフェースの1つをエミュレートされたrisc-vシステムにインスタンス化することは、あまり難しいことではありません。

+0

ありがとうございました。私は 'busybox'に' ifconfig'アプレットを追加し、 'ifconfig lo:127.0.0.1 netmask 255.0.0.0 up'コマンドを使ってループバックネットワークを設定しました。それから私は単純なエコーサーバーとクライアントを走らせましたが、サーバーとクライアントはそれぞれ 'accept'と' connect'でハングアップしていました。ループバックネットワークは正しく設定されているようです。なぜなら、設定せずにプログラムを実行すると 'network unreachable 'で' connect'が失敗するからです。更新がある場合はコメントに追加します。 –

関連する問題