国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于ND K的DSP網(wǎng)絡通信技術研究

2021-12-02 01:26:48鄭佳晶高榮榮
電子工業(yè)專用設備 2021年5期
關鍵詞:句柄占用率網(wǎng)絡通信

鄭佳晶,高榮榮

(中國電子科技集團公司第四十五研究所,北京100176)

網(wǎng)絡通信作為一種有效的通信方式,在DSP應用開發(fā)中占據(jù)越來越重要的地位。從DSP設備實時獲取監(jiān)控或測量的數(shù)據(jù)、向DSP設備發(fā)送命令控制其采取適當?shù)奶幚硇袨榈?,都需要網(wǎng)絡通信的支持。隨著嵌入式網(wǎng)絡通信技術研究與應用越來越廣泛,網(wǎng)絡通信處理技術越來越成熟。TI公司推出了TCP/IP協(xié)議棧。此協(xié)議棧與TI網(wǎng)絡開發(fā)工具包NDK(Network Developer's Kit)結合在一起使用。NDK是一個基于SYS/BIOS實時操作系統(tǒng)的網(wǎng)絡協(xié)議棧,目前主要用于開發(fā)和驗證TI C6000系列和ARM系列嵌入式處理器的網(wǎng)絡應用功能。包含在NDK發(fā)布版中的代碼是通用的C代碼。NDK棧作為一個快速的原型平臺為開發(fā)網(wǎng)絡和包處理程序提供服務。它能用于向已經(jīng)存在的應用程序中添加網(wǎng)絡連接,以支持網(wǎng)絡的通信、配置和控制。基于SYS/BIOS的網(wǎng)絡開發(fā)組件,提供網(wǎng)絡協(xié)議棧的支持,提供基本網(wǎng)絡服務開發(fā)的接口,簡化了DSP網(wǎng)絡應用程序的開發(fā)[1]。

NDK僅用200~250K的程序空間和95K的數(shù)據(jù)空間即可支持常規(guī)的TCP/IP服務,包括應用層的TELNET、DHCP和HTTP等協(xié)議,可使基于數(shù)字信號處理技術的因特網(wǎng)終端的網(wǎng)絡連接成本大大降低。因此,NDK很適合目前的嵌入式系統(tǒng)硬件環(huán)境,是實現(xiàn)DSP網(wǎng)絡開發(fā)的重要支撐工具。

1 NDK的功能架構

如圖1所示,NDK主要由5個庫組成,分別是硬件抽象庫(hal.lib)、網(wǎng)絡控制庫(netctrl.lib)、網(wǎng)絡工具庫(nettool.lib)、操作系統(tǒng)庫(os.lib)和協(xié)議棧庫(stack.lib)。

圖1 協(xié)議??刂屏?/p>

(1)硬件抽象庫HAL將具體的底層硬件抽象為一個硬件抽象層與NDK隔離,主要負責管理與網(wǎng)絡相關的硬件資源,為NDK提供一組編程接口。包含硬件外設到NDK的接口,例如,計時器、LED指示燈、以太網(wǎng)設備和串口等。

(2)網(wǎng)絡工具庫NETTOOL庫中包含了NDK提供的所有基于網(wǎng)絡服務的套接字,以及一些用于網(wǎng)絡應用程序開發(fā)的工具。在網(wǎng)絡工具庫中最常用的組件是基于標簽的配置系統(tǒng),它幾乎控制棧及其服務的每個方面[2]。

(3)操作系統(tǒng)庫將DSP/BIOS操作系統(tǒng)的功能抽象為一個操作系統(tǒng)適配層與NDK隔離,將某些抽象的操作系統(tǒng)調(diào)用映射到SYS/BIOS函數(shù)調(diào)用。這個適應層允許SYS/BIOS系統(tǒng)程序員將NDK系統(tǒng)調(diào)整到任何基于SYS/BIOS的操作系統(tǒng)中。

(4)協(xié)議棧庫主要是TCP/IP協(xié)議棧,它包含以太網(wǎng)和點到點協(xié)議頂層套接字層的所有內(nèi)容。TCP/IP協(xié)議棧是主要的TCP/IP網(wǎng)絡功能庫,該庫構建在SYS/BIOS操作系統(tǒng)之上,實現(xiàn)了從上層套接字到底層鏈路層的所有功能。STACK庫是基于SYS/BIOS編譯的,能充分利用SYS/BIOS操作系統(tǒng),在平臺間遷移時不需要移植。

(5)網(wǎng)絡控制庫NETCTRL是協(xié)議棧配置、初始化和事件調(diào)度的核心,它控制TCP/IP與外部的交互。在所有的協(xié)議棧模塊中,它對NDK的操作時最重要,其功能:

a)負責NDK的初始化和底層設備驅(qū)動;

b)通過配置服務回調(diào)函數(shù)啟動和維護系統(tǒng)配置;

c)向底層設備驅(qū)動提供接口,同時調(diào)度驅(qū)動事件;

d)在退出時卸載系統(tǒng)配置和清理驅(qū)動。

2 NDK協(xié)議棧的配置和初始化

NDK協(xié)議棧初始化的基本過程:

(1)運行Stack Thread Begin(Global.stackBeginHook)掛鉤函數(shù)。注意在這個掛鉤函數(shù)中,任何與NDK相關的代碼都不能運行,因為NC_SystemOpen()函數(shù)還沒有運行。

(2)用初始化函數(shù)對操作系統(tǒng)環(huán)境進行初始化:NC_SystemOpen(Prio rity,OpMode),它的兩個參數(shù)Priority和OpMode分別決定網(wǎng)絡事件調(diào)度器在SYS/BIOS線程中的優(yōu)先級和操作模式。這個函數(shù)必須在NDK相關的函數(shù)被調(diào)用之前調(diào)用。

(3)通過CfgNew()創(chuàng)建一個新的配置。一旦創(chuàng)建了配置句柄,就可以將配置信息裝載到句柄中,既可以整體裝載,也可以采用一次一個條目的形式進行裝載。

(4)通過配置函數(shù)API的調(diào)用構建新配置或加載一個原來存在的配置:CfgLoad()/CfgAddEntry(),兩者的區(qū)別在于整體裝載還是逐一進行裝載,裝載的參數(shù)包括:網(wǎng)絡主機名,IP地址和子網(wǎng)掩碼,默認路由的IP地址,需要執(zhí)行的服務(例如:DHCP、DNS和HTTP),命名服務器的IP地址,協(xié)議棧的屬性(例如:IP路由、套接字緩存大小等)。

(5)通過調(diào)用NC_NetStart()函數(shù),用上面的配置啟動協(xié)議棧。該函數(shù)由四個參數(shù):配置句柄、指向開始函數(shù)的指針、指向結束函數(shù)的指針和指向IP地址時間的函數(shù)。開始函數(shù)和結束函數(shù)只被調(diào)用一次,開始函數(shù)在初始化結束后準備執(zhí)行網(wǎng)絡應用程序時調(diào)用,IP地址事件函數(shù)允許被多次調(diào)用,NC_NetStart()函數(shù)直到協(xié)議棧繪會話終止才返回。

(6)在一些初步的初始化后,NC_NetStart()函數(shù)創(chuàng)建一個新的線程,這個新的線程會調(diào)用生成的NetworkOpen()函數(shù)。NetworkOpen()函數(shù)根據(jù)網(wǎng)絡需求創(chuàng)建網(wǎng)絡任務線程。

(7)在正常操作下,協(xié)議棧直到函數(shù)NC_Net-Stop()被調(diào)用才會關閉。

(8)當NC_NetStart()返回且會話結束后,調(diào)用Cfg_Free()釋放配置句柄。

(9)當所有資源釋放后,調(diào)用NC_System-Close完成系統(tǒng)關閉操作[3]。

NDK的初始化流程如圖2所示。

圖2 NDK初始化流程圖

3 NDK與PC通信測試的實現(xiàn)

PC與DSP的網(wǎng)絡通信是經(jīng)常使用的場景之一,采用C/S的網(wǎng)絡開發(fā)架構,基于socket進行PC與DSP通信的程序設計,PC端作為server,DSP端作為client,在DSP端發(fā)送數(shù)據(jù),PC端收到數(shù)據(jù)后不作任何處理,把接收到的數(shù)據(jù)回傳給DSP,在DSP端統(tǒng)計往返時間及誤碼率。程序流程圖如圖3所示。

圖3 PC與DSP通信流程圖

這里采集100次往返時間進行統(tǒng)計分析,DSP端發(fā)送接收緩沖區(qū)默認設置8192字節(jié)。這里從PC操作系統(tǒng)的CPU負載情況進行測試分析,CPU占用率70%時的通信速率統(tǒng)計結果如圖4、圖5所示。

圖5 CPU占用率70%時網(wǎng)絡波動

為了測試PC操作系統(tǒng)CPU占用率比較低的情況下的網(wǎng)絡通信速率,將與測試無關的進程關閉,減輕CPU的負載。PC操作系統(tǒng)CPU占用率為10%的通信速率統(tǒng)計情況如圖6、圖7所示。

圖6 CPU使用率10%時數(shù)值統(tǒng)計

從圖4到圖7可以看出:在Windows系統(tǒng)占用率低的時候,通信時間的波動確實減小,往返時間也相應的減少了。通信往返時間受PC端影響較大,因為Windows是非實時系統(tǒng),在消息處理上有其內(nèi)在的機制。DSP端是實時系統(tǒng),所以延遲小,響應快。另外,對數(shù)據(jù)進行校驗誤碼率為零。

圖4 CPU使用率70%時數(shù)值統(tǒng)計

圖7 CPU使用率10%時數(shù)值統(tǒng)計與波動分析

另外在測試中關閉了Nagle算法與關閉前進行數(shù)據(jù)對比分析,發(fā)現(xiàn)關閉Nagle并不能減少太多時間。對于socket還有其他設置選項如發(fā)送緩沖區(qū)大小,接收緩沖區(qū)大小以及重傳超時時間設置等,可以根據(jù)具體的應用進行相關的設置,提高網(wǎng)絡通信效率。

4 結束語

通過NDK對TCP/IP協(xié)議棧進行初始化和配置,實現(xiàn)了PC與DSP的網(wǎng)絡通信,完成了數(shù)據(jù)網(wǎng)絡通信工作,測試研究表明NDK開發(fā)套件使用方便,性能優(yōu)良可靠,可以最大限度地節(jié)省開發(fā)時間和成本,是嵌入式DSP網(wǎng)絡開發(fā)的首選。

猜你喜歡
句柄占用率網(wǎng)絡通信
基于網(wǎng)絡通信的智能照明系統(tǒng)設計
電子制作(2019年15期)2019-08-27 01:11:48
降低CE設備子接口占用率的研究與應用
魅力中國(2019年6期)2019-07-21 07:12:10
網(wǎng)絡通信中信息隱藏技術的應用
基于網(wǎng)絡通信的校園智能音箱設計
電子制作(2018年1期)2018-04-04 01:48:30
談計算機網(wǎng)絡通信常見問題及技術發(fā)展
電子制作(2017年17期)2017-12-18 06:41:06
高校圖書館持久標識符應用研究
編譯程序語法分析句柄問題分析與探討
基于排隊論的區(qū)域路內(nèi)停車最優(yōu)泊位占用率研究
MFC應用程序多線程混合顯示界面方法研究
基于SPY++的軟件功能擴展的研究
凉城县| 来宾市| 本溪市| 呼伦贝尔市| 高雄市| 梨树县| 万盛区| 潮州市| 定边县| 宁德市| 老河口市| 汉源县| 新邵县| 刚察县| 苍溪县| 榆中县| 宁远县| 越西县| 军事| 西青区| 通州市| 张家界市| 重庆市| 枣阳市| 宁陵县| 益阳市| 临武县| 博湖县| 佛学| 镇平县| 大丰市| 普格县| 临泉县| 天气| 义马市| 察哈| 石城县| 凤山市| 海门市| 洪泽县| 杭锦后旗|