2016-06-30 18 views
0

我想在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回購中刪除。

所以現在我想看看risc-v linux,看看它是如何處理像connect這樣的網絡系統調用。我想也許如果網絡操作只在localhost內完成,那麼可以在沒有網絡設備的情況下正確處理它。或者可以通過簡單的方式來擴展fesvr以處理網絡服務。

總結問題:

  • 有沒有辦法運行在RISC-V的網絡應用,我錯過了什麼?
  • 如果請求來自同一主機,即使沒有網絡設備,網絡服務是否可以實際處理?
  • 任何其他可能有用的評論或引用?

回答

0

目前,spike和riscv-qemu都不提供網絡接口模型。使用這兩種工具,您將能夠使用環回設備(127.0.0.1)在進程間進行聯網。環回網絡由OS內核直接實現。

對於其他體系結構,qemu提供了大量網絡選項。修改riscv-qemu/hw/riscv/riscv_board.c以將其中一個虛擬網絡接口實例化爲仿真的risc-v系統應該不會太困難。

+0

謝謝。我在'busybox'中加入了'ifconfig' applet,並使用'ifconfig lo:127.0.0.1 netmask 255.0.0.0 up'命令來設置環回網絡。然後,我運行簡單的echo服務器和客戶端,但服務器和客戶端分別掛在'accept'和'connect'上。迴環網絡似乎設置正確,因爲如果我沒有設置它而運行該程序,'connect'會因'網絡不可達'而失敗。如果我有更新,我會添加評論。 –

相關問題