亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于ZYNQ-7000 平臺(tái)無(wú)線自組網(wǎng)按需距離矢量路由協(xié)議實(shí)現(xiàn)研究

        2023-11-13 16:10:12劉玉梅馬文進(jìn)
        應(yīng)用科技 2023年5期
        關(guān)鍵詞:嵌入式用戶系統(tǒng)

        劉玉梅,馬文進(jìn)

        哈爾濱工程大學(xué) 信息與通信工程學(xué)院,黑龍江 哈爾濱 150001

        隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展,嵌入式系統(tǒng)在基礎(chǔ)與應(yīng)用研究領(lǐng)域越來越重要[1]。嵌入式軟件系統(tǒng)的主要核心部件為微型嵌入式[2]處理器,硬件系統(tǒng)的框架主要包括硬件處理器、硬件存儲(chǔ)器、應(yīng)用軟件和硬件I/O。嵌入式系統(tǒng)具有強(qiáng)大的實(shí)時(shí)性、系統(tǒng)內(nèi)核小、功能專用性強(qiáng)、軟件系統(tǒng)功能精簡(jiǎn)等優(yōu)點(diǎn),因此其應(yīng)用已經(jīng)深入到國(guó)防、科研以及日常生活等各個(gè)領(lǐng)域中[3]。

        無(wú)線自組網(wǎng)按需距離矢量路由協(xié)議(Ad hoc on-demand distance vector routing,AODV)[4]是應(yīng)用于無(wú)線Ad-Hoc 網(wǎng)絡(luò)[5]中進(jìn)行路由選擇的路由協(xié)議,它能夠?qū)崿F(xiàn)單播和多播,同時(shí)該協(xié)議是Ad Hoc 網(wǎng)絡(luò)中按需生成路由方式的典型協(xié)議,目前Ad Hoc 網(wǎng)絡(luò)中的AODV 協(xié)議的性能主要利用NS2 仿真軟件在理想環(huán)境中對(duì)該協(xié)議的端對(duì)端平均時(shí)延、路由開銷等性能進(jìn)行評(píng)估,但是只依靠仿真無(wú)法反應(yīng)在實(shí)際通信場(chǎng)景中環(huán)境因素對(duì)協(xié)議通信過程中的丟包率、時(shí)延等指標(biāo)的影響,因此需要對(duì)AODV 協(xié)議在實(shí)際應(yīng)用中的性能進(jìn)行統(tǒng)計(jì)測(cè)試[6]。

        AODV[7]路由協(xié)議有多種的實(shí)現(xiàn)的版本,例如 Mad-Hoc[8]、 AODV-UCSB[9]、 AODV-UU[10]、Kernel-AODV[11]和AODV-UIUC。其中,AODV-UU協(xié)議是由瑞典烏普薩拉大學(xué)(Uppsala University)聯(lián)合愛立信公司發(fā)布的一種路由協(xié)議,是一種穩(wěn)定且開源的協(xié)議實(shí)現(xiàn)[12]。

        AODV-UU 源代碼能夠在Linux-2.6[13]以及Linux-3.8 的內(nèi)核版本中實(shí)現(xiàn),但與當(dāng)前主流的Linux-4.0 以上的版本不能兼容。本文在ZYNQ-7 000平臺(tái)下,研究了將AODV-UU 協(xié)議在嵌入式Linux-4.14 內(nèi)核系統(tǒng)上實(shí)現(xiàn)的關(guān)鍵技術(shù)。

        1 軟硬件平臺(tái)設(shè)計(jì)

        1.1 硬件設(shè)計(jì)方案

        1)PYNQ-Z2 開發(fā)板。為了方便上層應(yīng)用程序在功能擴(kuò)展時(shí)需要增加外圍設(shè)備的需求,在開發(fā)板的選型上選擇了由處理系統(tǒng)(processing system,PS)以及可編程邏輯(progarmmable logic,PL)共2 部分所組成的PYNQ-Z2 開發(fā)板。PYNQZ2[14]采用的是ZYNQ-7000 系列[15]的XC7Z020-1CLG400C 型號(hào)的系統(tǒng)級(jí)芯片(system on chip,SOC),內(nèi)部異構(gòu)了雙核ARM Cortex-A9 CPU 以及現(xiàn)場(chǎng)可編程門陣列(field programmable gate array,F(xiàn)PGA),具體的實(shí)現(xiàn)過程中用到了PS 部分中的USB、SD 卡、UART 以及Eth0 等接口[16],PYNQZ2 處理系統(tǒng)結(jié)構(gòu)如圖1 所示。

        圖1 PYNQ-Z2 處理系統(tǒng)結(jié)構(gòu)

        2)USB WiFi 網(wǎng)卡。網(wǎng)卡的選型需要與所工作的內(nèi)核系統(tǒng)相適配,由于Linux-4.14 的內(nèi)核系統(tǒng)可通過內(nèi)部驅(qū)動(dòng)支持RT5370 型號(hào)網(wǎng)卡,所以網(wǎng)卡最終選型為支持Ad Hoc 模式的RT5370。

        3)Micro SD 卡。SD 作為內(nèi)核鏡像、啟動(dòng)文件、根文件系統(tǒng)以及協(xié)議可執(zhí)行文件的存放載體,因此SD 卡需要能夠進(jìn)行高速的數(shù)據(jù)讀寫并且容量最小為16 GB。

        1.2 軟件設(shè)計(jì)方案

        方案包括了硬件電路接口設(shè)計(jì)以及Linux 系統(tǒng)定制化設(shè)計(jì)2 個(gè)部分。使用Xilinx 公司的Vivado 軟件對(duì)硬件電路接口進(jìn)行設(shè)計(jì),Petalinux集成開發(fā)工具對(duì)Linux 系統(tǒng)內(nèi)核、根文件系統(tǒng)、設(shè)備樹等完成定制化設(shè)計(jì),避免了對(duì)各部分模塊的單獨(dú)設(shè)計(jì)與編譯。圖2 為軟件設(shè)計(jì)方案。

        圖2 軟件設(shè)計(jì)方案

        硬件電路接口設(shè)計(jì)中根據(jù)所需功能對(duì)PYNQZ2 開發(fā)板中的各個(gè)接口進(jìn)行用戶設(shè)計(jì)。設(shè)計(jì)過程中針對(duì)開發(fā)板自身特性對(duì)PS 端的相關(guān)接口進(jìn)行使能連通開發(fā)板中相關(guān)電路,對(duì)PL 端接口失能減少電路中的冗余部分,圖3 為最終的硬件電路設(shè)計(jì)圖。

        圖3 ZYNQ 處理系統(tǒng)實(shí)現(xiàn)

        在Linux 系統(tǒng)的定制化中對(duì)內(nèi)核系統(tǒng)、根文件系統(tǒng)以及設(shè)備樹進(jìn)行用戶級(jí)設(shè)計(jì)。

        1)內(nèi)核系統(tǒng)。AODV 協(xié)議在實(shí)際應(yīng)用時(shí)要在無(wú)線網(wǎng)絡(luò)的環(huán)境中利用無(wú)線網(wǎng)卡進(jìn)行通信。因此在進(jìn)行內(nèi)核系統(tǒng)設(shè)計(jì)時(shí)要支持IEEE 802.11 網(wǎng)絡(luò)協(xié)議棧、無(wú)線局域網(wǎng)以及與RT5370 網(wǎng)卡相關(guān)的驅(qū)動(dòng)和網(wǎng)絡(luò)適配器。

        2)根文件系統(tǒng)。根文件系統(tǒng)不僅能將初始化的進(jìn)程從內(nèi)核態(tài)引導(dǎo)入用戶態(tài)中,還可以存儲(chǔ)AODV 協(xié)議在實(shí)現(xiàn)過程中所用到的內(nèi)核鏡像、啟動(dòng)文件、網(wǎng)絡(luò)配置工具等需要永久保存的文件信息。操作系統(tǒng)默認(rèn)的啟動(dòng)方式是虛擬的根文件系統(tǒng),因此需要將根文件系統(tǒng)的啟動(dòng)位置改為由SD 卡啟動(dòng)。

        3)工程設(shè)備樹。設(shè)備樹的作用是對(duì)硬件中的外設(shè)進(jìn)行驅(qū)動(dòng),設(shè)計(jì)過程中需要對(duì)開發(fā)板中的USB 接口進(jìn)行驅(qū)動(dòng)使得能夠正常地使用RT5370 網(wǎng)卡,驅(qū)動(dòng)方式選擇了利用Petalinux 中的設(shè)備樹文件對(duì)USB 接口進(jìn)行驅(qū)動(dòng)。同一個(gè)設(shè)備樹文件可根據(jù)用戶需求同時(shí)驅(qū)動(dòng)多個(gè)外圍設(shè)備,方便日后對(duì)外設(shè)驅(qū)動(dòng)的擴(kuò)展以及管理。

        4)項(xiàng)目工程編譯。在軟件設(shè)計(jì)完成后對(duì)整個(gè)項(xiàng)目進(jìn)行綜合編譯生成image.ub 鏡像文件并對(duì)uboot、fsbl 等文件進(jìn)行打包生成BOOT.BIN 啟動(dòng)文件。

        2 AODV 協(xié)議實(shí)現(xiàn)

        AODV-UU 是在Netfilter 功能框架的基礎(chǔ)上實(shí)現(xiàn)的,分為用戶層與內(nèi)核層2 部分。路由功能模塊和轉(zhuǎn)發(fā)數(shù)據(jù)包模塊分別在用戶層和內(nèi)核層實(shí)現(xiàn),用戶層與內(nèi)核層之間通過Netlink socket 套接字進(jìn)行數(shù)據(jù)的雙向交互,運(yùn)行機(jī)制如圖4 所示。

        2.1 用戶層實(shí)現(xiàn)

        用戶層中的aodvd 守護(hù)進(jìn)程來實(shí)現(xiàn)AODVUU 協(xié)議的路由功能模塊,路由功能模塊根據(jù)路由協(xié)議算法計(jì)算出正確的路由后通過核心應(yīng)用程序接口(application programming interface,API)來維護(hù)內(nèi)核路由表??梢栽诒3洲D(zhuǎn)發(fā)功能模塊不變的情況下通過修改路由功能模塊來實(shí)現(xiàn)AODV協(xié)議。

        本次實(shí)現(xiàn)的嵌入式平臺(tái)系統(tǒng)為L(zhǎng)inux-4.14,生成的aodvd 可執(zhí)行文件需要在該系統(tǒng)中運(yùn)行,因此將用戶層Makefile 中內(nèi)核版本的路徑改為用戶所需的內(nèi)核源碼路徑,編譯工具選擇使用交叉編譯工具,修改完成后對(duì)用戶模塊進(jìn)行編譯生成aodvd 可執(zhí)行文件,修改結(jié)果如圖5 所示。

        圖5 Makefile 修改后文件

        2.2 內(nèi)核層實(shí)現(xiàn)

        內(nèi)核層的作用是對(duì)數(shù)據(jù)包進(jìn)行通信管理,在進(jìn)行發(fā)送或者轉(zhuǎn)發(fā)之前會(huì)檢查內(nèi)核路由表中是否有該數(shù)據(jù)包的目的地址,有則直接發(fā)送數(shù)據(jù),沒有則向用戶層的守護(hù)進(jìn)程發(fā)起進(jìn)行路由的查找請(qǐng)求,由守護(hù)進(jìn)程發(fā)起路由查找。

        內(nèi)核層中的代碼與移植的內(nèi)核版本相關(guān),根據(jù)內(nèi)核版本的變動(dòng)對(duì)內(nèi)核層中的模塊進(jìn)行修改。與Linux-2.6 相比Linux-4.14 中負(fù)責(zé)用戶空間與內(nèi)核空間通信的libipq 模塊被刪除,在實(shí)現(xiàn)過程中使用隊(duì)列來替代該模塊功能,實(shí)現(xiàn)后內(nèi)核與用戶空間交互如圖6 所示。

        圖6 通信交互機(jī)制

        在代碼層級(jí)的實(shí)現(xiàn)過程中,最重要的改變是對(duì)netlink 套接字處理函數(shù)以及進(jìn)程控制函數(shù)的改動(dòng)。其中一個(gè)是使用nlmsg_put 函數(shù)來代替NLMSG_PUT 函數(shù),該函數(shù)的作用是將發(fā)送的數(shù)據(jù)放入套接字緩沖區(qū)中。另外proc_net_create 函數(shù)被proc_create 函數(shù)代替,該函數(shù)的作用是允許AODV-UU 應(yīng)用程序訪問內(nèi)核中的路由表。最后根據(jù)內(nèi)核版本的改動(dòng),刪除和替換了相應(yīng)宏函數(shù)以及宏定義等參數(shù),例如對(duì)RW_LOCK_UNLOCK宏函數(shù)中的實(shí)參做出了修改等。

        2.3 內(nèi)核層編譯

        為了更好地兼容使用Petalinux 工具生成的內(nèi)核鏡像與啟動(dòng)文件,在進(jìn)行內(nèi)核層模塊編譯時(shí)同樣使用Petalinux 工具對(duì)模塊進(jìn)行編譯。首先在項(xiàng)目中創(chuàng)建1 個(gè)名稱為kaodv 的模塊。將AODVUU 中l(wèi)nx 目錄中的內(nèi)核層源文件移植到kaodv 模塊的file 文件夾中,修改kaodv.bb 文件以便將內(nèi)核層中的源文件在編譯過程中加載入該模塊中,修改結(jié)果如圖7 所示。

        圖7 kaodv.bb 實(shí)現(xiàn)

        進(jìn)入file 文件夾中,原本AODV-UU 內(nèi)核層中的Makefile 文件與Petalinux 中動(dòng)態(tài)模塊的編譯不兼容,需要對(duì)其模塊中的Makefile 文件進(jìn)行重寫,重新定義導(dǎo)出模塊的名稱以及需要導(dǎo)出的測(cè)試源文件,修改完成后對(duì)新建模塊進(jìn)行編譯生成kaodv.ko 動(dòng)態(tài)加載模塊,文件修改結(jié)果如圖8所示。

        圖8 kaodv 模塊中Makefile 實(shí)現(xiàn)

        3 AODV 協(xié)議組網(wǎng)通信

        3.1 WiFi 網(wǎng)卡配置

        AODV 協(xié)議在實(shí)際應(yīng)用中需運(yùn)行在Ad Hoc 網(wǎng)絡(luò)中,因此以節(jié)點(diǎn)C 為例對(duì)無(wú)線網(wǎng)卡進(jìn)行以下配置:步驟1)、2)設(shè)置網(wǎng)卡模式與essid 分別為Ad Hoc 與aodv;步驟3)、4)設(shè)置網(wǎng)卡的IP 地址;步驟5)為檢測(cè)無(wú)線網(wǎng)卡能否正常工作,網(wǎng)卡具體配置步驟為:

        1) iwconfig wlan0 mode ad-hoc;

        2) iwconfig wlan0 essid “aodv”;

        3) ifconfig wlan0 up;

        4) ifconfig wlan0 192.168.6.8;

        5) iwlist wlan0 scanning aodv。

        3.2 連通性測(cè)試

        本次測(cè)試在Ad Hoc 網(wǎng)絡(luò)中進(jìn)行,其中節(jié)點(diǎn)A 為虛擬機(jī),節(jié)點(diǎn)B 與節(jié)點(diǎn)C 為PYNQ-Z2 板卡。將節(jié)點(diǎn)設(shè)為同一局域網(wǎng)段后節(jié)點(diǎn)之間相互連通,此時(shí)的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖9 所示,由圖10、11 可知3 個(gè)節(jié)點(diǎn)互相連通,并且TTL 為64 說明節(jié)點(diǎn)之間可以經(jīng)過一跳到達(dá)。

        圖9 點(diǎn)對(duì)點(diǎn)單跳節(jié)點(diǎn)間連通

        圖10 節(jié)點(diǎn)A 與節(jié)點(diǎn)B、C 連通

        圖11 節(jié)點(diǎn)B 與節(jié)點(diǎn)C 連通

        使用iptables 工具屏蔽節(jié)點(diǎn)A 與節(jié)點(diǎn)C 的物理地址,此時(shí)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖12 所示,節(jié)點(diǎn)A 再次對(duì)節(jié)點(diǎn)C 發(fā)送報(bào)文,此時(shí)2 個(gè)節(jié)點(diǎn)無(wú)法連通,如圖13 所示。

        圖12 點(diǎn)對(duì)點(diǎn)單跳節(jié)點(diǎn)不連通

        圖13 節(jié)點(diǎn)A 與節(jié)點(diǎn)C 不連通

        最后網(wǎng)絡(luò)中各節(jié)點(diǎn)都運(yùn)行AODV 協(xié)議,首先使用insmod kaodv.ko 命令加載kaodv.ko 模塊,然后節(jié)點(diǎn)運(yùn)行aodvd 程序,此時(shí)節(jié)點(diǎn)A 與節(jié)點(diǎn)C 會(huì)將鄰居節(jié)點(diǎn)B 的IP 地址加入到內(nèi)核路由表中,節(jié)點(diǎn)B 將鄰居節(jié)點(diǎn)A、C 的IP 地址加入到內(nèi)核路由表中,此時(shí)的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖14 所示。隨后由節(jié)點(diǎn)A 向節(jié)點(diǎn)C 發(fā)送報(bào)文結(jié)果如圖15 所示,此時(shí)節(jié)點(diǎn)A 與節(jié)點(diǎn)C 再次連通并且存活時(shí)間(time to live,TTL)值變?yōu)?3,說明由節(jié)點(diǎn)A 經(jīng)過兩跳途經(jīng)節(jié)點(diǎn)B 到達(dá)節(jié)點(diǎn)C,使用tracepath 命令進(jìn)行路由追蹤可知節(jié)點(diǎn)A 經(jīng)過節(jié)點(diǎn)B 后到達(dá)節(jié)點(diǎn)C,路由信息如圖16 所示,由測(cè)試結(jié)果可知AODV 協(xié)議在嵌入式Linux-4.14 系統(tǒng)中測(cè)試成功。

        圖14 運(yùn)行AODV 協(xié)議后拓?fù)浣Y(jié)構(gòu)圖

        圖15 運(yùn)行aodvd 后節(jié)點(diǎn)A 與節(jié)點(diǎn)C 連通

        圖16 節(jié)點(diǎn)A 到節(jié)點(diǎn)C 的路由追蹤

        3.3 實(shí)際通信測(cè)試

        在實(shí)際的通信測(cè)試中,通過上層應(yīng)用程序由節(jié)點(diǎn)C 持續(xù)不斷的向節(jié)點(diǎn)A 發(fā)送報(bào)文,在測(cè)試中每個(gè)時(shí)間段測(cè)試5 次取平均值得到網(wǎng)絡(luò)中的平均丟包率、平均往返時(shí)間以及平均吞吐量等性能指標(biāo)。

        往返時(shí)延(round-trip time,RTT)指數(shù)據(jù)包由節(jié)點(diǎn)C 發(fā)送數(shù)據(jù)到節(jié)點(diǎn)C 接收到節(jié)點(diǎn)A 的確認(rèn)總共經(jīng)過的時(shí)延。圖17 顯示了節(jié)點(diǎn)之間各時(shí)間段內(nèi)的平均往返時(shí)間保持在27 ms 左右。

        圖17 平均往返時(shí)間測(cè)試結(jié)果

        吞吐量指節(jié)點(diǎn)A 在單位時(shí)間內(nèi)接收到節(jié)點(diǎn)C 的數(shù)據(jù)量。圖18 顯示了網(wǎng)絡(luò)中2 個(gè)節(jié)點(diǎn)之間各時(shí)間段內(nèi)的平均吞吐量保持在70 kb/s 附近。

        圖18 平均吞吐量統(tǒng)計(jì)結(jié)果

        丟包率指?jìng)鬏斨兴鶃G失數(shù)據(jù)包占所發(fā)送數(shù)據(jù)包的比率。圖19 顯示了網(wǎng)絡(luò)中各時(shí)間段內(nèi)的平均丟包率在500 s 之后逐漸趨近于0.4%。

        圖19 平均丟包率統(tǒng)計(jì)結(jié)果

        4 結(jié)束語(yǔ)

        本文概述了PYNQ-Z2 平臺(tái)的軟硬件性能,介紹了Petalinux 工具在移植過程中的作用,分析了AODV-UU 協(xié)議的運(yùn)行機(jī)制并以PYNQ-Z2 為例研究了AODV 協(xié)議在嵌入式Linux-4.14 系統(tǒng)上的實(shí)現(xiàn)方案,解決了AODV 協(xié)議在當(dāng)前嵌入式Linux系統(tǒng)中的實(shí)際應(yīng)用問題,最后對(duì)協(xié)議在實(shí)際通信過程中的平均往返時(shí)間、平均丟包率等性能指標(biāo)進(jìn)行了測(cè)試,測(cè)試結(jié)果表明各性能指標(biāo)良好具備實(shí)際應(yīng)用價(jià)值。

        猜你喜歡
        嵌入式用戶系統(tǒng)
        Smartflower POP 一體式光伏系統(tǒng)
        WJ-700無(wú)人機(jī)系統(tǒng)
        ZC系列無(wú)人機(jī)遙感系統(tǒng)
        搭建基于Qt的嵌入式開發(fā)平臺(tái)
        連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
        嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
        關(guān)注用戶
        商用汽車(2016年11期)2016-12-19 01:20:16
        關(guān)注用戶
        商用汽車(2016年6期)2016-06-29 09:18:54
        關(guān)注用戶
        商用汽車(2016年4期)2016-05-09 01:23:12
        如何獲取一億海外用戶
        日本一区二区三区视频免费观看| 国产成人精品午夜二三区波多野 | 亚洲视一区二区三区四区| 美女射精视频在线观看| 国产精品国产高清国产专区 | 久久精品国产亚洲av四叶草| 国产av无码专区亚洲精品| 少妇性荡欲视频| 在线观看亚洲AV日韩A∨| 日本岛国大片不卡人妻| 精品国产一区二区av麻豆不卡| 精品人妻69一区二区三区蜜桃| 天天综合网网欲色| 欧美日韩不卡合集视频| 久久一区二区三区四区| 自拍av免费在线观看| 日本边添边摸边做边爱| 国产性生交xxxxx免费| 丰满少妇又紧又爽视频| 成人在线视频自拍偷拍| 亚洲熟妇av一区二区在线观看| 国产亚av手机在线观看 | 狼色在线精品影视免费播放| 国产一级一片内射视频在线| 一本色道久久亚洲综合| 日躁夜躁狠狠躁2001| 三级国产女主播在线观看| 国产影院一区二区在线| 亚洲av无码乱码在线观看富二代| 爽爽午夜影视窝窝看片| 熟妇与小伙子露脸对白| 亚洲人成网站色在线入口口 | 国产精品久久这里只有精品| 精品人妻少妇丰满久久久免| 久久成人国产精品一区二区| 九九99久久精品国产| 国产精品三级在线专区1| 激情网色图区蜜桃av| 亚洲国产果冻传媒av在线观看| 国产久热精品无码激情| 国产做床爱无遮挡免费视频|