999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種改進的基于NDK的DSP服務器端程序設計與實現

2016-11-17 08:27:28王星宇丁興軍
艦船電子對抗 2016年4期
關鍵詞:程序

王星宇,丁興軍

(中國船舶重工集團公司第723研究所,揚州225001)

?

一種改進的基于NDK的DSP服務器端程序設計與實現

王星宇,丁興軍

(中國船舶重工集團公司第723研究所,揚州225001)

隨著網絡開發工具包(NDK)廣泛地應用于TMS320 C6000系列數字信號處理(DSP)平臺的網絡,基于NDK的DSP程序編程越來越重要,傳統DSP服務器端程序已不能很好地適應多客戶端、大數據量的網絡交互平臺。提出了一種改進的程序設計來解決這一問題,先介紹了NDK的結構以及構成和相應的DSP/BIOS配置,然后闡述了基于NDK平臺DSP服務器端程序傳統方法設計與實現及其不足,提出了其改進型的程序設計與實現,最后給出了在TMS320C6455 DSP下2種方法的實驗結果,證明改進型的程序設計是合理有效的。

數字信號處理;傳輸控制協議/互連網協議;網絡開發工具包

0 引 言

隨著網絡化、信息化的高速發展和應用,在嵌入式設備上進行組網,應用網絡通信成為熱門研究對象[1]。TI的C6000系列芯片是面向大規模數據處理的高端數字信號處理(DSP)芯片,結合其推出的網絡開發包(NDK),開發出相應的網絡端程序,可以進行多個嵌入式平臺之間的網絡數據交互。基于NDK下傳統的DSP服務器端程序,在多客戶端任務環境系統中,會出現運行不穩定,甚至堆棧溢出、程序崩潰等問題,本文提出了一種改進型的程序設計,更能適應多客戶端、多任務系統環境下的網絡數據交互應用。

1 NDK介紹

NDK是TI公司為了配合其推出的TMS320C6000系列DSP的傳輸控制協議/互連網協議(TCP/IP)棧[2-3]而開發的新型網絡開發工具包, 其設計目的是要提供一個完整的TCP/IP。NDK采用緊湊的設計方法, 實現了用較少的資源耗費支持TCP/IP, 且僅用200~250 kB的程序空間和95 kB的數據空間即可支持常規的TCP/IP服務,被廣泛地應用于DSP網絡開發。正確使用NDK,需要了解3個方面:結構組成、TCP/IP下的配置和DSP/BIOS配置。

1.1 NDK結構

NDK結構主要由5個功能模塊組成[1],對應的函數庫分別為OS.LIB,HAL.LIB,STACK.LIB,NETTOOL.LIB 和NETCTRL.LIB。其詳細結構示意如圖1所示。

圖1 NDK TCP/IP協議棧結構

NDK通過編程接口與本地操作系統(DSP/BIOS)和底層硬件相互隔離。其中本地操作系統(DSP/BIOS)被抽象成一個操作系統適應層(OS Adaptation Layer),也就是OS.LIB;底層硬件被抽象為一個硬件抽象層(Hardware Abstraction Layer),也就是HAL.LIB。網絡工具庫(Network Tools Library)也就是NETTOOL.LIB,主要包含了NDK提供的所有套接字的網絡功能和開發工具。TCP/IP協議庫所對應的是STACK.LIB,TCP/IP網絡功能庫,包含所有有關TCP/IP協議下的套接字接口層到鏈路層的功能。網絡調度控制(Network Scheduler)對應的是NETCTRL.LIB,從示意圖看,它是整個結構的核心,在整個協議棧中起關鍵作用,協調操作系統,管理硬件驅動和整個網絡事件。網絡應用程序(Network Application),也就是基于NDK架構下,頂層的網絡應用端程序層,通過API函數庫開發工程所需的應用程序。下面介紹的2種服務器端程序就是屬于這一類網絡應用程序。

1.2 NDK下的TCP/IP協議棧的配置和使用

在編寫一個網絡任務程序之前,TCP/IP協議棧必須正確地配置和初始化。圖2是典型的配置TCP/IP協議棧的一個流程。

圖2 典型的NDK下TCP/IPX協議棧配置流程

圖2中的基本步驟為:首先調用NETCTRL.LIB下的NC_SystemOpen庫函數[2],配置一個新的操作系統,建立配置項hCfg,并將要設置的網絡IP地址、子網掩碼、域名、網關信息等導入新建的配置項中。接下來調用NC_NetStart(hCfg, NetworkOpen, NetworkClose, NetworkIPAddr )來啟動開發的網絡端應用程序,NetworkOpen就是網絡端應用開發程序入口函數名,NC_NetStart啟動后,網絡程序任務的創建都在此函數下被調用。NetworkClose 函數是在網絡結束的時候被調用。NetworkIPAddr 函數是IP地址事件函數,當本地IP地址被系統調用或被刪除時都會被調用。最后當網絡結束時,調用CfgFree和NC_SystemClose來刪除網絡配置,并關閉操作系統。

1.3 NDK下的DSP/BIOS配置

DSP/BIOS是TI開發的實時操作系統。支持實時分析、線程管理、調度軟件中斷和外部硬件中斷,用戶編寫的開發程序都由DSP/BIOS調度。而DSP/BIOS本身并沒有包括和支持NDK,NDK如果要運行在操作系統上,必須得到DSP/BIOS操作系統的支持,需要調整DSP/BIOS的2個基本配置[3]:

(1) 定時器設置

NDK需要DSP/BIOS提供一個時鐘驅動模塊,產生100 ms的定時驅動,提供給NDK硬件抽象層作為定時中斷器和時間驅動。而這個時鐘驅動模塊PRD,對應的時間驅動函數llTimerTick(),需要在DSP/BIOS下的tcf文件里設置,具體如圖3所示,在PRD模塊下面建立一個prdNdk的任務,函數名為llTimerTick,將其屬性里定時周期period設為100 ms。

圖3 DSP/BIOS 定時器設置

(2) HOOK環境變量設置

HOOK為TCP/IP協議棧設置保存的空間。OS層的任務調度模塊需要調用HOOK來保存和調用TCP/IP協議棧的環境變量指針,需要在DSP/BIOS下的tcf文件里設置,具體如圖4所示,在System下面的HOOK模塊里建立hookNdk任務,在其屬性里創建2個鉤子函數NDK_hookInit()和NDK_hookCreate()。

圖4 DSP/BIOS HOOK環境變量設置

2 傳統方法下的服務器端程序設計流程及不足

傳統的服務器端程序設計是在NDK結構頂層(圖1)Network Application下進行編程,流程如下:

(1) 在NetworkOpen下建立一個dtask_TcpServer服務器程序任務;

(2) 調用fdOpenSession(),初始化文件向量;

(3) 建立socket套接字;

(4) 設置與客戶端的通信端口;

(5) 綁定并監聽端口;

(6) 啟用阻塞式函數accept(),來創建針對客戶端的任務,一個客戶端對應一個任務;

(7) 服務器端和客戶端網絡信息的交互都在對應的客戶端任務中編程實現;

(8) 當網絡異常或連接中斷,則需要調用fdclose(),關閉服務器端socket,執行fdCloseSession(),關閉文件變量系統,釋放內存,最后退出dtask_TcpServer()服務器端程序任務。

圖5 傳統服務器端設計流程

傳統服務器端程序的不足在于,當使用accept()阻塞式函數開啟對客戶端的連接任務時(圖5),對于單個網絡客戶端系統,能夠穩定運行,但對于多網絡客戶端系統或者多任務、多線程系統時,再進行大數據量交互或者多任務切換時,頻繁地調用阻塞式函數帶來了各個任務的空間分配單元錯誤和堆棧溢出,導致程序崩潰。

3 改進型的服務器端程序設計

傳統服務器端程序設計對堆棧的設置需求非常高,一旦有多客戶端連接服務器或者大數據量信號處理的多線程任務處理,就會造成網絡性能下降、堆棧溢出、服務器端程序崩潰現象。面對目前日益增長的互聯網需求以及復雜和大數據量信號處理的網絡數據量增加,NDK下傳統服務器端的程序設計已越來越不滿足要求,對其改進的需求也越來越多。下面介紹一種改進的服務器端設計方法(見圖6)。相對于傳統服務器端編程設計,其利用fdselect()來創建與客戶端的連接:

圖6 改進型服務器端程序設計流程

(1) 改進型的服務器端程序任務和傳統服務器程序設置任務一樣在NetworkOpen下建立,但是當建立與多客戶端連接的服務器端程序系統時,多客戶端的網絡數據交互任務也直接在NetworkOpen下建立。

(2) 多客戶端任務里,每一個程序任務的設計除了客戶端IP地址和端口號不一樣,其他的網絡編程順序是一樣的。首先調用fdOpenSession(),初始化文件向量。

(3) 建立socket套接字。

(4) 設置與客戶端的通信端口,即IP地址和端口號。

(5) 綁定并監聽端口。

和傳統設計不一樣,使用NDK下的fdselect()函數,來檢測由fdOpenSession創建的文件向量描述符。它也是阻塞式函數,將任務暫時掛起,監聽文件向量描述符里出現的任何活動,fdselect()只是檢測文件向量描述符,確定連接后,直接使用accept()建立與客戶端連接,消耗很少的CPU資源;而不像直接調用accept()需要消耗任務進程所需要的系統資源去實現,這樣能更好地節省堆棧空間。具體實現如下:

(1) 在調用fdselect()前,需要用FD_ZERO函數對文件向量描述符初始化,分別調用FD_ZERO(&ibits),FD_ZERO(obits) FD_ZERO(&xbits)來清除文件向量描述符里的讀記錄標志、寫記錄標志和特殊條件的記錄標志。

(2) 使用FD_SET,將socket文件向量描述符添加到文件讀記錄里。

(3) 使用阻塞式fdselect(),來判斷文件向量描述符里有沒有新的事件或者讀寫數據發生。

(4) 當fdSelect()返回的值Value大于0,判斷客戶端有數據量產生時,使用FD_ISSET()再次確認這個數據是否來自要連接的客戶端。確認之后,調用accept()與客戶端建立連接,開始收發客戶端的數據。

(7) 上一步驟中,如果出現網絡異常或網絡中斷,則需要調用fdclose(),關閉socket套接字,執行fdCloseSession(),關閉文件變量系統,釋放內存,最后運行TSK_exit(),退出dtask_Server_ClientN()服務器端程序任務。

4 實驗結果分析

為了對比測試傳統方法和改進后的方法針對單客戶端和多客戶端的運行效果,測試選用TI的TMSC6455DSP[4]信號處理評估模塊(EVM)和3臺PC機組成網絡,作為系統收發仿真環境,首先在EVM上建立服務器,并用1臺PC機模擬客戶端,與之建立連接形成服務器對單客戶端任務系統。服務器端IP地址設為192.9.200.29,端口號為5 000;PC機客戶端IP地址設為192.9.200.101,端口號為5 000,用PC端網絡調試助手進行大數據量的網絡收發測試。在傳統型和改進型的2種方法下,收發數據包都很穩定,客戶端斷網重新連接測試也很正常。圖7是在CCS3.3環境下的測試結果圖。

圖7 單客戶端任務系統下測試結果圖

然后,利用EVM板和3臺PC機組成服務器對多客戶端任務系統做網絡收發測試。服務器IP端地址依舊設為192.9.200.29,端口號為5 000,對應的3臺PC機客戶端IP地址為192.9.200.101、192.9.200.102、192.9.200.103,端口號也為5 000。用PC端網絡調試助手進行大數據量的網絡數據收發測試。

使用改進型設計的服務端程序在對多客戶端任務系統下,運行正常,進行大量的收發數據和重連測試也一切正常,測試圖如圖8所示。

圖8 多客戶端環境下改進型設計運行測試圖

使用傳統型設計的服務端程序在對多客戶端任務系統下,經過大量收發數據和斷網重連測試,運行一段時間后,出現了錯誤,見圖9。程序出現Buffer OOM錯誤,OOM SBNEW 是一個分配內存函數,在stack.lib的sb.c文件里實現,SBNew:Buffer OOM 意味著分配內存不成功,也就是堆棧溢出,程序跑飛。

圖9 多客戶端環境下傳統型設計運行測試圖

通過對比測試,可以明顯看出傳統服務器端程序在多客戶端任務環境系統里運行不太穩定,對系統stack和heap資源設置要求比較高,當有其他更高優先級的任務時,需要消耗的系統資源就更多,不太適應高密度數據量、多任務系統環境下的網絡數據交互,而改進型的服務器程序設計通過NDK下檢測文件向量描述符里的活動事件,有活動事件產生才去響應網絡數據量的交互,極大地節省了堆棧資源和heap空間,更好地滿足了現代實際工程中的網絡應用。

5 結束語

隨著DSP芯片在現代工程中被廣泛應用,DSP下的網絡技術就顯得尤為重要。現在越來越多的實際工程應用都需要多節點、多任務、多客戶端、大數據量連接,以往傳統服務器端的程序設計已不滿足這種復雜的環境。本文利用改進的程序設計很好地解決了這一問題,為DSP設備在更多的場景下更好地利用網絡提供了廣闊的前景。

[1] 甘泉.基于DSP/BIOS的千兆以太網研究與實現[J].軍事通信技術,2011,32(1):82-85.

[2] 劉海峰.基于DSP的TCP/IP協議的應用研究[J].微電子學與計算機,2006(2):78-79.

[3] 李明,康靜秋,賈志平.嵌入式TCP/IP協議棧的研究與開發[J].計算機工程與應用,2002,38(16):118- 121.

An Improved Program Design and Realization of DSP Server-side Based on NDK

WANG Xing-yu,DING Xing-jun

(The 723 Institute of CSIC,Yangzhou 225001,China)

With the network developer's kit (NDK) is widely used for the network of TMS320 C6000 series digital signal processing (DSP) platform,the DSP programming based on NDK is more and more important.The traditional DSP server-side program is unable to adapt to the multi-client and large data volume interactive network platform.This paper proposes an improved program design method to solve this problem.This paper firstly introduces the structure & composition of NDK and corresponding DSP/BIOS configuration,then expatiates the design and realization shortages of traditional DSP server-side program method based on NDK platform,puts forward the program design and realization of the improved method,finally gives the experimental results of two methods under the condition of TMS320C6455 DSP,which proves that the improved program design is reasonable and effective.

digital signal processing;transmission control protocol/internet protocol;network developer's kit

2016-02-27

TP311.1

B

CN32-1413(2016)04-0099-06

10.16426/j.cnki.jcdzdk.2016.04.022

猜你喜歡
程序
給Windows添加程序快速切換欄
電腦愛好者(2020年6期)2020-05-26 09:27:33
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
基于VMM的程序行為異常檢測
偵查實驗批準程序初探
我國刑事速裁程序的構建
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
恐怖犯罪刑事訴訟程序的完善
主站蜘蛛池模板: 亚洲无码高清一区二区| 欧美精品一二三区| 亚洲欧美极品| 欧美日韩综合网| 97色伦色在线综合视频| 亚洲综合第一页| 成人一级黄色毛片| 特级精品毛片免费观看| 亚洲中文字幕97久久精品少妇| 欧美国产日韩在线观看| 一本大道无码高清| 白浆免费视频国产精品视频| 日韩中文精品亚洲第三区| 特级毛片免费视频| 精品久久蜜桃| 手机在线免费不卡一区二| 国产免费一级精品视频| 久久这里只有精品23| 尤物精品视频一区二区三区| 福利国产在线| 少妇人妻无码首页| 99热这里只有精品国产99| AV网站中文| 国产成人乱码一区二区三区在线| 欧美97色| 日本欧美中文字幕精品亚洲| 手机永久AV在线播放| 亚洲h视频在线| 91成人在线免费观看| 中文字幕亚洲无线码一区女同| 国产欧美日韩视频一区二区三区| 国产经典免费播放视频| 波多野结衣中文字幕一区二区 | 国产亚卅精品无码| 成人永久免费A∨一级在线播放| 91久久国产综合精品女同我| 亚洲男人天堂2018| 欧美爱爱网| 亚洲欧美不卡视频| 国产自在自线午夜精品视频| 中文字幕无码av专区久久| 日韩精品欧美国产在线| 国产91小视频在线观看| 四虎永久免费地址| 日本欧美成人免费| 日本手机在线视频| 亚洲人网站| 国产一区亚洲一区| 亚洲AV无码一区二区三区牲色| 国产日韩AV高潮在线| 国产成人欧美| 国产美女叼嘿视频免费看| 伊人色天堂| 国产乱子伦手机在线| 成人免费黄色小视频| AV无码一区二区三区四区| 又黄又爽视频好爽视频| 天堂亚洲网| 美女潮喷出白浆在线观看视频| 蜜桃视频一区二区三区| 国产高潮流白浆视频| 国产精品毛片一区| 超清人妻系列无码专区| 国内自拍久第一页| 综合色天天| 国产91精品久久| 欧美在线黄| 国产无码在线调教| 网友自拍视频精品区| 国产免费观看av大片的网站| 欧美成人一级| 无码久看视频| 看国产毛片| 亚洲第一色网站| 精品国产乱码久久久久久一区二区| 久久综合一个色综合网| 国产精品对白刺激| 日韩免费中文字幕| 精品国产成人三级在线观看| lhav亚洲精品| 欧美中文字幕在线播放| 亚洲精品中文字幕无乱码|