基于SOPC 的嵌入式Web 服務(wù)器設(shè)計(jì)與實(shí)現(xiàn)
在本設(shè)計(jì)中uC/OS-II主要完成任務(wù)的管理與調(diào)度,在網(wǎng)絡(luò)協(xié)議棧初始化后,使用標(biāo)準(zhǔn)套接字API創(chuàng)建新任務(wù)訪問(wèn)網(wǎng)絡(luò)協(xié)議棧。在本設(shè)計(jì)中使用函數(shù)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連接并調(diào)用相關(guān)的子程序來(lái)為HTTP請(qǐng)求服務(wù)。這里使用的sys_thread_new()位于LwIP的操作系統(tǒng)封裝層,實(shí)際上是調(diào)用uC/OS-II的OSTaskCteate()函數(shù)。通過(guò)創(chuàng)建消息郵箱、信號(hào)量實(shí)現(xiàn)任務(wù)與任務(wù)之間、任務(wù)與中斷服務(wù)程序之間的同步與互斥,以保證它們協(xié)調(diào)運(yùn)行。
5.2、LwIP網(wǎng)絡(luò)協(xié)議棧的實(shí)現(xiàn)
LwIP(輕量級(jí)網(wǎng)絡(luò)協(xié)議)是TCP/IP協(xié)議棧的一個(gè)實(shí)現(xiàn)。LwIP是一種專門針對(duì)嵌入式系統(tǒng)應(yīng)用而設(shè)計(jì)的網(wǎng)絡(luò)通信協(xié)議,由于LwIP實(shí)現(xiàn)的關(guān)鍵在于削減代碼大小和內(nèi)存消耗,但可以完成傳統(tǒng)的TCP/IP協(xié)議的大部分功能,通常只需要大約40K的ROM和數(shù)十K的RAM即可運(yùn)行。在保持協(xié)議分層體系結(jié)構(gòu)的前提下,通過(guò)采用“零拷貝”技術(shù)提高實(shí)時(shí)性。
Nios II支持LwIP使用如下的3個(gè)基本任務(wù)[2]。這些任務(wù)在程序創(chuàng)建時(shí)添加后連續(xù)運(yùn)行:首先,被協(xié)議棧使用的主任務(wù)。這個(gè)任務(wù)用來(lái)接收包,任務(wù)模塊的主函數(shù)用于等待消息郵箱。當(dāng)一個(gè)新的包到來(lái)時(shí),產(chǎn)生一個(gè)中斷請(qǐng)求,中斷服務(wù)程序清除IRQ并且向消息郵箱發(fā)送一個(gè)消息。其次,新的消息激活接收任務(wù)。這一設(shè)計(jì)可以使中斷服務(wù)程序盡可能快的執(zhí)行,從而減少系統(tǒng)延時(shí)的影響。最后,實(shí)時(shí)器任務(wù)在于周期性地調(diào)用各種任務(wù)所需的時(shí)間。上述這些任務(wù)將在初始化成功后自動(dòng)運(yùn)行。系統(tǒng)初始化后,進(jìn)入主程序部分。主程序包括兩大部分:對(duì)接收到的以太網(wǎng)數(shù)據(jù)幀進(jìn)行解包和對(duì)欲發(fā)送的數(shù)據(jù)進(jìn)行封裝并發(fā)送。圖4為Web服務(wù)器軟件框圖。
圖4 軟件框架圖
6、結(jié)語(yǔ)
經(jīng)測(cè)試,本設(shè)計(jì)可以正常工作,達(dá)到了預(yù)期的效果。基于SOPC的嵌入式Web服務(wù)器,其功能可根據(jù)需要定制,非常靈活。該Web服務(wù)器不僅可以廣泛應(yīng)用于工業(yè)控制領(lǐng)域,實(shí)現(xiàn)小型工業(yè)監(jiān)測(cè)系統(tǒng)網(wǎng)絡(luò)化,具有良好的應(yīng)用前景。
作者創(chuàng)新點(diǎn):本文介紹了基于軟核處理器的Web服務(wù)器實(shí)現(xiàn)方法,使設(shè)計(jì)變得靈活,嵌入式操作系統(tǒng)的引入,滿足了設(shè)計(jì)對(duì)實(shí)時(shí)性的要求。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論