裸MIPS架構的CPU怎麼改成一個可以運行單個靜態頁面的Web Server?
01-21
本人在讀學生,按照《自己動手寫CPU》這本書在FPGA上寫了一個MIPS架構的CPU。正好學校有DE2開發版,也上機測試了。想再改成可以運行單個很簡單靜態頁面的Web伺服器,請問應該怎麼樣去改?
我看網上大多數資料都是使用的現成的晶元,由於沒有學過單片機也不知道自己寫的和現成的有多少區別Orz,請大家指點_(:з」∠)_
真的跟mips兼容的話,mips版的linux應該是可以跑的,fpga軟體里SoC設計功能里應該也有乙太網卡之類的現成模塊。但是fpga上恐怕是龜速……
你也可以考慮用硬體實現一個協議棧出來……
裸姑且理解為沒有操作系統,你輪子一點一點造,總有一天能運行的(逃
我推測你沒有實現mmu部分,也就是說你實現了一個大單片機。最快能實現的方法是再實現一個介面連接乙太網phy晶元,移植一個單片機用的操作系統,比如free rtos之類,就有了tcp協議棧。在移植系統之前,cpu需要實現中斷和至少兩個自動重裝定時器。自己再實現對http協議欄位的處理,就搞定了。
給一個直達本質的方案,全部在bootcode中寫:
1. 初始化cpu
2. 初始化網卡,只要最基本的寄存器3. 在網卡收發包介面上,通過偏移取出http請求文本,合格的請求,直接回復靜態網頁,data在數組裡。除boot的彙編和驅動之外,代碼不會超過200行,因為內存需求極小,在sram中運行即可,內存都不要初始化把HTTP實現了就完了唄
RT-Thread,從此免去造輪子的痛苦((
可以移植一個uip或者lwip,c源碼,本身集成了TCP/UDP以及上層http server,不要os不需要多進程,當然底層物理網口的收發還是需要你去實現的。
很多網路晶元裡面都有一顆MIPS CPU。CPU的功能是軟體實現協議棧,實現一個簡單的web server,以便管理和配置。CPU得有一個網口,這個網口的性能一般不會太高,因為主要處理控制類協議報文。
你要實現一個專門為http服務而生的操作系統
其實可以去抄個實時操作系統的,比如ucos-iii之類的
理論上你可以「沒有」操作系統直接寫機器碼(或者加一層彙編提高效率)實現網卡驅動,TCP/IP,HTTP伺服器的邏輯,但是實際上你還是要管理各種資源,處理中斷什麼的(假設你只有HTTP伺服器這一個任務,沒有嚴格的進程概念。也許你還需要文件系統,除非你輸出的頁面是寫死在代碼里的)。跟寫個操作系統也差不多。如果是個人項目,祝你在30歲之前完成…
—————分割線—————
我突然發現我可能想錯了。如果你是標準MIPS,那高級語言(比如C)的編譯器別人就寫好了。如果用C來寫的話。有各種30天實現自己的操作系統的教程。跟著寫,可能全套東西一兩年(個月)內能寫好?
推薦閱讀:
※如何看待大多數雲主機伺服器沒有圖形界面?其意義是什麼?
※2016 年 5 月新建 Web 伺服器用什麼 Linux 發行版?
※瀏覽器是怎樣載入js代碼的?
※遊戲伺服器架構和web伺服器架構的區別?