摘 要: 雷達中繼級設(shè)備是連接雷達設(shè)備與管制中心的關(guān)鍵設(shè)備,,但目前對該類設(shè)備的故障檢測還沒有行之有效的方法,。針對這一問題,提出了一種可以快速定位中繼級設(shè)備故障的解決方案,。重點闡述了方案中設(shè)備的數(shù)據(jù)流模型,、用戶空間軟件設(shè)計以及底層驅(qū)動程序設(shè)計三個方面的內(nèi)容。試驗結(jié)果表明,,該設(shè)備可以幫助技術(shù)人員有效提高雷達中繼級設(shè)備故障檢測效率,。
關(guān)鍵詞: 串行通信;tty設(shè)備驅(qū)動,;故障診斷,;信號檢測
電子技術(shù)和計算機技術(shù)的迅速發(fā)展推動了雷達技術(shù)的發(fā)展。雷達憑借其發(fā)現(xiàn)目標距離遠,、測定目標坐標速度快,、能全天候工作等優(yōu)良特性在警戒、引導(dǎo),、武器控制,、偵察等方面得到廣泛應(yīng)用,,成為現(xiàn)代戰(zhàn)爭中的重要電子裝備[1]。但雷達中繼設(shè)備一旦發(fā)生故障將使這些優(yōu)良特性受到嚴重影響,,據(jù)統(tǒng)計,,中繼故障設(shè)備占所有故障設(shè)備的70%左右,而中繼設(shè)備維修的基礎(chǔ)建設(shè)還很薄弱,,缺乏集成,、高效的故障檢測手段。然而,,中繼級信號檢測設(shè)備具有雷達數(shù)據(jù)轉(zhuǎn)發(fā),、信號模擬、接口協(xié)議分析,、鏈路質(zhì)量檢測等功能,,可以滿足中繼設(shè)備維修的要求。
Z85230是Zilog公司生產(chǎn)的比較成熟的串行通信控制芯片,,支持的協(xié)議豐富,、操作方便,是該設(shè)備的關(guān)鍵部件,。嵌入式處理器AT91RM9200本身集成了豐富的外設(shè),,成本低、體積小,、功能強,,是中繼信號檢測設(shè)備的控制器[2-4]。
1 設(shè)備的功能要求
中繼信號檢測設(shè)備(以下簡稱檢測設(shè)備)具有以下功能:
(1)3個10/100 Mb/s對外網(wǎng)口,,方便參數(shù)配置和接入雷達服務(wù)器主機,;
(2)4個串行接口,同時支持HDLC/BSC/ASYNC,可接入不同的雷達或中繼設(shè)備,接口最高速率達115 200 b/s,;
(3)支持網(wǎng)口到串口,、串口到網(wǎng)口的雙向數(shù)據(jù)轉(zhuǎn)發(fā);
(4)能夠檢測雷達設(shè)備的接口協(xié)議,;
(5)能夠檢測中繼級設(shè)備的鏈路質(zhì)量,。
2 硬件平臺
維修平臺采用C/S設(shè)計模式,如圖1所示,。在硬件方面采用ARM處理器AT91RM9200作為檢測設(shè)備的控制器,,是控制模塊的核心器件;Z85230構(gòu)成檢測設(shè)備的串口模塊,。
3 嵌入式軟件設(shè)計與實現(xiàn)
3.1 數(shù)據(jù)流模型及其分析
根據(jù)設(shè)備的功能要求將檢測設(shè)備的數(shù)據(jù)流分為兩大類:(1)航空管制中心用戶對設(shè)備的配置數(shù)據(jù)流,,雙方按照約定的通信協(xié)議發(fā)送配置和響應(yīng)信息;(2)雷達信息數(shù)據(jù)流,,可由雷達數(shù)據(jù)服務(wù)器主機發(fā)起,,也可以由雷達中繼級設(shè)備發(fā)起,。前者屬于雷達數(shù)據(jù)的回放過程,雷達數(shù)據(jù)從雷達主機經(jīng)檢測設(shè)備回放出來,;后者屬于雷達數(shù)據(jù)的錄制過程,,數(shù)據(jù)經(jīng)檢測設(shè)備最后轉(zhuǎn)發(fā)給雷達數(shù)據(jù)分析軟件。如圖2所示,。
3.2 軟件模塊劃分及其實現(xiàn)
按照功能將檢測設(shè)備的軟件部分劃分為通信模塊,、配置模塊、轉(zhuǎn)發(fā)模塊,、協(xié)議分析模塊,、IP地址搜索模塊和底層驅(qū)動模塊。其中IP地址搜索模塊屬于單獨的模塊,,與其他模塊沒有關(guān)系。模塊間關(guān)系如圖3所示,。
3.2.1 通信模塊
該模塊的主要功能包括:(1)偵聽來自配置管理軟件的連接請求,;(2)接收來自配置管理軟件的配置命令;(3)接收來自網(wǎng)口的雷達數(shù)據(jù),;(4)將配置命令的執(zhí)行結(jié)果以及協(xié)議分析模塊的分析結(jié)果發(fā)送給配置管理軟件,;(5)設(shè)備關(guān)閉或重啟時對內(nèi)存進行清理。
配置命令通過以太網(wǎng)傳輸,,延遲相對較大,。為降低配置命令的發(fā)送延遲和接收延遲,設(shè)置發(fā)送器直接從用戶空間獲取數(shù)據(jù),,接收器直接將數(shù)據(jù)交付給用戶空間緩存,,而不經(jīng)過中間緩存。
3.2.2 配置模塊
配置模塊用于解析和執(zhí)行配置命令,,并將執(zhí)行結(jié)果交付給通信模塊最終發(fā)送給配置管理軟件,。串口配置命令是該模塊中最重要的命令,該命令用于對串口參數(shù)進行配置,,直接影響到串口能否正常工作,。該命令將串口配置參數(shù)傳輸給底層驅(qū)動,數(shù)據(jù)量相對較大,,不能使用get_user()和put_user()等少量數(shù)據(jù)傳輸函數(shù),。本文采用ioctl命令配合copy_from_user()和copy_to_user()函數(shù)實現(xiàn)用戶空間與內(nèi)核空間之間的大量數(shù)據(jù)交換。串口配置命令的關(guān)鍵代碼如下:
//用戶空間關(guān)鍵代碼
int SerialPortConf(int fd_sock,Conf_cmd *cmd){
……
sprintf(dev_name,"%s%d",devBaseName,index);
fd_serial=open(dev,O_RDWR);
ioctl(fd_serial,TIOCCONFIG,cfg_data);//調(diào)用ioctl
close(fd_serial);
……}
//內(nèi)核空間關(guān)鍵代碼
int z85230_ioctl(struct tty_struct *tty,struct file * file,
unsigned int cmd,unsigned long arg){
……
switch(cmd){
case TIOCCONFIG:
copy_from_user(confBuf,(void __user*)arg,CONFIG_SIZE);
//拷貝數(shù)據(jù)到內(nèi)核空間
z85230_config_format(info->pChannel,confBuf,regTable);
//格式化配置信息
//根據(jù)配置信息配置Z85230
z85230_config(info->pChannel,regTable);
break;
……}}
3.2.3 轉(zhuǎn)發(fā)模塊
轉(zhuǎn)發(fā)模塊按照雷達中繼檢測設(shè)備的數(shù)據(jù)流模型將數(shù)據(jù)轉(zhuǎn)發(fā)到網(wǎng)口或者串口,,其中轉(zhuǎn)發(fā)到網(wǎng)口的數(shù)據(jù)流按照轉(zhuǎn)發(fā)表的設(shè)置進行,,轉(zhuǎn)發(fā)到串口的數(shù)據(jù)流按照數(shù)據(jù)幀標示進行。本文中為每一個串口建立兩個線程,,分別負責(zé)發(fā)送,、接收和封裝成幀的工作,。
3.2.4 協(xié)議分析模塊
在配置管理軟件的配合下,該模塊實現(xiàn)從未知雷達協(xié)議的串行鏈路中推斷出雷達協(xié)議,。一則便于對未知雷達協(xié)議的串行鏈路進行故障診斷,;二則便于對中繼設(shè)備的參數(shù)進行配置。本項目中使用兩片CPLD對各串口各引腳的狀態(tài)進行采集,,并將采集結(jié)果發(fā)送給配置管理軟件,,由配置管理軟件對采集結(jié)果進行分析推斷,最后再將推斷的結(jié)果發(fā)送給檢測設(shè)備作為協(xié)議分析的基參數(shù),,檢測設(shè)備在此基礎(chǔ)上重新采集各引腳的狀態(tài),,重復(fù)以上過程即可逐漸接近雷達協(xié)議。
3.2.5 IP地址搜索模塊
航空管制中心的中繼設(shè)備一般以IP地址作區(qū)分,,隨著規(guī)模的不斷擴大,,人工管理將逐漸變得異常困難且效率低下。該模塊通過響應(yīng)配置管理軟件的地址搜索指令,,將設(shè)備的基本信息發(fā)送給配置管理軟件,,因此在未知設(shè)備IP地址的前提下也能對設(shè)備進行配置管理。本項目中,,在檢測設(shè)備端啟動一個進程負責(zé)偵聽來自網(wǎng)絡(luò)的地址搜索指令,,當識別到搜索指令后該進程將設(shè)備的基本信息以廣播的形式發(fā)送出去。
3.2.6 底層驅(qū)動模塊
檢測設(shè)備要求同時支持多種鏈路控制協(xié)議,,這是驅(qū)動程序設(shè)計的關(guān)鍵,。本項目采用Linux下tty設(shè)備驅(qū)動程序框架結(jié)構(gòu)[5],該結(jié)構(gòu)封裝了通用的設(shè)備訪問接口,,只需編寫鏈路規(guī)程和硬件驅(qū)動即可方便地對設(shè)備進行控制,。以下是Z85230的中斷處理和tty驅(qū)動程序的設(shè)計。
(1)中斷處理函數(shù)的設(shè)計
Z85230芯片的每個通道都有3個中斷源,,按照中斷優(yōu)先級由高到低分別為:接收中斷,、發(fā)送中斷、外部/狀態(tài)中斷,。另外A通道中斷源優(yōu)先級高于B通道,。中斷處理流程如圖4所示。
(2)構(gòu)建tty驅(qū)動程序
tty驅(qū)動程序最重要的數(shù)據(jù)結(jié)構(gòu)是tty_driver,,它用于向tty核心注冊和注銷驅(qū)動程序,,該結(jié)構(gòu)提供了tty驅(qū)動程序最重要的信息。為獲得tty_driver對象,,首先調(diào)用alloc_tty_driver(),,該函數(shù)向tty核心申請并返回指向tty_
driver對象的指針。
初始化tty_driver對象之后,,調(diào)用函數(shù)tty_register_driver(driver),,并傳遞初始化的tty_driver對象,,即可向tty核心注冊該驅(qū)動。
最后一步是注冊中斷服務(wù)程序,,本項目中兩片Z85230分別連接在兩條不同的中斷線上,,因此需將中斷處理函數(shù)注冊到不同的中斷號上。調(diào)用Linux內(nèi)核中斷注冊函數(shù)request_irq()即可完成中斷注冊過程,。
request_irq(z85230_irqs,z85230_interrupt,SA_INTERRUPT,"Z85230_SERIAL",&z85230_devs);
注意:z85230_devs為觸發(fā)中斷的設(shè)備,;z85230_irqs為中斷號,兩芯片需單獨注冊,;z85230_interrupt為中斷處理函數(shù),。
4 設(shè)備功能測試
4.1 轉(zhuǎn)發(fā)功能測試
測試過程:首先使用配置管理軟件對設(shè)備的串口進行配置,參數(shù)如表1所示,。
4.2 協(xié)議分析功能測試
測試過程:將串口1連接到雷達情報服務(wù)器的輸出端口,,啟動協(xié)議分析功能,對情報服務(wù)器的輸出端口的數(shù)據(jù)協(xié)議進行分析,,協(xié)議分析過程如圖6所示,。
雷達中繼信號檢測設(shè)備改變了中繼級設(shè)備傳統(tǒng)的手工故障定位方式,在配置管理軟件的配合下可以有效地幫助技術(shù)人員快速定位故障設(shè)備,。將檢測設(shè)備的不同功能組合起來不僅可以實現(xiàn)中繼級設(shè)備鏈路質(zhì)量的檢測,還可用于非雷達中繼級串行設(shè)備信號的檢測,。檢測設(shè)備的協(xié)議分析功能目前還不完善,,只能識別出通信協(xié)議類型、通信角色等,。對波特率,、同步字符還不能正確識別,必須人工或配置軟件干預(yù),,還需要進一步完善,。
參考文獻
[1] 邱榮欽.雷達技術(shù)的發(fā)展[J].電子科學(xué)技術(shù)評論,2005(3):1-6.
[2] 郝福珍,,李天萬,,王江少.基于Z85230的雷達情報服務(wù)器的設(shè)計[J].計算機工程與應(yīng)用,2009,,45(10):76-79.
[3] Zilog Inc.Z85230/Z80230 enhanced serial communications controller[S].2002.
[4] Atmel Corporation.ARM920T-based microcon-troller AT91RM9200 datasheet[S].2009.
[5] JONATHAN C,,ALESSANDRO R,GREG K H,,et al.Linux設(shè)備驅(qū)動程序(第3版)[M].魏永明,,耿岳,鐘書毅,,譯.北京:中國電力出版社,,2006.