何海龍 王 明 張緋麗
(西安電子工程研究所 西安 710100)
接口控制計(jì)算機(jī)是雷達(dá)的重要組成部分,承擔(dān)著雷達(dá)內(nèi)部各子系統(tǒng)和雷達(dá)輸入輸出信號(hào)的通信、控制等任務(wù)。隨著雷達(dá)系統(tǒng)的功能需求與復(fù)雜性的不斷提高,雷達(dá)的接口也日益復(fù)雜和多樣,并且對(duì)可靠性和實(shí)時(shí)性有很高的要求。雷達(dá)接口控制計(jì)算機(jī)最主要的任務(wù)就是協(xié)調(diào)主控計(jì)算機(jī)和各個(gè)子系統(tǒng)之間的工作。根據(jù)主控計(jì)算機(jī)的指令對(duì)雷達(dá)的方位、俯仰驅(qū)動(dòng)器、敵我識(shí)別器等設(shè)備實(shí)時(shí)精確控制,接收各分系統(tǒng)的狀態(tài),進(jìn)行解析和上報(bào)。
在傳統(tǒng)方式中,主控計(jì)算機(jī)內(nèi)插入各種接口板卡,通過控制接口板卡來實(shí)現(xiàn)對(duì)雷達(dá)設(shè)備的控制和管理。現(xiàn)代雷達(dá)中接口種類多、功能復(fù)雜、實(shí)時(shí)性要求高,這些接口全部通過主控計(jì)算機(jī)直接進(jìn)行控制較為繁瑣,且會(huì)降低主控計(jì)算機(jī)的效率。因而,采用主從——分布式結(jié)構(gòu),利用高性能微控制器(MCU)構(gòu)建接口控制計(jì)算機(jī)來擴(kuò)展主控計(jì)算機(jī)的接口是一種較理想的方式。接口控制計(jì)算機(jī)負(fù)責(zé)完成對(duì)雷達(dá)功能模塊和外部設(shè)備的管理和控制,減輕了主控計(jì)算機(jī)的工作負(fù)擔(dān)。通過10/100/1000M以太網(wǎng)完成與主控計(jì)算機(jī)之間的通信,使得主控計(jì)算機(jī)能夠方便、快捷并高效地訪問雷達(dá)各個(gè)模塊和設(shè)備。對(duì)于主控計(jì)算機(jī),接口控制計(jì)算機(jī)就像它本身的一個(gè)模塊一樣,實(shí)現(xiàn)了接口的透明訪問。
嵌入式系統(tǒng)以其本身體積小,功能多,高智能等優(yōu)點(diǎn)而逐漸地被引入到雷達(dá)控制領(lǐng)域。本文描述了嵌入式MCU構(gòu)建的雷達(dá)接口控制計(jì)算機(jī),著重分析、討論了采用 μC/OS-II[1]操作系統(tǒng)設(shè)計(jì)雷達(dá)控制接口軟件的思想和實(shí)現(xiàn)方法。
雷達(dá)接口控制計(jì)算機(jī)主要是以MCU和FPGA為核心,配置多種外圍接口,實(shí)現(xiàn)對(duì)外圍設(shè)備的控制與監(jiān)視。MCU與FPGA通過擴(kuò)展總線實(shí)現(xiàn)高速互聯(lián),相互共享信息。在系統(tǒng)中FPGA主要完成開關(guān)量輸入信號(hào)去抖動(dòng),開關(guān)量輸出信號(hào)保護(hù),以太網(wǎng)媒體訪問控制層(MAC)層,地址譯碼,ADC控制與數(shù)據(jù)采集,接收系統(tǒng)定時(shí)信號(hào)并產(chǎn)生同步輸出,系統(tǒng)安全連鎖保護(hù)等功能。MCU主要完成通信協(xié)議的封裝、解析,控制方位和俯仰驅(qū)動(dòng)器,采集外設(shè)狀態(tài)并上報(bào)給主控計(jì)算機(jī),實(shí)現(xiàn)CAN總線與以太網(wǎng)之間的轉(zhuǎn)發(fā)路由,接收GPS、陀螺、驅(qū)動(dòng)器等外設(shè)的串口數(shù)據(jù)等功能。
嵌入式處理器采用TI公司最新推出的最新32位浮點(diǎn)數(shù)字信號(hào)控制器TMS320F28346,其核心頻率高達(dá)300MHz,集成了32位浮點(diǎn)處理單元,258k×16位單時(shí)鐘周期訪問單周期訪問靜態(tài)RAM(SRAM)和大量通用外設(shè)。該控制器兼顧了DSP強(qiáng)大的處理核心和MCU豐富的片上外設(shè),功能強(qiáng)大、性能穩(wěn)定可靠,片上資源豐富。
雷達(dá)接口控制計(jì)算機(jī)外圍接口包括:16路單端或8路差分16位AD、4路16位DA、16路光電隔離輸入(SI)、10路光電隔離輸出(SO)、8路RS422電平差分IO、2通道光電隔離 CAN、五通道隔離RS422串口、1路10M/100M/1G以太網(wǎng)、1路定時(shí)同步輸入與輸出、以及電源及濾波電路組成。完成系統(tǒng)通信、驅(qū)動(dòng)器控制、鎖定控制、系統(tǒng)狀態(tài)數(shù)據(jù)采集、數(shù)據(jù)處理、敵我識(shí)別器控制、接收GPS數(shù)據(jù)與授時(shí)、產(chǎn)生或接收系統(tǒng)定時(shí)、增量碼接收等功能。系統(tǒng)組成圖1所示。
由于本系統(tǒng)的實(shí)時(shí)性要求(例如:通信接口之間的數(shù)據(jù)轉(zhuǎn)發(fā)時(shí)間小于200μs,形成陀螺反饋輸出的滯后時(shí)間小于100μs等)與復(fù)雜性,根本不可能采用查詢方式或前后臺(tái)系統(tǒng)保證其實(shí)時(shí)性。為此采用了μC/OS-II嵌入式多任務(wù)實(shí)時(shí)操作系統(tǒng)。由于嵌入式實(shí)時(shí)操作系統(tǒng)的引入,提高了CPU、總線等資源的利用率,從而保證了系統(tǒng)的實(shí)時(shí)性。
對(duì)于比較復(fù)雜的軟件系統(tǒng),在軟件設(shè)計(jì)時(shí)需要遵循簡(jiǎn)單準(zhǔn)則、同型準(zhǔn)則、層次準(zhǔn)則、線型準(zhǔn)則、易證準(zhǔn)則與安全準(zhǔn)則等軟件設(shè)計(jì)準(zhǔn)則。多任務(wù)操作系統(tǒng)從它產(chǎn)生的原因到現(xiàn)在的廣泛應(yīng)用,正是由于它簡(jiǎn)化了編程模型,滿足了簡(jiǎn)單、同型、層次化等準(zhǔn)則。
在接口控制計(jì)算機(jī)中,由于系統(tǒng)需要同時(shí)處理多個(gè)任務(wù),且所有任務(wù)都有嚴(yán)格的實(shí)時(shí)性要求,在MCU上運(yùn)行μC/OS II嵌入式多任務(wù)實(shí)時(shí)操作系統(tǒng)是最優(yōu)的軟件結(jié)構(gòu)之一。由于多任務(wù)實(shí)時(shí)操作系統(tǒng)的引入,簡(jiǎn)化了系統(tǒng)編程模型,降低了程序設(shè)計(jì)難度。
在多任務(wù)實(shí)時(shí)操作系統(tǒng)應(yīng)用中,軟件設(shè)計(jì)的重點(diǎn)與難點(diǎn)是任務(wù)劃分和資源分配與共享。
任務(wù)作為多任務(wù)系統(tǒng)中的獨(dú)立執(zhí)行單元,有獨(dú)立的CPU時(shí)間片、堆棧與內(nèi)存空間,同時(shí)系統(tǒng)內(nèi)的任務(wù)共享總的CPU時(shí)間,任務(wù)之間需要進(jìn)行通信。因此合理的任務(wù)劃分是保證系統(tǒng)效率與實(shí)時(shí)性的關(guān)鍵。
在將軟件系統(tǒng)分解成并行任務(wù)時(shí),任務(wù)的大小粒度根據(jù)任務(wù)的特性確定,如果粒度太大會(huì)影響任務(wù)的實(shí)時(shí)性;如果粒度太小會(huì)增大系統(tǒng)的任務(wù)切換開銷與任務(wù)管理復(fù)雜度,降低系統(tǒng)的效率。主要需考慮系統(tǒng)內(nèi)功能的異步性,任務(wù)按照I/O依賴性、時(shí)間關(guān)鍵性的功能、計(jì)算量大的功能、功能內(nèi)聚、時(shí)間內(nèi)聚、周期執(zhí)行的功能等任務(wù)劃分準(zhǔn)則進(jìn)行劃分。實(shí)時(shí)性要求高的、獨(dú)占系統(tǒng)資源的任務(wù)采用小的粒度,否則采用大的任務(wù)粒度。
根據(jù)接口控制計(jì)算機(jī)的應(yīng)用需求,把接口控制計(jì)算機(jī)軟件劃分為接收陀螺數(shù)據(jù)任務(wù)、以太網(wǎng)發(fā)送數(shù)據(jù)任務(wù)、一層CAN總線發(fā)送數(shù)據(jù)任務(wù)、敵我識(shí)別器控制任務(wù)、接收詢問機(jī)數(shù)據(jù)任務(wù)、伺服控制任務(wù)、接口控制計(jì)算機(jī)故檢任務(wù)、接收以太網(wǎng)數(shù)據(jù)包任務(wù)、接收控制處理計(jì)算機(jī)命令任務(wù)、接收主控計(jì)算機(jī)CAN總線消息任務(wù)、接收GPS數(shù)據(jù)任務(wù)及人機(jī)交互任務(wù)。接口控制任務(wù)劃分如圖2所示。
圖2 接口控制計(jì)算機(jī)軟件任務(wù)劃分圖
一個(gè)任務(wù)的執(zhí)行與掛起必須要有相應(yīng)的約束條件,這些條件稱為軟件的驅(qū)動(dòng)模型。常見的軟件驅(qū)動(dòng)模型有數(shù)據(jù)驅(qū)動(dòng)模型,時(shí)間驅(qū)動(dòng)模型,事件驅(qū)動(dòng)模型以及它們的混合模型。分析接口控制計(jì)算機(jī)軟件的特點(diǎn),可知接口控制計(jì)算機(jī)軟件的驅(qū)動(dòng)模型屬于混合模型。為了讓不同驅(qū)動(dòng)模型的任務(wù)良好協(xié)作,降低系統(tǒng)內(nèi)任務(wù)之間通信的時(shí)間開銷,任務(wù)之間通信采用全局緩沖隊(duì)列,資源的互斥使用信號(hào)量完成。實(shí)現(xiàn)的接口控制計(jì)算機(jī)軟件活動(dòng)關(guān)系如圖3所示。
圖3 接口控制計(jì)算機(jī)軟件活動(dòng)圖
在嵌入式系統(tǒng)中,CPU時(shí)間、堆棧空間、存儲(chǔ)空間、共享的I/O接口等系統(tǒng)資源是非常有限的,因此需要對(duì)資源進(jìn)行統(tǒng)籌分配,提高資源利用率,從而降低系統(tǒng)的硬件需求,減小系統(tǒng)的體積與功耗。尤其是MCU內(nèi)部RAM存儲(chǔ)空間和任務(wù)優(yōu)先級(jí)的分配。
根據(jù)系統(tǒng)提供的資源的限制性條件,TMS320C28346的內(nèi)部空間配置,應(yīng)用程序?qū)Y源的需求,對(duì)其存儲(chǔ)空間應(yīng)用分配如表1所示。
需要特別說明的是,在TMS320C28346中,堆??臻g的位置必須位于0x10000地址以下[2],否則μC/OS-II操作系統(tǒng)的行為不可預(yù)知。堆棧溢出時(shí),會(huì)導(dǎo)致程序跳轉(zhuǎn)到未知的位置,并且很難通過應(yīng)用程序?qū)Τ绦蜻M(jìn)行檢測(cè),因此嵌入式多任務(wù)系統(tǒng)的堆棧分配是必須仔細(xì)設(shè)計(jì)。堆??臻g的大小需要根據(jù)具體任務(wù)使用情況進(jìn)行調(diào)整。分配的方法是先給任務(wù)分配一個(gè)較大的堆??臻g,然后運(yùn)行程序,通過μC/OS-II提供的監(jiān)控程序?qū)Χ褩J褂们闆r進(jìn)行統(tǒng)計(jì),根據(jù)極限情況得到堆棧的大小分配堆棧空間,分配堆棧段時(shí)必須需要留一定的安全容量。
在嵌入式多任務(wù)實(shí)時(shí)操作系統(tǒng)中,每一個(gè)任務(wù)都對(duì)應(yīng)一個(gè)優(yōu)先級(jí),優(yōu)先級(jí)高的任務(wù)可以打斷優(yōu)先級(jí)低的任務(wù)的執(zhí)行,搶占低優(yōu)先級(jí)任務(wù)的CPU時(shí)間資源,優(yōu)先執(zhí)行優(yōu)先級(jí)高的任務(wù),從而保證系統(tǒng)的實(shí)時(shí)性。對(duì)任務(wù)進(jìn)行合理的優(yōu)先級(jí)分配是保證系統(tǒng)實(shí)時(shí)性的必要條件之一。任務(wù)優(yōu)先級(jí)按照粒度小的任務(wù)優(yōu)先級(jí)高、執(zhí)行頻率高的任務(wù)的優(yōu)先級(jí)高、獨(dú)占系統(tǒng)資源的任務(wù)的優(yōu)先級(jí)高、有特殊實(shí)時(shí)性性能要求的任務(wù)的優(yōu)先級(jí)高。根據(jù)任務(wù)劃分和任務(wù)的屬性,任務(wù)的優(yōu)先級(jí)分配見表2。
表1 MCU存儲(chǔ)空間應(yīng)用分配表
表2 任務(wù)優(yōu)先級(jí)分配表
由于μC/OS-II操作系統(tǒng)的引入,根據(jù)系統(tǒng)需求進(jìn)行任務(wù)劃分,每個(gè)任務(wù)都完成一個(gè)相對(duì)簡(jiǎn)單的功能,因此方便了系統(tǒng)軟件設(shè)計(jì)。下面就以接收陀螺數(shù)據(jù)任務(wù)為例說明任務(wù)的設(shè)計(jì),其余任務(wù)于此相似,不再贅述。
串口中斷服務(wù)程序接收到與陀螺通信串口的數(shù)據(jù)后,把數(shù)據(jù)寫入循環(huán)緩沖隊(duì)列,然后給出相應(yīng)的信號(hào)量通知接收陀螺數(shù)據(jù)任務(wù)。接收陀螺數(shù)據(jù)任務(wù)收到串口中斷服務(wù)程序給出的信號(hào)量后,檢測(cè)接收緩沖區(qū)內(nèi)的數(shù)據(jù),按照通信協(xié)議對(duì)數(shù)據(jù)進(jìn)行解析,得到陀螺速率,并根據(jù)主控計(jì)算機(jī)給出的余割補(bǔ)償系數(shù)和驅(qū)動(dòng)器給定值,計(jì)算得到驅(qū)動(dòng)器的反饋電壓和控制電壓,最后更新反饋和控制電壓到相應(yīng)的DAC。接收陀螺數(shù)據(jù)任務(wù)就完成了一次接收后,等待下一次信號(hào)量的到來。接收陀螺數(shù)據(jù)任務(wù)數(shù)據(jù)流圖如圖4。
圖4 接收陀螺數(shù)據(jù)任務(wù)數(shù)據(jù)流圖
由圖4可知,由于μC/OS-II操作系統(tǒng)的引入極大地簡(jiǎn)化了軟件設(shè)計(jì),省去了單任務(wù)系統(tǒng)或前后臺(tái)系統(tǒng)中復(fù)雜的定時(shí)、數(shù)據(jù)、狀態(tài)驅(qū)動(dòng)的跳轉(zhuǎn)邏輯。使得程序易于設(shè)計(jì)、檢查、維護(hù)。
本文以MCU和FPGA構(gòu)建的嵌入式實(shí)時(shí)系統(tǒng)為對(duì)象,分析了系統(tǒng)中軟件設(shè)計(jì)的思想,討論了系統(tǒng)任務(wù)劃分的準(zhǔn)則和資源分配的方法,方便地實(shí)現(xiàn)了對(duì)主控計(jì)算機(jī)的通信與控制接口實(shí)時(shí)擴(kuò)展?;诖怂枷氲能浖O(shè)計(jì)方法已經(jīng)成功應(yīng)用于某型號(hào)雷達(dá)系統(tǒng)中,系統(tǒng)實(shí)測(cè)任務(wù)響應(yīng)時(shí)間小于50μs,遠(yuǎn)小于系統(tǒng)需求的100μs。實(shí)踐證明系統(tǒng)性能強(qiáng)大、實(shí)時(shí)性好、擴(kuò)展性強(qiáng)、故障檢測(cè)與保護(hù)措施完備、工作穩(wěn)定可靠。
[1]Jean J·Labrosse著,邵貝貝等譯.嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS II[M].北京:北京航空航天大學(xué)出版社,2006.
[2]Texas Instruments.TMS320C28x Assembly Lan guage Tools v5.0.0 User's Guide[M].2007.