RISC-Vでネットワークプログラム(nginxなど)を実行しようとしています。RISC-Vでネットワーク(ソケット)プログラムを実行する方法はありますか?
私はRISC-Vで利用可能なネットワークデバイスを認識していません。それを自分で実装したくないので、別の方法を探しています。
まず、指定されたアドレスにHTTPリクエストを送信する簡単なプログラムを実行しようとしました。 gethostbyname
を使用してIPアドレスを解決し、HTTP要求を送信します。
スパイクシミュレータでriscv-linuxをうまく実行し、プログラムをコンパイルして実行しました。 gethostbyname
はUnknown server error
を返し、IPアドレスを直接使用すると、connect
はNetwork is unreachable
エラーを返します。
フロントエンドサーバfesvr
は、RISC-Vプロセッサから転送されたシステムコールを処理でき、ネットワーク関連のシステムコールを処理すると考えられます。私もfesvr-eth
が見つかりました。それはネットワークサービスの処理に関連するものかもしれませんが、this linkによれば、PC上で実行中のfesvr
をイーサネットで開発ボードに接続するだけです。また、fesvr-eth
は最新のgitリポジトリから削除されました。
これで、Linuxのrisc-vを見て、それが実際にconnect
のようなネットワークシステムコールをどのように処理しているかを見てみたいと思います。ネットワークの操作がlocalhost
の内部でのみ行われていると、ネットワークデバイスなしで正しく処理できると思っています。または、ネットワークサービスを処理するためにfesvr
を簡単に拡張する方法があります。私は逃したことを、
- は、RISC-Vでのネットワークアプリケーションを実行するための方法がある:
質問を要約すると?
- ネットワークデバイスがない場合でも、同じホスト内からの要求であればネットワークサービスを実際に処理できますか?
- 他にも参考になる参考資料や参考資料はありますか?
ありがとうございました。私は 'busybox'に' ifconfig'アプレットを追加し、 'ifconfig lo:127.0.0.1 netmask 255.0.0.0 up'コマンドを使ってループバックネットワークを設定しました。それから私は単純なエコーサーバーとクライアントを走らせましたが、サーバーとクライアントはそれぞれ 'accept'と' connect'でハングアップしていました。ループバックネットワークは正しく設定されているようです。なぜなら、設定せずにプログラムを実行すると 'network unreachable 'で' connect'が失敗するからです。更新がある場合はコメントに追加します。 –