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

?

QNX操作系統(tǒng)的網(wǎng)絡交換機驅動設計

2021-07-20 08:14:50傅遷
網(wǎng)絡安全技術與應用 2021年6期
關鍵詞:網(wǎng)絡接口網(wǎng)絡設備驅動程序

◆傅遷

(遼寧廣播電視大學丹東分校 遼寧 118000)

隨著持續(xù)的智能化電力系統(tǒng)不斷發(fā)展,對自動化設備的通信技術提出了更高的要求。在要求穩(wěn)定可靠的通信同時,它還需要盡可能多的網(wǎng)絡接口以及冗余的通信接口。傳統(tǒng)的通信中,模塊通常使用特定于CPU 的MAC 控制器以及獨立的PHY 來進行網(wǎng)絡通信。受到資源的桎梏,CPU 通常僅設計有兩個MAC 控制器,從而對擴展通信網(wǎng)絡的端口產(chǎn)生了限制。通過網(wǎng)絡交換芯片的88e6060 來設計具有五個或更多網(wǎng)絡端口的通信模塊比較容易,并且可以最大限度地滿足。電源系統(tǒng)關于通信的要求。

1 QNX 系統(tǒng)概述

QNX 是一種類似于UNIX 的操作系統(tǒng),也是實時的分布式操作系統(tǒng)。它通過特定微內核的結構,可以通過內核來、進程通信、底層的網(wǎng)絡通信以及中斷處理,所以具有較小的內核以及較快的運行速度。把內核中存儲的地址空間和文件系統(tǒng)、網(wǎng)絡協(xié)議、應用程序以及驅動程序中存儲的地址空間分開。應用程序難以對內核的空間進行直接的訪問。由于此類微內核的結構較為封閉,外部模塊故障對內核不能造成影響,大幅度地提升了系統(tǒng)的穩(wěn)定性。此外,QNX 支持擴展以及調整,并且可以根據(jù)用戶需求對各種功能的模塊進行定制,以開發(fā)靈活的嵌入式模塊。

2 QNX操作系統(tǒng)的網(wǎng)絡交換機驅動設計的原理

通信模塊通過AM3352 作為主控制的CPU。這是在ARM Cortex-A8 內核的微處理器基礎上,支持720MHz 的高主頻率,具有1600 DMIPS 的高計算能力,并且外圍的接口較為豐富??梢耘cDDR3結合使用以支持NAND 閃存以及eMM 的高容量。圖1 顯示了CPU和交換芯片之間連接情況。交換芯片是10/100 BaseT 的網(wǎng)絡收發(fā)器。端口P5 可以設計為以MII-PHY 模式連接到CPU。P0 到P4 可以與錄波器、DCS、信息子系統(tǒng)站以及其他網(wǎng)絡進行通信。

圖1 CPU 和交換芯片之間連接情況

3 QNX操作系統(tǒng)網(wǎng)絡交換機驅動程序設計

3.1 QNX 基礎上網(wǎng)絡驅動程序的層次結構

QNX 網(wǎng)絡模塊的實際使用分層的機構。網(wǎng)絡設備的驅動程序模塊位于最低級別,受到io-pkt 的管理以及調度,需要將數(shù)據(jù)的發(fā)送、傳遞以及接收情況向io-pkt 報告。中間層作為頂層以及底層之間搭建的數(shù)據(jù)橋,并為協(xié)議模塊提供較為一致的接口。頂層的資源管理器允許Socket API 調用的read、write 以及open 以及其他函數(shù)。利用讀取應用程序層將數(shù)據(jù)發(fā)送給io-pkt,并利用read 的應用程序層將源于io-pkt 的數(shù)據(jù)進行接收,利用write 這一應用層將數(shù)據(jù)發(fā)送給io-pkt,而io-pkt 用于進行UDP、TCP、IP 這類的網(wǎng)絡傳輸協(xié)議。

3.2 QNX 中網(wǎng)絡交換機驅動的方法以及原理

3.2.1 初始化模塊的設計

初始化模塊映射寄存器的地址空間,對寄存器進行配置,并向系統(tǒng)提供寄存器的中斷處理、數(shù)據(jù)包接收以及數(shù)據(jù)包發(fā)送等功能。這使系統(tǒng)能夠識別網(wǎng)絡設備,可以與網(wǎng)絡通信。最后,使用io-pkt 對數(shù)據(jù)包發(fā)送、接收進行調用。程序先要清除TX_HDP 以及RX_HDP,把CPPI 空間的前4KB 分給接收隊列的描述字Rx_Descriptors,并將最后4KB 空間用于發(fā)送隊列的描述字Tx_Descriptors。 Rx_Descriptors是使用以下結構界定的數(shù)組。它的Next 指向接下來的Rx_Descriptor,其Buffer 指向存儲數(shù)據(jù)主體儲存的RAM 空間,off_len 將有效數(shù)據(jù)的長度存儲在Buffer 中。flag_len 對數(shù)據(jù)包的有效長度以及緩沖區(qū)的狀態(tài)信息進行存儲。

為Rx_Descriptor 建立單一方向的鏈接列表,以便RX_HDP 能指向鏈接的列表開頭。列表詳見圖2。

圖2 接收隊列鏈表圖

建立隊列的描述表之后,驅動程序必須調用設備的函數(shù)dev_attach,以將網(wǎng)絡設備 dev 分配給每個端口。必須為結構iopkt_inter 對中斷使能函數(shù)以及中斷處理的函數(shù)進行定義,并最終在io-pkt 中注冊名為ether_ifattach、if_attach 以及interrupt_entry_init 的函數(shù)。

將IP 地址對MAC 地址進行映射,實現(xiàn)網(wǎng)絡中網(wǎng)絡設備的MAC地址是唯一的。初始化的程序進行配置文件的讀取,并得到每個網(wǎng)絡設備具有的IP 地址。接下來,將MAC[3:0]調整成IP[3:0],以對網(wǎng)絡設備的IP 地址以及MAC 地址進行同步。

在正常工作中,電網(wǎng)通信的特征大體是流量較小,但突發(fā)的流量大。通過網(wǎng)絡發(fā)送具有各種特征的數(shù)據(jù)包會產(chǎn)生各種的流量特點。不正確的網(wǎng)絡配置可能導致不正確的數(shù)據(jù)包傳輸、網(wǎng)絡風暴以及網(wǎng)絡通信系統(tǒng)運行異常。所以,通信設備需要一項功能,可以抵御網(wǎng)絡的風暴。所以,能夠將AM335X 的INT_CONTROL 以及RX_IMAX 寄存器配置為限制每毫秒可接收到的中斷數(shù)??梢钥刂瓢l(fā)生風暴時消耗的系統(tǒng)資源,并在風暴消失之后對通信的功能進行快速地恢復。

下一步要對DMA 引擎進行配置,打開DMA 的發(fā)送以及接收使能,并中斷使能DMA 中。最后,利用SMI 配置交換機的芯片,并將PHY 配置為自動協(xié)商操作的全雙工速率這一模式。為了實現(xiàn)網(wǎng)絡通信具有多個的網(wǎng)絡端口,應根據(jù)表1 對交換機路由表進行配置。

表1 VLANTable 的設置情況

配置成功之后,便呈現(xiàn)圖3 中連接情況。P0 至P4 與P5 是雙向的連接狀態(tài)。P0-P4 的接口收到源于外部的請求之后,經(jīng)由P5 接口將這些數(shù)據(jù)傳輸?shù)紺PU,CPU 完成處理后,P5 接口把數(shù)據(jù)傳輸?shù)秸埱蟮亩丝凇?/p>

圖3 路由圖的連接情況

3.2.2 中斷處理的設計

在網(wǎng)絡數(shù)據(jù)到達的時候,DMA 控制器將數(shù)據(jù)放置在外部的緩沖區(qū)中,并且CPU 對Rx_descriptor 中的flag_len、off_len 以及Buffer區(qū)域進行更新。此外,中斷控制器生成一個中斷的信號,然后io-pkt對該中斷進行接管,并間接地調用驅動程序中的函數(shù)process_interrupt。使用函數(shù)process_interrupt 調對函數(shù)Receive=進行調用,并完成數(shù)據(jù)的接收。

3.2.3 接收數(shù)據(jù)的設計

接收函數(shù)利用接收隊列的描述字,進而得到有效的數(shù)據(jù)長度,并使用該長度來對接收到的mbuf 數(shù)據(jù)鏈的mlen 以及m_pkthdr.len 域進行更新。利用RMMI 從P5 接口接收的數(shù)據(jù)是帶有標記的幀,在尾部帶有4 字節(jié)的定制標簽,進而在將數(shù)據(jù)發(fā)送給io-pkt 之前必須刪除其標簽。在mlen 上執(zhí)行減號4 的運算,同時通知源于哪個網(wǎng)絡接口的io-pkt 數(shù)據(jù)。標記幀的定制標簽的DPV[5:0]指示數(shù)據(jù)所源自的端口??梢允褂肈PV[5:0]對與網(wǎng)絡設備dev 有關的common_ecom[]的數(shù)組成員進行確定。對網(wǎng)絡接口ifnet 進行確定并將ifnet 參數(shù)在ip_input中傳遞,所以io-pkt 明白數(shù)據(jù)來自的網(wǎng)絡接口以及響應數(shù)據(jù)將到達的網(wǎng)絡接口。

3.2.4 發(fā)送數(shù)據(jù)的設計

啟動iif_start 這一分組傳輸?shù)暮瘮?shù)需要經(jīng)過io-pkt,并將響應數(shù)據(jù)發(fā)給有關相的網(wǎng)絡接口。因為P5 接口設計為egress trailer 的模式,所以驅動程序必須在響應數(shù)據(jù)的末尾之處添加一個tailer 標簽,具體為4 字節(jié)。所以,數(shù)據(jù)區(qū)域m3 通過m_get 函數(shù)對數(shù)據(jù)區(qū)m3 進行分配,用于tailer 標簽的存儲??梢越?jīng)由if_start 函數(shù)中ifnet 這一參數(shù),確定其網(wǎng)絡的設備。網(wǎng)絡設備當中,device_index 成對設備的ID 進行存儲,設備 ID 是數(shù)據(jù)發(fā)送到的端口序號。將 1 向左移動device_index 位之后,然后將其寫入m3 中的m_data 數(shù)據(jù)成員中。要告知88e6060 將數(shù)據(jù)發(fā)送到何處,把m3 與m2 的末尾進行鏈接,進而創(chuàng)建鏈接列表。由于添加了tailer 標簽(大小為4 個字節(jié)),需要將成員m1 當中的m_pkthdr.len 一直增加到4。最后,對發(fā)送隊列的描述字進行更新,將發(fā)送隊列描述字的起始地址寫入TX_HDP,并啟動TXDMA 進行數(shù)據(jù)的發(fā)送。

4 結語

交換芯片88e6060 允許輕松、方便地對網(wǎng)絡的接口進行擴展,以實現(xiàn)電力系統(tǒng)中自動化設備具有多個通信端口。88e6060 設計的通信模塊已完成實際測試。它的網(wǎng)絡通信穩(wěn)定、可靠并且能對抗網(wǎng)絡的風暴。將其用在電力系統(tǒng)領域,可以確保電力系統(tǒng)的性能穩(wěn)定。

猜你喜歡
網(wǎng)絡接口網(wǎng)絡設備驅動程序
變電站網(wǎng)絡接口物理防護系統(tǒng)設計與實現(xiàn)
一種基于C# 的網(wǎng)絡設備自動化登錄工具的研制
淺析CTC與GSM-R系統(tǒng)網(wǎng)絡接口及路由配置改進措施
數(shù)據(jù)中心唯“快”不破
網(wǎng)絡設置管理
京滬高鐵GSM-R網(wǎng)絡接口監(jiān)測網(wǎng)關子系統(tǒng)的設計與實現(xiàn)
基于列車監(jiān)測網(wǎng)絡設備的射頻功放模塊設計
基于三層交換技術架構數(shù)字化校園網(wǎng)絡設備的配置與管理
驅動程序更新與推薦
驅動程序更新與推薦
马龙县| 嘉黎县| 黄大仙区| 康保县| 泾川县| 大埔县| 库伦旗| 灌阳县| 吐鲁番市| 会同县| 合阳县| 神池县| 阿拉善左旗| 仪陇县| 阿克| 黔西| 洪雅县| 连平县| 团风县| 龙口市| 卢湾区| 宁城县| 瑞丽市| 嘉禾县| 奉贤区| 株洲县| 邢台县| 卫辉市| 康乐县| 沈阳市| 蕉岭县| 额济纳旗| 德安县| 永川市| 莎车县| 海盐县| 正阳县| 鹿邑县| 阿城市| 沁水县| 红原县|