?

CentOS下AFDX端系統驅動設計與實現*

2017-12-29 06:15李曉東
網絡安全與數據管理 2017年24期
關鍵詞:內核總線航空

鄭 濤,張 雙,李曉東

(中航工業西安航空計算技術研究所,陜西 西安 710068)

CentOS下AFDX端系統驅動設計與實現*

鄭 濤,張 雙,李曉東

(中航工業西安航空計算技術研究所,陜西 西安710068)

分析了AFDX網絡和CentOS操作系統的工作機制,針對民用大飛機航空電子網絡測試設備的需求,提出了基于X86架構的CentOS操作系統的AFDX端系統驅動設計方案和實現方法。依據設計方案和實現方法,編碼實現了CentOS下AFDX端系統驅動,并且在PC主機上完成了驅動的驗證工作。

CentOS;AFDX;端系統;驅動;設計;實現

0 引言

大型民用飛機的數據通信技術是飛機航空電子系統實現綜合化、模塊化和分布式的關鍵技術。航空電子全雙工交換式以太網(AFDX)是ARINC664P7[1]規范和定義的一種總線協議,被廣泛應用于航空網絡的數據通信,能夠適應航空電子設備與系統之間的互聯互通要求。民用大飛機采用了AFDX總線作為全機的網絡總線[2]。為了對大型民用飛機系統的航空網絡進行測試,需要研制民用飛機機載測試設備。民用機載測試設備考慮到經濟性,大多采用Linux操作系統作為測試設備的操作系統軟件,采用AFDX端系統作為大型民用飛機系統航空網絡測試的數據通道。CentOS作為一種常用的Linux操作系統,開發基于CentOS的AFDX端系統驅動,可以節省民機機載航電網絡系統測試設備的研發和研制費用,進而達到更高的實用性和市場占有率?;诖朔N考慮,本文在X86架構PC上安裝了32位CentOS操作系統,并且在主板上安裝了PCI槽口的AFDX端系統,在此基礎上設計和開發了基于PC的CentOS下AFDX端系統的驅動。

1 AFDX端系統介紹

AFDX協議是航空全雙工交換式以太網協議,是本著提高以太網的傳輸效率,盡可能地減少總線競爭的思想開發的專用以太網。任何AFDX端口之間都可以建立起一個傳輸信道,以標稱傳輸速度來傳輸數據,優點是不存在總線競爭,能顯著提高系統的傳輸效率,缺點是不易控制最大傳輸時延。

AFDX協議是對TCP/IP協議的改進,通過對TCP/IP協議的裁剪,適用于航空領域。AFDX協議對TCP/IP協議的運輸層裁剪后只支持UDP協議、TCP協議和ICMP協議,從而精簡了協議架構,便于航空領域的應用。AFDX協議層如圖1所示。

圖1 AFDX協議層

航空領域中專門用于處理AFDX協議的硬件和驅動軟件集合實體統稱為AFDX端系統。

AFDX端系統的硬件實現AFDX協議的MAC層、數據鏈路層、IP層和運輸層的協議,保證數據從PHY上接收后依據AFDX協議的層次結構來安全可靠地處理。

AFDX端系統驅動軟件是對AFDX端系統硬件資源進行統一管理和控制,實現PCI接口驅動、硬件狀態的轉換、寄存器資源的設置、健康監控管理、通信接口、故障記錄上報和用戶驅動接口等功能。

2 CentOS下AFDX端系統驅動設計

2.1 CentOS操作系統概述

社區企業操作系統(Community Enterprise Operating System,CentOS)是Linux發行版之一,由紅帽企業級操作系統源代碼編譯而成。CentOS操作系統具有高度的穩定性和可靠性,因此在CentOS操作系統上開發的AFDX端系統驅動具有良好穩定的運行環境。

CentOS操作系統運行分為內核態和用戶態[3]。內核態是操作系統所運行的模式,運行在該模式的代碼可以無限制對系統存儲、外部設備進行訪問。用戶態是最低特權級,是普通的用戶進程運行的特權級[4],大部分用戶直接面對的程序都是運行在用戶態。因此在CentOS下開發AFDX端系統驅動時應該考慮CentOS的內核態和用戶態程序執行的特點,以使開發的驅動代碼具有良好的可靠性和穩定性。

2.2 CentOS下AFDX端系統驅動總體架構

CentOS下AFDX端系統驅動開發是在PC主機上開發可用的驅動代碼,便于AFDX端系統能夠廣泛地應用于日常的PC主機,從而提高端系統的適用性和經濟性。AFDX端系統硬件插入PC主板的PCI槽,主板與AFDX端系統之間通過PCI總線交換數據。

CentOS下AFDX端系統驅動開發時根據操作系統和AFDX端系統與宿主機硬件連接特點,設計出如圖2所示的AFDX端系統驅動總體架構。

圖2 CentOS下AFDX端系統驅動總體架構

CentOS下AFDX端系統驅動總體架構根據驅動開發的模型和規范以及CentOS操作系統運行特點,將AFDX端系統驅動分別映射到CentOS操作系統的內核態和用戶態,這樣的映射有以下三個好處:

(1)因為AFDX端系統硬件與PC主板通過PCI總線插槽連接,因此內核態主要完成PCI總線驅動和AFDX端系統硬件資源分配和釋放,而將大量與上層應用需要交互的功能在用戶態實現,有利于內核驅動代碼的精簡。

(2)上層應用調用用戶態驅動時,如果用戶態下AFDX端系統驅動自身錯誤出現,不會因此而導致操作系統崩潰,從而不影響操作系統其他應用的正常運行。

(3)CentOS下AFDX端系統驅動設計采用分層的思想,有利于驅動的開發和移植。如果AFDX端系統驅動需要移植到只有一個態的操作系統,此時只需要修改用戶態下的AFDX端系統驅動代碼中與PCI接口相關的代碼。

根據CentOS下AFDX端系統驅動總體架構,內核態下分布的AFDX端系統驅動主要完成PCI總線驅動和AFDX端系統硬件資源的分配、管理和釋放,因此分配的功能有:驅動注冊功能、設備探測功能、設備文件操作功能、PCI總線驅動初始化和PCI總線驅動移除。

用戶態下分布的AFDX端系統驅動主要完成向上層應用提供AFDX端系統通信和管理功能,因此分配的功能有:用戶態PCI設備操作功能、初始化功能、配置操作功能、模式管理功能、監控管理功能、通信功能、健康管理功能。

內核態下AFDX端系統驅動與用戶態下AFDX端系統驅動之間通過I/O方式通信交換數據。

2.3 CentOS下AFDX端系統驅動功能概述

依據CentOS下AFDX端系統驅動總體架構,AFDX端系統驅動分為內核態下AFDX端系統驅動功能和用戶態下AFDX端系統驅動功能。

內核態下AFDX端系統驅動功能如下:

(1)驅動注冊功能:實現AFDX端系統PCI總線驅動向CentOS內核驅動模塊的注冊,將AFDX端系統PCI總線驅動加入到內核驅動的數據結構,作為內核驅動的一個驅動節點,便于驅動的使用。

(2)設備探測功能:實現AFDX端系統設備的發現,PCI總線地址空間、內存空間、I/O端口、配置寄存器和設備資源分配以及I/O地址空間到處理器的地址空間的映射。

(3)設備文件操作功能:設備在CentOS操作系統下都是作為文件被處理,因此設備文件操作功能實現設備以文件方式的打開、讀寫和關閉等功能以及內核態PCI總線讀寫操作的功能。

(4)PCI總線驅動初始化:實現端系統PCI總線的硬件資源的初始化和端系統驅動數據結構的初始化。

(5)PCI總線驅動移除:實現AFDX端系統驅動在內核下的卸載。

用戶態下AFDX端系統驅動在功能分解時考慮到功能間的松耦合特性,將驅動功能分解為如下功能:

(1)初始化功能:實現用戶態下AFDX端系統驅動數據結構資源的分配和靜態數據結構的建立。

(2)配置操作功能:實現AFDX端系統配置文件的解析、加載、刪除和清除等功能。

(3)模式管理功能:實現AFDX端系統的模式轉換和不同模式下的功能。AFDX端系統的模式分為初始模式、配置模式和運行模式。初始模式的功能是初始化驅動軟件的資源;配置模式的功能是加載AFDX端系統的配置文件;運行模式的功能是根據加載的配置文件,實現AFDX消息通信。

(4)監控管理功能:實現對AFDX端系統收發寄存器的狀態、收發消息隊列和內部寄存器的監控和管理功能。

(5)通信功能:實現AFDX端系統的AFDX消息的收發API,主要實現了隊列端口消息、采樣端口消息、SAP端口消息和ICMP消息[5-6],以便于提供給上層應用調用。

(6)健康管理功能:實現AFDX端系統中硬件和軟件的健康狀態監控和記錄功能,并且將健康狀態信息存儲于MIB庫,以向外部傳送健康狀態信息;此外,健康管理功能也實現了SNMP協議功能,通過SNMP協議可以遠程訪問AFDX端系統上的MIB庫。

(7)用戶態PCI設備操作功能:實現用戶態調用內核態的PCI設備操作的API接口的封裝,用于用戶態和內核態間數據的傳遞和拷貝,從而達到用戶態和內核態的數據通信。

3 CentOS下AFDX端系統驅動實現

CentOS下AFDX端系統驅動的實現分為兩個部分:內核態下AFDX端系統驅動實現和用戶態下AFDX端系統驅動實現,從而達到AFDX端系統驅動可用。

3.1 內核態下AFDX端系統驅動實現

內核態下AFDX端系統驅動實現的主要目標是內核中能夠通過PCI總線[7]找到設備和分配PCI總線配置空間[8],并且提供以文件方式操作AFDX端系統設備的接口[9],從而形成內核態中管理和操作AFDX端系統的設備結構[10]。內核態下AFDX端系統驅動工作流程如圖3所示。

通過圖3的工作流程,AFDX端系統在內核態下完成注冊和初始化,在CentOS下通過命令即可查看到AFDX端系統硬件對應的設備句柄。

3.2 用戶態下AFDX端系統驅動實現

用戶態下AFDX端系統驅動實現的主要目標是實現AFDX端系統從初始模式到加載模式直到運行模式的工作流程,在AFDX端系統硬件處于正常工作模式后,上層應用調用通信功能中相應的通信接口開始AFDX消息的通信。

用戶態下AFDX端系統驅動工作流程如圖4所示。

圖3 內核態AFDX端系統驅動工作主流程

圖4 用戶態AFDX端系統驅動工作主流程

4 CentOS下AFDX端系統驅動功能驗證

在X86的PC上安裝CentOS,并且在PC主板的PCI插槽上安裝了PCI接口的AFDX端系統,最后根據前述的方法實現了AFDX端系統驅動。

對于實現的內核態下的AFDX端系統驅動編譯生成了pci_es_dev_drv.ko文件,將pci_es_dev_drv.ko文件放置到CentOS文件系統的如下路徑:/lib/modules/3.0.89-rt117.el5.eads.ts.5/kernel/drivers/pci/ESDriver/pci_es_dev_driver.ko,此外在CentOS的文件系統的/etc/rc.d/rc.local的shell腳本中增加如下的語句:insmod /lib/modules/3.0.89-rt117.el5.eads.ts.5/kernel/drivers/pci/ESDriver/pci_es_dev_driver.ko。增加這樣的修改后,當PC上電后會自動在PCI插槽上識別與此驅動相關的端系統設備,自動掛載AFDX端系統設備。

PC上電,CentOS操作系統正常啟動后,在終端界面上進入Linux的命令行輸入lsmod,可以查看到名稱是pci_es_dev_driver的驅動。

對于實現的用戶態下AFDX端系統驅動編譯生成libA664ESDriver.a,作為靜態庫提供給上層應用使用。為了驗證CentOS下的AFDX端系統驅動的功能,采用了端系統上A口發B口接收的外環策略,在端系統上配置了50052端口發送數據、32端口接收數據的方法。最終驗證的結果如圖5所示。

圖5 AFDX 端系統驅動驗證

5 結論

本文完成了CentOS下AFDX端系統驅動從總體架構設計、功能分解以及功能實現的過程,最后對所開發的AFDX端系統在安裝CentOS的X86 PC上進行了功能的驗證。通過驗證說明本文所提出的CentOS下AFDX端系統驅動設計方案可行,并且CentOS操作系統是Linux操作系統的一種,可以快速方便地移植到相同內核的其他Linux操作系統平臺上,說明具有很好的可移植性和適用性。CentOS下AFDX端系統驅動已經應用于為國內民用大飛機所開發的驗證測試設備上,完成了設備的功能集成,達到了相應的功能和性能要求。

[1] AR Inc. Aircraft data network part 7: avionics full-duplex switched ethernet network[S]. 2005.

[2] 武華,馬捷中,翟正軍. AFDX端系統通信端口的設計與實現[J]. 測控技術,2009,28(3):56-59.

[3] JONATHAN C,ALESSANDRO R,GREG K H. Linux device driver[M]. Sebastopol O’Reilly Media Inc,2005.

[4] BOVET D P,CESATE M. Understanding the Linux Kernel (Second Edition)[M]. Sebastopol O’Reilly Media Inc,2003.

[5] 劉智武,白楊,何向棟. AFDX網絡端系統數據接收方法研究與實現[J]. 微型機與應用,2013,32(21): 48-50.

[6] 趙永庫,李貞,唐來勝. AFDX網絡協議研究[J]. 計算機測量與控制,2011,19(12): 3137-3142.

[7] 陳昕,周擁軍,萬劍雄. AFDX端系統關鍵技術的研究與實現[J]. 計算機工程,2009,35(5): 1-3.

[8] 牛仕奇,嚴勝剛,任向隆.AFDX終端系統實現方案研究[J].計算機測量與控制,2009,17(12): 2507-2520.

[9] 田澤,王綺卉,侯銳. AFDX網絡協議棧分析和設計[J]. 軟件導刊,2010,9(4): 138-140.

[10] 應三叢,汪明寅,張行. 高性能PCI驅動程序的關鍵技術[J]. 計算機工程與設計,2012,33(6): 2208-2212.

Design and implementation of AFDX end system driver based on CentOS

Zheng Tao,Zhang Shuang,Li Xiaodong

(Aeronautical Computing Technique Research Institute,Xi’an 710068,China)

Based on the analysis of work process of AFDX network and CentOS operation system,and considering the requirements to test device of avionics network of a civil aircraft,we provide the design and implements of AFDX end system driver in CentOS based on X86 architecture. Relying on the design and implements ,we implement the driver by code and validate the driver in PC.

CentOS; AFDX; end system; driver; design; implementation

航空科學基金(20141931001)

V243

A

10.19358/j.issn.1674-7720.2017.24.030

鄭濤,張雙,李曉東.CentOS下AFDX端系統驅動設計與實現J.微型機與應用,2017,36(24):105-108.

2017-06-16)

鄭濤(1988-),男,碩士,工程師,主要研究方向:航空電子設備和航空網絡。

猜你喜歡
內核總線航空
多內核操作系統綜述①
強化『高新』內核 打造農業『硅谷』
活化非遺文化 承啟設計內核
“閃電航空”來啦
“閃電航空”來啦
Linux內核mmap保護機制研究
一種基于CAN總線的誤碼測試方法
達美航空的重生之路
CAN總線并發通信時下位機應用軟件設計
基于CAN總線的水下通信系統設計
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合