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

基于1553B總線的IP網(wǎng)絡設計與實現(xiàn)

2011-01-23 02:36:42王若龍張善從
計算機工程與設計 2011年2期
關鍵詞:設備

王若龍, 張善從

(1.中國科學院光電研究院,北京100190;2.中國科學院研究生院,北京100049)

0 引 言

MIL-STD-1553B總線是在20世紀70年代末為適應飛機的發(fā)展由美國提出的飛機內部電子系統(tǒng)連網(wǎng)標準。它是一種規(guī)定了“時分制命令/響應式的多路數(shù)據(jù)傳輸總線”網(wǎng)絡的硬件和軟件的技術要求,作為一種理想的實時通信總線,MILSTD-1553B總線具有1Mbps的傳輸速度,由總線控制器(BC)進行控制和管理總線上所有終端的數(shù)據(jù)傳輸。

1553B總線具有較高的可靠性和靈活性,廣泛應用于軍事、航空航天系統(tǒng),比如飛機、軍艦、衛(wèi)星以及國際空間站等。隨著我國通信衛(wèi)星,深空探測和載人航天等項目的開展,1553B總線技術在國內航天領域的應用也日益廣泛。航天產(chǎn)品的地檢設備往往需要具有1553B總線數(shù)據(jù)訪問功能。為了方便數(shù)據(jù)的傳輸和共享,一般會在這些設備上開發(fā)基于TCP/IP網(wǎng)絡的應用軟件。同時,對于底層為1553B總線的分層網(wǎng)絡系統(tǒng)而言,實現(xiàn)各層間數(shù)據(jù)在網(wǎng)絡層的共享十分重要。

本文闡述了在Linux操作系統(tǒng)下,使用1553B協(xié)議的PCI接口卡,通過開發(fā)網(wǎng)絡設備驅動程序實現(xiàn)基于1553B總線的TCP/IP網(wǎng)絡。該實現(xiàn)方案不僅有效的提高了1553B總線的靈活性和可擴展性,而且使得1553B總線終端可以與以太網(wǎng)的網(wǎng)絡結點進行數(shù)據(jù)通信。

1 1553 B接口卡的硬件設計

1.1 硬件結構

PCI總線是當今普遍使用在桌面以及更大型計算機系統(tǒng)上的外設總線,而且該總線在Linux內核中得到非常好的支持。該系統(tǒng)使用運行Linux操作系統(tǒng)的個人計算機作為硬件基礎,設計并開發(fā)基于PCI總線接口的1553B協(xié)議的板卡,不僅可以有效利用操作系統(tǒng)的支持,而且提高了1553B設備的通用性。

1553B總線接口卡主要包括1553B總線通道、1553B總線控制器、控制邏輯單元、PCI總線控制器和PCI配置用存儲芯片等部分。系統(tǒng)框圖如圖1所示。

圖1 1553B協(xié)議接口卡系統(tǒng)

1.2 PCI總線接口實現(xiàn)

PCI總線接口采用PLX技術公司的PCI 9052協(xié)議芯片,該芯片是一款功能強大、使用靈活的PCI總線控制器接口芯片。PCI 9052兼容PCI v2.1規(guī)范,運行于PCI目標設備下,其突發(fā)傳輸速率可以達到132Mbps。芯片內部具有用于讀寫的FIFO,并且該芯片支持8、16和32位寬的局部總線,這些特性使得PCI 9052芯片滿足1553B總線的數(shù)據(jù)通信需求。

1.3 1553總線接口實現(xiàn)

1553B總線接口控制單元采用成熟的1553B協(xié)議芯片——DDC公司的BU61580。該芯片完全集成了1553A/B Notice2,芯片可配置成遠程終端(RT)、總線控制器(BC)或者總線監(jiān)視器(MT),芯片內部包含4K的RAM空間。

該芯片具有以下主要特性:

(1)BC自動重試;

(2)BC消息傳輸時間可編程;

(3)BC消息幀自動重復;

(4)BC可編程響應超時;

(5)RT單消息、雙緩沖、循環(huán)緩沖可選的數(shù)據(jù)緩存;

(6)RT子地址可編程BUSY位。

上述特性說明使用 BU61580芯片可以方便靈活的實現(xiàn)1553B總線協(xié)議,主要的功能設置都可以通過軟件實現(xiàn)。該芯片的總線通道可以采用直接耦合和變壓器耦合兩種方式,提高了板卡的兼容性和可靠性。

1.4 接口邏輯實現(xiàn)

接口控制邏輯單元采用Xilinx公司的XC95114芯片實現(xiàn),該芯片具有充足的邏輯資源和大量寄存器,主要實現(xiàn)總線接口芯片PCI 9052和1553B協(xié)議芯片BU 61580之間的握手、片選、配置等邏輯控制。

2 Linux2.6內核及驅動模型

Linux操作系統(tǒng)是在Internet上發(fā)展起來的,其在網(wǎng)絡方面具有良好的性能以及豐富的產(chǎn)品和網(wǎng)絡分析工具,而且它還可以方便的將主機配置成具有路由功能。雖然Linux2.4內核仍被廣泛應用,但是自從2003年Linux2.6.0發(fā)布至今,2.6版本的內核已經(jīng)十分穩(wěn)定,并且相對于2.4版本的內核有相當大的改進。內核在設備驅動方面增加了不少新功能,并且在sysfs文件系統(tǒng)、模塊文件格式、模塊使用計數(shù)、模塊加載和卸載函數(shù)的定義等做了改進。

本文采用了基于Linux2.6.29內核的Fedora系統(tǒng)作為軟件開發(fā)平臺,該版本內核對網(wǎng)絡設備和PCI設備驅動的接口和變量又做了進一步的封裝。

2.1 PCI驅動模型

PCI總線具有的平臺無關特性使得PCI廣泛應用于IA-32、Alpha、PowerPC、SPARC64和 IA-64等眾多系統(tǒng)中。PCI設備在系統(tǒng)的引導階段由引導程序和操作系統(tǒng)自動完成對系統(tǒng)中所有PCI設備的配置,當PCI設備的驅動程序被掛載的時候,其內存和I/O區(qū)域已經(jīng)被映射到了處理器的地址空間。

Linux內核使用兩個重要的結構體描述 PCI總線系統(tǒng)。pci_bus用于描述PCI總線,pci_dev用于描述PCI設備。由于PCI只是一種總線,其作為一種控制功能設備的手段而存在。因此,PCI設備的驅動程序應至少包括PCI驅動和設備驅動兩部分。Linux內核使用pci_driver結構體定義PCI驅動,該結構體中包含PCI設備的加載/刪除、掛起/恢復等接口函數(shù)。PCI總線系統(tǒng)的3個主要結構體在Linux內核中的層次結構和相互關系如圖2所示。

pci_bus結構體中的pci_ops類型的指針ops指向該PCI總線所使用的配置空間訪問操作。pci_ops結構體中包含read和write兩種操作可用于讀寫PCI配置空間,根據(jù)這兩個函數(shù)的參數(shù)可以定位到PCI總線上相應的PCI邏輯設備。Linux內核提供了具體的配置空間操作接口 pci_read_config_byte(word/dword)和pci_write_config_byte(word/dword),可以方便的實現(xiàn)配置空間的字節(jié)、字和雙字的操作。如果驅動程序還不能獲得pci_dev對象,內核提供了使用pci_bus對象作為參數(shù)的另外一對讀寫接口,pci_bus_read_config_byte(word/dword)和pci_bus_write_config_byte(word/dword)。

2.2 網(wǎng)絡設備驅動模型

在Linux系統(tǒng)中,網(wǎng)絡設備不同于字符設備和塊設備,它作為一種獨立的特殊設備而存在,并且系統(tǒng)內核提供了一系列專屬于它們的操作接口。

Linux內核中的網(wǎng)絡設備驅動被設計成完全與協(xié)議無關,網(wǎng)絡驅動程序通常不需要分析上層協(xié)議的數(shù)據(jù),只簡單的把這些數(shù)據(jù)作為其有效載荷數(shù)據(jù)進行傳輸。Linux系統(tǒng)對網(wǎng)絡設備驅動進行的分層結構如圖3所示。

(1)協(xié)議接口層通過dev_queue_xmit()函數(shù)發(fā)送網(wǎng)絡層的數(shù)據(jù),硬件接收到的數(shù)據(jù)通過netif_rx()函數(shù)傳到網(wǎng)絡層,二者均以sk_buff結構體作為參數(shù),這一層有效地將網(wǎng)絡協(xié)議和具體設備進行了隔離。

(2)設備接口層使用net_device結構體描述了具體的網(wǎng)絡設備屬性和各種回調接口,系統(tǒng)將通過該結構體調用驅動功能層提供的各功能函數(shù)。

(3)驅動功能層主要完成數(shù)據(jù)包的發(fā)送和接收,比如net_device_ops結構體中的ndo_start_xmit()用于將數(shù)據(jù)包寫入具體的網(wǎng)絡設備。

(4)設備與媒介層表示了具體的數(shù)據(jù)傳輸載體,對于Linux系統(tǒng)而言,這個載體既可以是一個物理的網(wǎng)絡設備,也可以是一個在計算機內存中構造的完全虛擬的設備。對于本文來說則包含1553B總線終端和相關的芯片操作接口。

圖2 PCI總線層次結構

圖3 Linux網(wǎng)絡設備驅動程序的分層結構

另外,數(shù)據(jù)包的接收由硬件中斷引起,在中斷處理函數(shù)中讀取硬件接收的數(shù)據(jù),并通過dev_alloc_skb()申請一個sk_buff結構體,將數(shù)據(jù)放入該結構中,通過協(xié)議接口層的netif_rx()將其傳遞給上層協(xié)議。

3 接口卡驅動程序開發(fā)

TCP/IP網(wǎng)絡互連協(xié)議屬于對等的開放式網(wǎng)絡協(xié)議,它不僅平等對待所有網(wǎng)絡節(jié)點,而且不依賴于互連設備的實現(xiàn)細節(jié)。MIL-STD-1553B總線屬于高可靠性的仲裁機制總線,所有的數(shù)據(jù)傳輸服務都由BC(BusController)來控制的,這意味著1553B總線并非對等式的網(wǎng)絡協(xié)議,但這并不阻礙在1553B總線上實現(xiàn)IP網(wǎng)絡數(shù)據(jù)的傳輸。

通過編寫驅動程序使1553B接口卡變成Linux系統(tǒng)下的網(wǎng)絡設備,通過軟件控制1553B協(xié)議芯片將網(wǎng)絡層的數(shù)據(jù)包封裝進1553B消息幀完成傳輸。Linux內核的網(wǎng)絡驅動中具有專門為以太網(wǎng)提供支持的通用接口,以太網(wǎng)接口上使用的tcpdump等網(wǎng)絡分析工具也有助于驅動程序的開發(fā)和使用。所以本文采用以太網(wǎng)模型開發(fā)1553B接口卡驅動。驅動程序共分為三層,由上到下依次為PCI驅動層,以太網(wǎng)驅動層,硬件接口層。

3.1 PCI驅動程序開發(fā)

1553B接口卡通過PCI總線接入計算機系統(tǒng),因此PCI驅動是實現(xiàn)設計方案的基礎。定義一個pci_driver類型的全局對象,至少初始化對象中的name、id_table、probe和remove成員。在module_init()指定的驅動模塊裝載函數(shù)中通過調用pci_register_driver()注冊pci_driver類型的全局對象。系統(tǒng)將會執(zhí)行對象中的probe指針所設定的探測函數(shù),驅動程序需要在該函數(shù)內實現(xiàn)PCI相關的初始化,并注冊以太網(wǎng)設備。

module_exit()指定的模塊刪除函數(shù)調用 pci_unregister_driver()對已注冊的pci_driver對象注銷時,系統(tǒng)將會執(zhí)行pci_driver對象的remove指針所設定的刪除函數(shù),驅動程序需要在該函數(shù)內完成刪除模塊前的資源釋放,并注銷以太網(wǎng)設備,PCI層驅動的加載和刪除的控制流如圖4和圖5所示。

圖4 PCI驅動裝載

圖5 PCI驅動刪除

3.2 以太網(wǎng)驅動開發(fā)

PCI驅動層使用alloc_etherdev()動態(tài)的申請以太網(wǎng)設備對象,并通過register_netdev()函數(shù)注冊該設備對象時將引起對象中的ndo_init成員所設定的回調函數(shù)的執(zhí)行,驅動程序需要在該函數(shù)內完成網(wǎng)絡驅動層的初始化,比如net_device_ops中的設備操作函數(shù)指針、header_ops中的以太網(wǎng)幀頭操作函數(shù)指針的賦值,中斷申請和用于互斥訪問的自旋鎖的初始化,以及調用硬件操作接口對硬件芯片的初始化。

當刪除接口卡驅動模塊時,由PCI驅動層調用unregister_netdev()函數(shù)注銷以太網(wǎng)設備對象。對象的注銷會引起對象中的ndo_uninit()函數(shù)執(zhí)行,在該函數(shù)內釋放中斷等系統(tǒng)資源,并關閉1553B通道,停止芯片工作。

1553B接口卡區(qū)別于以太網(wǎng)設備的地方在于數(shù)據(jù)的發(fā)送和接收。1553B協(xié)議芯片要求將要發(fā)送的數(shù)據(jù)寫入片內RAM,之后需要等到下一次中斷的發(fā)生才能真正完成數(shù)據(jù)的傳輸,這期間如果寫入新的數(shù)據(jù)將會造成覆蓋,也就要求數(shù)據(jù)的發(fā)送和接收都在中斷里執(zhí)行。為了避免數(shù)據(jù)的覆蓋可以在驅動中維護一個發(fā)送隊列鏈表,將來自網(wǎng)絡層的數(shù)據(jù)包添加到鏈表的尾部,每次中斷從鏈表頭部提取數(shù)據(jù)寫入芯片。

1553B協(xié)議芯片要求以子地址為數(shù)據(jù)傳輸?shù)囊粋€單位,每個子地址一次最多可以傳輸64Bytes。但是,該實現(xiàn)中并沒有將網(wǎng)絡設備的MTU設定為64B,因為這會大大降低數(shù)據(jù)傳輸?shù)耐掏侣省H绻褂胣(0

另外,真正的以太網(wǎng)卡只要在初始化時正確填寫了net_device對象的addr和addrlen成員,協(xié)議層就會自動使用ARP協(xié)議進行IP地址和硬件地址的轉換。但是1553B接口卡的硬件地址不同于以太網(wǎng),但是仍然使用以太網(wǎng)頭區(qū)分總線上不同的終端。驅動中需要包含一張表格用于保存總線上所有終端的RT地址和以太網(wǎng)地址的對應關系,在header_ops的create()函數(shù)中查詢該表用于確定數(shù)據(jù)包的目的RT地址,該函數(shù)在數(shù)據(jù)發(fā)送函數(shù)ndo_start_xmit()之前被用于建立硬件頭。

圖6 物理幀控制字

3.3 硬件接口開發(fā)

數(shù)據(jù)的發(fā)送和接收最終都要通過 1553B協(xié)議芯片BU61580實現(xiàn),BU61580的操作函數(shù)向以太網(wǎng)驅動層提供高效可靠的硬件操作接口。操作接口函數(shù)除基本的寄存器和RAM區(qū)讀寫函數(shù)ReadRegister/WriteRegister,ReadRam/WriteRam分為BC和RT兩個部分,分別完成終端的初始化、發(fā)送數(shù)據(jù)的寫入、讀取接收數(shù)據(jù)、1553B消息定義、幀定義等。

本文的實現(xiàn)中設置BC和RT的中斷模式為幀中斷,RT使用服務請求模式,當有數(shù)據(jù)傳輸時主動請求獲得總線時間。另外,減小BC的幀傳輸時間可以提高總線數(shù)據(jù)傳輸?shù)耐掏侣剩瑫r又要滿足每條總線消息的最小傳輸時間 (本文設置為1000us)。

4 測試與分析

搭建測試系統(tǒng)如圖7所示,其中Computer是一臺帶有以太網(wǎng)卡的計算機。GateWay是一臺裝有傳統(tǒng)以太網(wǎng)卡和1553B接口卡的計算機,1553B接口卡通過耦合器接入1553B總線,作為 BC同時運行所開發(fā)的以太網(wǎng)驅動。而計算機 RT11和RT1都裝有1553B接口卡,都最為1553B總線的遠程終端,并且只在RT11上運行所開發(fā)的以太網(wǎng)驅動。

圖7 測試系統(tǒng)框架(靜態(tài)分配IP地址)

RT11和GateWay兩臺計算機之間使用ping程序測試,并使用tcpdump抓取網(wǎng)卡數(shù)據(jù)輸出如圖8所示。GateWay計算機上通過命令#route add–net 192.168.11.0 netmask 255.255.255.0添加一條路由表項,并運行命令#echo 1>/proc/sys/net/ipv4/ip_forward使得來自1553B總線上的數(shù)據(jù)包可以由GateWay進行路由轉發(fā)。RT11和DesktopComputer之間使用ping程序的測試數(shù)據(jù)如圖9所示。

開發(fā)基于TCP/IP的應用程序,對GateWay(server)和RT11(client)進行網(wǎng)絡性能的測試,結果顯示基于1553B總線的IP網(wǎng)絡的平均數(shù)據(jù)吞吐率為40KBps。增加用于某一方向上數(shù)據(jù)傳輸?shù)淖拥刂窋?shù)量,還可以提高該方向的數(shù)據(jù)吞吐率。

圖8 1553B總線內互連測試

該實現(xiàn)方案的數(shù)據(jù)吞吐率沒有達到1553B總線的最大數(shù)據(jù)傳輸速率,主要是因為在中斷處理程序中首先要停止BU61580芯片,然后處理RAM中的所有數(shù)據(jù),完成后再啟動芯片繼續(xù)工作,并且在每條消息的數(shù)據(jù)中增加了2個字節(jié)的物理幀控制字,消耗了一定的總線時間。

5 結束語

本文介紹了一種基于1553B總線的IP網(wǎng)絡實現(xiàn)方法。在Linux2.6操作系統(tǒng)下,通過對1553B接口卡開發(fā)以太網(wǎng)驅動的方法實現(xiàn)了1553B消息對IP數(shù)據(jù)包的封裝和傳輸。使用該系統(tǒng)可以開發(fā)基于以太網(wǎng)的各種應用程序,并且可以實現(xiàn)與以太網(wǎng)等其它網(wǎng)絡的互連。

通過設置收發(fā)數(shù)據(jù)所使用的子地址數(shù)量還可以控制網(wǎng)絡的上下行帶寬,甚至可以保留一定數(shù)量的子地址用于傳統(tǒng)的1553B消息的傳輸。Linux系統(tǒng)中豐富的網(wǎng)絡數(shù)據(jù)分析工具均可用于該系統(tǒng)。

[1] 刑秀琴,姚竹亭.基于1553B總線的通信接口及其應用[J].中北大學學報(自然科學版),2007,28(1):91-94.

[2] Ben Truitt R,Edward Sanchez,Michael Garis.Using open networking standards over MIL-STD-1553 networks[J].IEEE A&E Systems Magazine,2005,20(3):29-34.

[3] PCI 9052 data book version 2.1[S].2008.

[4] ACE/Mini-ACE series BC/RT/MT advanced communication engine integrate 1553 terminal user's guide[S].2003.

[5] 邰全親,傅嵐,楊京松.基于以太網(wǎng)的1553B仿真測試設備設計[J].計算機測量與控制,2008,16(11):1559-1560.

[6] 林宇,趙瑋,尚智,等.基于PCI總線的MIL-STD-1553B板卡設計[J].控制工程,2005(5):82-87.

[7] 林生,范冰冰,張奇支,等.計算機網(wǎng)絡與因特網(wǎng)[M].北京:機械工業(yè)出版社,2009.

[8] 宋寶華.Linux設備驅動開發(fā)祥解[M].北京:人民郵電出版社.2008.

[9] 魏永明,耿岳,鐘書毅.Linux設備驅動程序[M].北京:中國電力出版社,2006.

[10]Sreekrishnan Venkateswaran.Essential Linux device drivers[M].London:Prentice Hall,2008.

猜你喜歡
設備
諧響應分析在設備減振中的應用
調試新設備
當代工人(2020年13期)2020-09-27 23:04:20
基于VB6.0+Access2010開發(fā)的設備管理信息系統(tǒng)
基于MPU6050簡單控制設備
電子制作(2018年11期)2018-08-04 03:26:08
廣播發(fā)射設備中平衡輸入與不平衡輸入的轉換
電子制作(2018年10期)2018-08-04 03:24:48
食之無味,棄之可惜 那些槽點滿滿的可穿戴智能設備
500kV輸變電設備運行維護探討
HTC斥資千萬美元入股虛擬現(xiàn)實設備商WEVR
IT時代周刊(2015年8期)2015-11-11 05:50:37
Automechanika Shanghai 2014 之“看” 汽保設備篇
如何在設備采購中節(jié)省成本
主站蜘蛛池模板: 亚洲h视频在线| 久久毛片基地| a在线亚洲男人的天堂试看| 亚洲欧美综合在线观看| 欧美区日韩区| 超级碰免费视频91| 丰满少妇αⅴ无码区| 精品国产99久久| jizz亚洲高清在线观看| 免费又黄又爽又猛大片午夜| 国产永久免费视频m3u8| 日日摸夜夜爽无码| 性喷潮久久久久久久久| 国产免费久久精品99re不卡| 日韩高清一区 | 欧美成人手机在线视频| 久久久久青草线综合超碰| 国产成人精品2021欧美日韩| 精品国产自在在线在线观看| 精品91自产拍在线| 亚洲香蕉伊综合在人在线| 美女视频黄又黄又免费高清| 国产精品综合色区在线观看| 亚洲色欲色欲www网| 99久久性生片| 无码久看视频| 中文字幕免费视频| 国产三级a| 国产成人8x视频一区二区| 亚洲成aⅴ人在线观看| 精品免费在线视频| 麻豆国产原创视频在线播放| 99在线视频免费| 无码国产伊人| 99精品免费欧美成人小视频 | 在线观看视频一区二区| 国产国语一级毛片| 成人在线不卡视频| 欧美天堂久久| 亚洲精品777| 米奇精品一区二区三区| 成人欧美日韩| 亚洲无码电影| 国产精品青青| 国产区在线观看视频| 久久免费观看视频| 97久久精品人人| 久久综合国产乱子免费| 国产av一码二码三码无码| 国产成人a在线观看视频| 亚洲色图狠狠干| 国产精品自在在线午夜区app| 日本www色视频| 精品精品国产高清A毛片| yy6080理论大片一级久久| 国产无码在线调教| 国产波多野结衣中文在线播放| 亚洲国产精品久久久久秋霞影院| 久久大香伊蕉在人线观看热2 | 国产成人无码久久久久毛片| 亚洲精品国偷自产在线91正片| 亚洲午夜天堂| 亚洲最大福利视频网| 国产不卡在线看| 人人爱天天做夜夜爽| 国产精品福利导航| 国产精品私拍在线爆乳| 全部免费毛片免费播放| 欧美午夜视频在线| 毛片手机在线看| 欧美精品三级在线| 国产内射在线观看| 国产精品三级av及在线观看| 国产欧美精品午夜在线播放| 欧美一级片在线| 免费a级毛片视频| a毛片在线| 尤物亚洲最大AV无码网站| 成人在线第一页| 国产精品欧美亚洲韩国日本不卡| 国产自在线拍| 国产成人福利在线视老湿机|