基于SOPC 的嵌入式Web 服務器設計與實現
在本設計中uC/OS-II主要完成任務的管理與調度,在網絡協議棧初始化后,使用標準套接字API創建新任務訪問網絡協議棧。在本設計中使用函數sys_thread_new()創建DHCP超時任務dhcp_timeout_task()來動態分配IP地址,創建HTTP任務http_task()管理HTTP連接并調用相關的子程序來為HTTP請求服務。這里使用的sys_thread_new()位于LwIP的操作系統封裝層,實際上是調用uC/OS-II的OSTaskCteate()函數。通過創建消息郵箱、信號量實現任務與任務之間、任務與中斷服務程序之間的同步與互斥,以保證它們協調運行。
5.2、LwIP網絡協議棧的實現
LwIP(輕量級網絡協議)是TCP/IP協議棧的一個實現。LwIP是一種專門針對嵌入式系統應用而設計的網絡通信協議,由于LwIP實現的關鍵在于削減代碼大小和內存消耗,但可以完成傳統的TCP/IP協議的大部分功能,通常只需要大約40K的ROM和數十K的RAM即可運行。在保持協議分層體系結構的前提下,通過采用“零拷貝”技術提高實時性。
Nios II支持LwIP使用如下的3個基本任務[2]。這些任務在程序創建時添加后連續運行:首先,被協議棧使用的主任務。這個任務用來接收包,任務模塊的主函數用于等待消息郵箱。當一個新的包到來時,產生一個中斷請求,中斷服務程序清除IRQ并且向消息郵箱發送一個消息。其次,新的消息激活接收任務。這一設計可以使中斷服務程序盡可能快的執行,從而減少系統延時的影響。最后,實時器任務在于周期性地調用各種任務所需的時間。上述這些任務將在初始化成功后自動運行。系統初始化后,進入主程序部分。主程序包括兩大部分:對接收到的以太網數據幀進行解包和對欲發送的數據進行封裝并發送。圖4為Web服務器軟件框圖。

圖4 軟件框架圖
6、結語
經測試,本設計可以正常工作,達到了預期的效果。基于SOPC的嵌入式Web服務器,其功能可根據需要定制,非常靈活。該Web服務器不僅可以廣泛應用于工業控制領域,實現小型工業監測系統網絡化,具有良好的應用前景。
作者創新點:本文介紹了基于軟核處理器的Web服務器實現方法,使設計變得靈活,嵌入式操作系統的引入,滿足了設計對實時性的要求。
linux操作系統文章專題:linux操作系統詳解(linux不再難懂)
評論