《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于Z85230的雷達(dá)中繼設(shè)備維修平臺嵌入式軟件設(shè)計(jì)
基于Z85230的雷達(dá)中繼設(shè)備維修平臺嵌入式軟件設(shè)計(jì)
來源:微型機(jī)與應(yīng)用2012年第22期
聶停順,郝福珍
(華北計(jì)算技術(shù)研究所 后勤信息化事業(yè)部,北京100083)
摘要: 雷達(dá)中繼級設(shè)備是連接雷達(dá)設(shè)備與管制中心的關(guān)鍵設(shè)備,但目前對該類設(shè)備的故障檢測還沒有行之有效的方法。針對這一問題,提出了一種可以快速定位中繼級設(shè)備故障的解決方案。重點(diǎn)闡述了方案中設(shè)備的數(shù)據(jù)流模型、用戶空間軟件設(shè)計(jì)以及底層驅(qū)動程序設(shè)計(jì)三個方面的內(nèi)容。試驗(yàn)結(jié)果表明,該設(shè)備可以幫助技術(shù)人員有效提高雷達(dá)中繼級設(shè)備故障檢測效率。
Abstract:
Key words :

摘  要: 雷達(dá)中繼級設(shè)備是連接雷達(dá)設(shè)備與管制中心的關(guān)鍵設(shè)備,但目前對該類設(shè)備的故障檢測還沒有行之有效的方法。針對這一問題,提出了一種可以快速定位中繼級設(shè)備故障的解決方案。重點(diǎn)闡述了方案中設(shè)備的數(shù)據(jù)流模型、用戶空間軟件設(shè)計(jì)以及底層驅(qū)動程序設(shè)計(jì)三個方面的內(nèi)容。試驗(yàn)結(jié)果表明,該設(shè)備可以幫助技術(shù)人員有效提高雷達(dá)中繼級設(shè)備故障檢測效率。
關(guān)鍵詞: 串行通信;tty設(shè)備驅(qū)動;故障診斷;信號檢測

    電子技術(shù)和計(jì)算機(jī)技術(shù)的迅速發(fā)展推動了雷達(dá)技術(shù)的發(fā)展。雷達(dá)憑借其發(fā)現(xiàn)目標(biāo)距離遠(yuǎn)、測定目標(biāo)坐標(biāo)速度快、能全天候工作等優(yōu)良特性在警戒、引導(dǎo)、武器控制、偵察等方面得到廣泛應(yīng)用,成為現(xiàn)代戰(zhàn)爭中的重要電子裝備[1]。但雷達(dá)中繼設(shè)備一旦發(fā)生故障將使這些優(yōu)良特性受到嚴(yán)重影響,據(jù)統(tǒng)計(jì),中繼故障設(shè)備占所有故障設(shè)備的70%左右,而中繼設(shè)備維修的基礎(chǔ)建設(shè)還很薄弱,缺乏集成、高效的故障檢測手段。然而,中繼級信號檢測設(shè)備具有雷達(dá)數(shù)據(jù)轉(zhuǎn)發(fā)、信號模擬、接口協(xié)議分析、鏈路質(zhì)量檢測等功能,可以滿足中繼設(shè)備維修的要求。
    Z85230是Zilog公司生產(chǎn)的比較成熟的串行通信控制芯片,支持的協(xié)議豐富、操作方便,是該設(shè)備的關(guān)鍵部件。嵌入式處理器AT91RM9200本身集成了豐富的外設(shè),成本低、體積小、功能強(qiáng),是中繼信號檢測設(shè)備的控制器[2-4]。
1 設(shè)備的功能要求
    中繼信號檢測設(shè)備(以下簡稱檢測設(shè)備)具有以下功能:
    (1)3個10/100 Mb/s對外網(wǎng)口,方便參數(shù)配置和接入雷達(dá)服務(wù)器主機(jī);
    (2)4個串行接口,同時支持HDLC/BSC/ASYNC,可接入不同的雷達(dá)或中繼設(shè)備,接口最高速率達(dá)115 200 b/s;
    (3)支持網(wǎng)口到串口、串口到網(wǎng)口的雙向數(shù)據(jù)轉(zhuǎn)發(fā);
    (4)能夠檢測雷達(dá)設(shè)備的接口協(xié)議;
    (5)能夠檢測中繼級設(shè)備的鏈路質(zhì)量。
2 硬件平臺
    維修平臺采用C/S設(shè)計(jì)模式,如圖1所示。在硬件方面采用ARM處理器AT91RM9200作為檢測設(shè)備的控制器,是控制模塊的核心器件;Z85230構(gòu)成檢測設(shè)備的串口模塊。

3 嵌入式軟件設(shè)計(jì)與實(shí)現(xiàn)
3.1 數(shù)據(jù)流模型及其分析

    根據(jù)設(shè)備的功能要求將檢測設(shè)備的數(shù)據(jù)流分為兩大類:(1)航空管制中心用戶對設(shè)備的配置數(shù)據(jù)流,雙方按照約定的通信協(xié)議發(fā)送配置和響應(yīng)信息;(2)雷達(dá)信息數(shù)據(jù)流,可由雷達(dá)數(shù)據(jù)服務(wù)器主機(jī)發(fā)起,也可以由雷達(dá)中繼級設(shè)備發(fā)起。前者屬于雷達(dá)數(shù)據(jù)的回放過程,雷達(dá)數(shù)據(jù)從雷達(dá)主機(jī)經(jīng)檢測設(shè)備回放出來;后者屬于雷達(dá)數(shù)據(jù)的錄制過程,數(shù)據(jù)經(jīng)檢測設(shè)備最后轉(zhuǎn)發(fā)給雷達(dá)數(shù)據(jù)分析軟件。如圖2所示。

3.2 軟件模塊劃分及其實(shí)現(xiàn)
    按照功能將檢測設(shè)備的軟件部分劃分為通信模塊、配置模塊、轉(zhuǎn)發(fā)模塊、協(xié)議分析模塊、IP地址搜索模塊和底層驅(qū)動模塊。其中IP地址搜索模塊屬于單獨(dú)的模塊,與其他模塊沒有關(guān)系。模塊間關(guān)系如圖3所示。

3.2.1 通信模塊
    該模塊的主要功能包括:(1)偵聽來自配置管理軟件的連接請求;(2)接收來自配置管理軟件的配置命令;(3)接收來自網(wǎng)口的雷達(dá)數(shù)據(jù);(4)將配置命令的執(zhí)行結(jié)果以及協(xié)議分析模塊的分析結(jié)果發(fā)送給配置管理軟件;(5)設(shè)備關(guān)閉或重啟時對內(nèi)存進(jìn)行清理。
    配置命令通過以太網(wǎng)傳輸,延遲相對較大。為降低配置命令的發(fā)送延遲和接收延遲,設(shè)置發(fā)送器直接從用戶空間獲取數(shù)據(jù),接收器直接將數(shù)據(jù)交付給用戶空間緩存,而不經(jīng)過中間緩存。
3.2.2 配置模塊
    配置模塊用于解析和執(zhí)行配置命令,并將執(zhí)行結(jié)果交付給通信模塊最終發(fā)送給配置管理軟件。串口配置命令是該模塊中最重要的命令,該命令用于對串口參數(shù)進(jìn)行配置,直接影響到串口能否正常工作。該命令將串口配置參數(shù)傳輸給底層驅(qū)動,數(shù)據(jù)量相對較大,不能使用get_user()和put_user()等少量數(shù)據(jù)傳輸函數(shù)。本文采用ioctl命令配合copy_from_user()和copy_to_user()函數(shù)實(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ā)模塊按照雷達(dá)中繼檢測設(shè)備的數(shù)據(jù)流模型將數(shù)據(jù)轉(zhuǎn)發(fā)到網(wǎng)口或者串口,其中轉(zhuǎn)發(fā)到網(wǎng)口的數(shù)據(jù)流按照轉(zhuǎn)發(fā)表的設(shè)置進(jìn)行,轉(zhuǎn)發(fā)到串口的數(shù)據(jù)流按照數(shù)據(jù)幀標(biāo)示進(jìn)行。本文中為每一個串口建立兩個線程,分別負(fù)責(zé)發(fā)送、接收和封裝成幀的工作。
3.2.4 協(xié)議分析模塊
    在配置管理軟件的配合下,該模塊實(shí)現(xiàn)從未知雷達(dá)協(xié)議的串行鏈路中推斷出雷達(dá)協(xié)議。一則便于對未知雷達(dá)協(xié)議的串行鏈路進(jìn)行故障診斷;二則便于對中繼設(shè)備的參數(shù)進(jìn)行配置。本項(xiàng)目中使用兩片CPLD對各串口各引腳的狀態(tài)進(jìn)行采集,并將采集結(jié)果發(fā)送給配置管理軟件,由配置管理軟件對采集結(jié)果進(jìn)行分析推斷,最后再將推斷的結(jié)果發(fā)送給檢測設(shè)備作為協(xié)議分析的基參數(shù),檢測設(shè)備在此基礎(chǔ)上重新采集各引腳的狀態(tài),重復(fù)以上過程即可逐漸接近雷達(dá)協(xié)議。
3.2.5 IP地址搜索模塊
    航空管制中心的中繼設(shè)備一般以IP地址作區(qū)分,隨著規(guī)模的不斷擴(kuò)大,人工管理將逐漸變得異常困難且效率低下。該模塊通過響應(yīng)配置管理軟件的地址搜索指令,將設(shè)備的基本信息發(fā)送給配置管理軟件,因此在未知設(shè)備IP地址的前提下也能對設(shè)備進(jìn)行配置管理。本項(xiàng)目中,在檢測設(shè)備端啟動一個進(jìn)程負(fù)責(zé)偵聽來自網(wǎng)絡(luò)的地址搜索指令,當(dāng)識別到搜索指令后該進(jìn)程將設(shè)備的基本信息以廣播的形式發(fā)送出去。
3.2.6 底層驅(qū)動模塊
    檢測設(shè)備要求同時支持多種鏈路控制協(xié)議,這是驅(qū)動程序設(shè)計(jì)的關(guān)鍵。本項(xiàng)目采用Linux下tty設(shè)備驅(qū)動程序框架結(jié)構(gòu)[5],該結(jié)構(gòu)封裝了通用的設(shè)備訪問接口,只需編寫鏈路規(guī)程和硬件驅(qū)動即可方便地對設(shè)備進(jìn)行控制。以下是Z85230的中斷處理和tty驅(qū)動程序的設(shè)計(jì)。
    (1)中斷處理函數(shù)的設(shè)計(jì)
    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ù)程序,本項(xiàng)目中兩片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為中斷號,兩芯片需單獨(dú)注冊;z85230_interrupt為中斷處理函數(shù)。
4 設(shè)備功能測試
4.1 轉(zhuǎn)發(fā)功能測試

    測試過程:首先使用配置管理軟件對設(shè)備的串口進(jìn)行配置,參數(shù)如表1所示。

 

 

4.2 協(xié)議分析功能測試
    測試過程:將串口1連接到雷達(dá)情報(bào)服務(wù)器的輸出端口,啟動協(xié)議分析功能,對情報(bào)服務(wù)器的輸出端口的數(shù)據(jù)協(xié)議進(jìn)行分析,協(xié)議分析過程如圖6所示。

    雷達(dá)中繼信號檢測設(shè)備改變了中繼級設(shè)備傳統(tǒng)的手工故障定位方式,在配置管理軟件的配合下可以有效地幫助技術(shù)人員快速定位故障設(shè)備。將檢測設(shè)備的不同功能組合起來不僅可以實(shí)現(xiàn)中繼級設(shè)備鏈路質(zhì)量的檢測,還可用于非雷達(dá)中繼級串行設(shè)備信號的檢測。檢測設(shè)備的協(xié)議分析功能目前還不完善,只能識別出通信協(xié)議類型、通信角色等。對波特率、同步字符還不能正確識別,必須人工或配置軟件干預(yù),還需要進(jìn)一步完善。
參考文獻(xiàn)
[1] 邱榮欽.雷達(dá)技術(shù)的發(fā)展[J].電子科學(xué)技術(shù)評論,2005(3):1-6.
[2] 郝福珍,李天萬,王江少.基于Z85230的雷達(dá)情報(bào)服務(wù)器的設(shè)計(jì)[J].計(jì)算機(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.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。