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

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