摘要:設(shè)計了1553B和ARINC429總線實(shí)時協(xié)議轉(zhuǎn)換系統(tǒng)。系統(tǒng)硬件部分采用“MCU+FPGA+外圍芯片”進(jìn)行構(gòu)建;軟件部分是將嵌入式實(shí)時內(nèi)核μC/OS-II移植到DSP控制器上從而構(gòu)建一個低成本的通用嵌入式實(shí)時軟件平臺,基于此平臺以C語言和匯編語言在DSP集成化軟件開發(fā)環(huán)境CCS上加以實(shí)現(xiàn)。對協(xié)議轉(zhuǎn)換系統(tǒng)進(jìn)行了測試和聯(lián)機(jī)驗(yàn)證,結(jié)果表明該系統(tǒng)完全符合設(shè)計要求。
近年來,ГOCT18977、1553B和ARINC429已成為我軍機(jī)載設(shè)備間、飛機(jī)與導(dǎo)彈間數(shù)據(jù)通信所廣泛采用的總線標(biāo)準(zhǔn)。這種多種總線標(biāo)準(zhǔn)并存的情況帶來一系列問題:一是在地面維護(hù)過程中,需要測試不同總線標(biāo)準(zhǔn)的數(shù)據(jù);二是不同總線標(biāo)準(zhǔn)之間的協(xié)議轉(zhuǎn)換。因此如何實(shí)現(xiàn)地面檢測設(shè)備與多種不同總線標(biāo)準(zhǔn)機(jī)載設(shè)備之間的通信以及不同總線標(biāo)準(zhǔn)之間的協(xié)議轉(zhuǎn)換成為必須解決的問題。本文針對某型飛機(jī)加掛某型導(dǎo)彈的實(shí)際應(yīng)用,設(shè)計了一個基于μC/OS-Ⅱ的1553B和ARINC429總線實(shí)時協(xié)議轉(zhuǎn)換系統(tǒng)。
1 協(xié)議轉(zhuǎn)換系統(tǒng)的需求分析和設(shè)計原則
1553B和ARINC429總線實(shí)時協(xié)議轉(zhuǎn)換系統(tǒng)是某型飛機(jī)發(fā)射架的一部分,主要完成以下功能:(1)完成對導(dǎo)彈加溫、準(zhǔn)備和發(fā)射三個階段的實(shí)時控制;(2)在導(dǎo)彈準(zhǔn)備和發(fā)射階段,把1553B格式的飛行任務(wù)轉(zhuǎn)換成ARINC429格式,并發(fā)送給導(dǎo)彈;(3)在導(dǎo)彈準(zhǔn)備和發(fā)射階段,控制電源模塊輸出4路直流給導(dǎo)引頭;(4)完成對導(dǎo)彈故障的實(shí)時檢測,并上報給飛機(jī)。
顯然,該系統(tǒng)是一個典型的航空電子設(shè)備,因此,實(shí)時性和可靠性將是系統(tǒng)設(shè)計的基本要求。同樣,簡單化、模塊化也是設(shè)計中要遵循的思想。具體來說,設(shè)計時應(yīng)遵循下列幾個原則:(1)實(shí)時性強(qiáng);(2)可靠性高;(3)具有一定的擴(kuò)展性;(4)維修性好;(5)通用性好。
2 1553B和ARINC429協(xié)議分析
2.1 1553B總線協(xié)議[1-3]
1553B總線的正式名稱為“時分制指令/響應(yīng)式多路傳輸數(shù)據(jù)總線”(Time Division Command/ Response Multiplex Data Bus),是目前世界軍用飛機(jī)中應(yīng)用最廣泛的數(shù)據(jù)傳輸系統(tǒng)。1553B高度的可靠性和靈活性使它在機(jī)載、艦載以及地面武器設(shè)備中得到了廣泛的應(yīng)用,并逐漸應(yīng)用到民用領(lǐng)域。
1553B總線的基本操作要求是:總線系統(tǒng)信息傳輸?shù)目刂茩?quán)唯一歸總線控制器所有;總線系統(tǒng)的操作應(yīng)是指令/響應(yīng)型的異步操作;數(shù)據(jù)總線上的信息傳輸應(yīng)以半雙工方式進(jìn)行;數(shù)據(jù)總線上的信息流應(yīng)由消息組成;總線系統(tǒng)應(yīng)具有方式控制的能力。
1553B總線上只有3種字格式,分別是指令字、數(shù)據(jù)字和狀態(tài)字,如圖1所示。一個字的結(jié)構(gòu)為“同步頭+16位數(shù)據(jù)位+奇偶校驗(yàn)位”,總共20個位時。
1553B總線上的消息格式數(shù)量有限,可以分為非廣播消息和廣播消息兩大類。非廣播消息有6種消息格式,廣播消息有4種格式,除了這10種消息格式之外,不應(yīng)使用任何別的消息格式。
2.2 ARINC429總線協(xié)議[4-6]
ARINC429總線是ARINC為航空電子系統(tǒng)之間進(jìn)行數(shù)據(jù)傳輸而定義的航空工業(yè)標(biāo)準(zhǔn),其正式名稱為MARK33數(shù)字式信息傳輸系統(tǒng)DITS(Digital Information Transfer System)技術(shù)標(biāo)準(zhǔn),信號形式同ГОСТ18977。ARINC429 在國內(nèi)被稱為HB6096-86 數(shù)字信息傳輸系統(tǒng)。
ARINC429總線的一個數(shù)據(jù)字有32位,它們被分為5段,采用2的補(bǔ)碼小數(shù)記法編碼(BNR)或ISO5號字母表數(shù)字子集編碼(BCD),其數(shù)據(jù)格式如表1所示。
ARINC429的傳輸協(xié)議十分簡單,是點(diǎn)對點(diǎn)的傳輸協(xié)議,解決了原來419 規(guī)范的許多矛盾和沖突。根據(jù)規(guī)范,其數(shù)字信息通過一對單向、差分耦合、雙絞屏蔽線傳輸,屬于串行通信,實(shí)現(xiàn)32比特字傳輸格式。
3 協(xié)議轉(zhuǎn)換系統(tǒng)的硬件設(shè)計
3.1 總體設(shè)計方案和結(jié)構(gòu)框圖
綜合協(xié)議轉(zhuǎn)換系統(tǒng)的功能需求及1553B和ARINC429的協(xié)議分析,提出如下設(shè)計方案:(1)硬件環(huán)境:采用“MCU+FPGA+外圍芯片”方案構(gòu)建硬件系統(tǒng),MCU采用TI 公司的DSP TMS320LF2407實(shí)現(xiàn);FPGA采用Altera公司的Stratix FPGA軍用溫度級產(chǎn)品EP1S60F1020I6實(shí)現(xiàn);外圍芯片主要包括1553B協(xié)議芯片BU61580等。(2)軟件環(huán)境:將嵌入式實(shí)時內(nèi)核μC/OS-II移植到DSP控制器TMS320LF2407上從而構(gòu)建一個低成本的通用嵌入式實(shí)時軟件平臺;基于DSP集成化軟件開發(fā)環(huán)境CCS,用C語言和匯編語言進(jìn)行軟件開發(fā)。
1553B和ARINC429總線實(shí)時協(xié)議轉(zhuǎn)換系統(tǒng)實(shí)際上是一個嵌入式微型計算機(jī)應(yīng)用系統(tǒng),由控制器模塊、接口電路模塊和電源模塊三部分組成,其總體結(jié)構(gòu)如圖2所示。
控制器模塊是協(xié)議轉(zhuǎn)換系統(tǒng)的核心,用于完成對導(dǎo)彈的實(shí)時控制、邏輯判斷、總線轉(zhuǎn)換以及串口通信等功能;接口電路模塊是協(xié)議轉(zhuǎn)換系統(tǒng)的外部接口(飛機(jī)、導(dǎo)彈接口)與控制器模塊之間的橋梁,其功能是信號隔離、電平轉(zhuǎn)換和功率信號時序控制等;電源模塊包括兩個部分,一部分用于產(chǎn)生協(xié)議轉(zhuǎn)換系統(tǒng)本身工作所需電源,另一部分用于產(chǎn)生導(dǎo)引頭工作所需電源。
3.2 控制器模塊的設(shè)計
控制器模塊的結(jié)構(gòu)原理圖如圖3所示。整個控制器模塊主要由控制器、422總線通信電路、1553B協(xié)議轉(zhuǎn)換電路、隔離變壓器電路、FPGA控制邏輯及ARINC429電平轉(zhuǎn)換電路等組成。
FPGA控制邏輯用Verilog HDL在QuartusII環(huán)境下編程實(shí)現(xiàn),主要完成以下功能:(1)產(chǎn)生對1553B協(xié)議芯片BU61580操作的所有控制信號;(2)產(chǎn)生對ARINC429接收模塊和ARINC429發(fā)送模塊操作的所有控制信號;(3)為1553B協(xié)議芯片BU61580、ARINC429接收模塊和ARINC429發(fā)送模塊產(chǎn)生各自的工作時鐘,其中分頻數(shù)N可通過軟件進(jìn)行賦值,實(shí)現(xiàn)可編程時鐘模塊;(4)建立FIFO模塊,在數(shù)據(jù)傳輸中緩沖和存儲數(shù)據(jù);(5)實(shí)現(xiàn)ARINC429信號接收和發(fā)送,包括同步處理、字頭檢驗(yàn)、奇偶校驗(yàn)、串并轉(zhuǎn)換和并串轉(zhuǎn)換等。
4 實(shí)時操作系統(tǒng)的移植、構(gòu)建和優(yōu)化
將嵌入式實(shí)時內(nèi)核μC/OS-II移植到DSP控制器TMS320LF2407上構(gòu)建一個低成本的通用嵌入式實(shí)時軟件平臺,以進(jìn)行系統(tǒng)軟件的開發(fā)。引入μC/OS-II實(shí)時內(nèi)核的目的是要以很小的系統(tǒng)代價,大大降低DSP系統(tǒng)軟件開發(fā)的難度,同時使系統(tǒng)的實(shí)時性得到保證。
4.1 μC/OS-II移植的可行性分析
所謂移植,就是使一個實(shí)時內(nèi)核能在某個處理器上運(yùn)行[7]。因?yàn)镃語言是跨平臺的,各種編譯器都支持,所以μC/OS-II和其他嵌入式操作系統(tǒng)一樣,和處理器無關(guān)的代碼主要用C語言寫。雖然μC/OS-II系統(tǒng)的大部分源代碼都是用C 語言實(shí)現(xiàn)的,但仍需要使用X86 匯編語言來完成一些與處理器、寄存器相關(guān)的代碼[8]。這是因?yàn)?mu;C/OS-II在讀寫處理器寄存器時只能通過匯編語言來實(shí)現(xiàn)。
要順利移植μC/OS-II,處理器必須滿足以下要求:(1)處理器的C編譯器能產(chǎn)生重入代碼,利用C語言就可以打開和關(guān)閉中斷;(2)處理器支持中斷,并能產(chǎn)生定時中斷;(3)處理器支持足夠的RAM(可能是幾千字節(jié))作為數(shù)據(jù)存儲的硬件堆棧;(4)處理器有將堆棧指針和其他CPU寄存器讀出和存儲到堆棧或內(nèi)存中的指令。
顯然,采用的控制器TMS320LF2407及編譯器CCS均可滿足要求,因此完全可以在TMS320LF2407上移植嵌入式實(shí)時內(nèi)核μC/OS-II。
4.2 μC/OS-II的代碼結(jié)構(gòu)和移植步驟
μC/OS-II的代碼結(jié)構(gòu)以及它與硬件的關(guān)系如圖4所示,其全部代碼可以分為三個部分[9]:
(1)與處理器無關(guān)的代碼。包括\SOFTWAREμC/OS-IISOURCE目錄下的文件,主要提供μC/OS-II的系統(tǒng)服務(wù)、任務(wù)管理、任務(wù)間通信與內(nèi)存管理等。這部分代碼可完全移植到處理器上。
(2)與應(yīng)用相關(guān)的代碼。包括OS_CFG.H和INCLUDES.H頭文件。OS_CFG.H文件包含μC/OS-II的初始化配置項(xiàng),由一系列#define constant語句構(gòu)成。INCLUDES.H是一個頭文件,在所有.C文件的第一行被包含。用戶可以通過編輯INCLUDES.H來增加自己的頭文件,但是用戶的頭文件必須添加在頭文件列表的最后。
(3) 與處理器相關(guān)的代碼。即OS_CPU.H、OS_CPU_A.ASM及OS_CPU_C.C,絕大部分的移植工作都集中在這里。
移植μC/OS-II的具體步驟是:(1)在OS_CPU.H中設(shè)置一個常量來標(biāo)識堆棧增長方向;(2)在OS_CPU.H中聲明幾個用于開關(guān)中斷和任務(wù)切換的宏;(3)在OS_CPU.H中針對具體處理器的字長重新定義一系列數(shù)據(jù)類型;(4)在OS_CPU_A.ASM中改寫4個匯編語言的函數(shù):OSStartHighRdy()、OSCtxSw()、OSIntCtxSw()和OSTickISR();(5)在OS_CPU_C.C中用C 語言重新編寫6個簡單的C函數(shù):OSTaskStk Init()、OSTaskCreateHook()、OSTaskDelHook()、OSTaskSwHook()、OSTaskStatHook()和OSTimeTick Hook();(6)修改主頭文件INCLUDES.H,將上面的三個文件和其他的頭文件加入。
4.3 實(shí)時操作系統(tǒng)軟件平臺的優(yōu)化
移植后的實(shí)時操作系統(tǒng)可根據(jù)具體硬件和性能需求進(jìn)行優(yōu)化,以獲得更高的執(zhí)行效率。
(1) 裁剪[9]
μC/OS-II具有源代碼開放的優(yōu)點(diǎn),是一個可裁剪的操作系統(tǒng)。在實(shí)際應(yīng)用時可根據(jù)需要對源代碼進(jìn)行取舍,去掉不需要的服務(wù)以及不需要的變量和函數(shù),甚至可以根據(jù)需要改寫相關(guān)函數(shù)。代碼的削減可通過設(shè)置OS_CFG.H中的#define OS_×××_EN為0來實(shí)現(xiàn)。本系統(tǒng)中取消了不需要的郵箱服務(wù)、任務(wù)掛起等功能,使得代碼非常簡練,可靠性更好。此外,在μC/OS-II的源代碼中,函數(shù)執(zhí)行中有許多條件判斷,作用是防止參數(shù)的錯誤傳遞。作為通用系統(tǒng),這些條件判斷是完全必要的,避免出現(xiàn)錯誤時系統(tǒng)崩潰。但作為具體的應(yīng)用,只要在程序設(shè)計時保證參數(shù)傳遞的正確性,完全可以不用條件判斷,所以在本系統(tǒng)程序設(shè)計時,取消了全部的條件判斷,從而提高了函數(shù)的執(zhí)行速度。
(2) 改進(jìn)內(nèi)存管理
μC/OS-II在內(nèi)存管理上顯得過于簡單,其任務(wù)?臻g和內(nèi)存分區(qū)的創(chuàng)建采用了定義全局?jǐn)?shù)組的方法,即定義一維或二維的全局?jǐn)?shù)組,在創(chuàng)建任務(wù)或內(nèi)存分區(qū)時,將數(shù)組名作為內(nèi)存地址指針傳遞給生成函數(shù)。這樣實(shí)現(xiàn)起來固然簡單,但是不夠靈活有效。
編譯器會將全局?jǐn)?shù)組作為未初始化的全局變量,放到應(yīng)用程序映像的數(shù)據(jù)段。數(shù)組大小是固定的,生成映像后不可能在使用中動態(tài)地改變。對于任務(wù)?臻g來說,數(shù)組定義大了會造成內(nèi)存浪費(fèi),定義小了任務(wù)棧溢出會造成系統(tǒng)崩潰。對于內(nèi)存分區(qū),在不知道系統(tǒng)初始化后給用戶留下了多少自由內(nèi)存空間的情況下,很難定義內(nèi)存分區(qū)所用數(shù)組的大小?梢姡萌?jǐn)?shù)組來分配內(nèi)存空間是不合理的。另外,目前的μC/OS-II只支持固定大小的內(nèi)存分區(qū),容易造成內(nèi)存浪費(fèi)。所以應(yīng)該改進(jìn)以支持可變大小的內(nèi)存分區(qū)。
因此,在本系統(tǒng)中采用如下方法來對內(nèi)存進(jìn)行管理:①系統(tǒng)初始化時,正確安排代碼段和數(shù)據(jù)段的位置,從而確定用戶自由空間的起始地址;②用目標(biāo)板(LF2407)內(nèi)存最高端地址減去起始地址得到用戶自由空間的大;③在自用空間中建立和使用內(nèi)存分區(qū),分配好任務(wù)堆棧、事件控制塊和消息隊(duì)列等各自內(nèi)存大小。
(3) 堆棧的使用和管理
在μC/OS-II中,各任務(wù)的堆棧在邏輯上是相互獨(dú)立的,這樣在分配每一個任務(wù)堆棧區(qū)的大小時,不但要考慮本任務(wù)中的局部變量和函數(shù)嵌套所需要的堆?臻g,還要考慮系統(tǒng)中所可能發(fā)生的最大層數(shù)的中斷嵌套所需的堆?臻g,從而要占用較多的RAM空間,在系統(tǒng)中有多個任務(wù)同時存在時尤其嚴(yán)重。如果對此考慮不足,則可能會出現(xiàn)運(yùn)行中的任務(wù)堆?臻g不足、溢出的情形,從而導(dǎo)致系統(tǒng)崩潰。
針對上述問題,本系統(tǒng)采用以下方法使用和管理堆棧:各任務(wù)棧相互分離,且不考慮中斷使用;另外分配一個工作棧,可滿足所需堆?臻g最大的任務(wù)在最大可能層數(shù)的中斷嵌套下使用。運(yùn)行時,將當(dāng)前任務(wù)的任務(wù)堆棧內(nèi)容拷貝至工作棧中,在工作棧中運(yùn)行;當(dāng)發(fā)生任務(wù)切換時,先將工作棧中的有用內(nèi)容保存到當(dāng)前任務(wù)棧,然后將待運(yùn)行任務(wù)的任務(wù)棧調(diào)入工作棧,在工作棧中運(yùn)行。在此過程中,堆棧指針始終指在工作棧區(qū)域內(nèi)。
5 協(xié)議轉(zhuǎn)換系統(tǒng)的軟件設(shè)計
協(xié)議轉(zhuǎn)換系統(tǒng)是一個多任務(wù)系統(tǒng),并且各個任務(wù)之間很可能同時進(jìn)行,其整個軟件按功能可以分成兩個模塊:導(dǎo)彈加溫、準(zhǔn)備工作子程序和導(dǎo)彈發(fā)射子程序。流程圖分別如圖5、圖6所示。
6 協(xié)議轉(zhuǎn)換系統(tǒng)的測試和驗(yàn)證
系統(tǒng)參數(shù)和設(shè)置如下:晶振頻率為11 059.2kHz,鎖相環(huán)(PLL)倍增器值設(shè)置為4,存儲器加速開啟,中斷類型為IRQ中斷。在此條件下,其中斷響應(yīng)時間即為從中斷發(fā)生起,到執(zhí)行中斷處理程序的第一條指令所用的時間,約為0.76μs;飛機(jī)控制指令發(fā)出到導(dǎo)彈動作實(shí)際執(zhí)行,最大時間延遲約為1.43μs,系統(tǒng)實(shí)時性完全符合要求。將該協(xié)議轉(zhuǎn)換系統(tǒng)安裝在發(fā)射架內(nèi),進(jìn)行實(shí)際的聯(lián)機(jī)驗(yàn)證,實(shí)際運(yùn)行結(jié)果表明,能有效實(shí)現(xiàn)參數(shù)、數(shù)據(jù)的傳輸和轉(zhuǎn)換以及飛機(jī)對導(dǎo)彈的實(shí)時控制等。
1553B和ARINC429總線實(shí)時協(xié)議轉(zhuǎn)換系統(tǒng)硬件部分采用“MCU+FPGA+外圍芯片”進(jìn)行構(gòu)建;軟件部分是將嵌入式實(shí)時內(nèi)核μC/OS-II移植到DSP控制器上從而構(gòu)建一個低成本的通用嵌入式實(shí)時軟件平臺,基于此平臺以C語言和匯編語言在DSP集成化軟件開發(fā)環(huán)境CCS上加以實(shí)現(xiàn)。協(xié)議轉(zhuǎn)換系統(tǒng)在滿足實(shí)時性和可靠性要求的前提下,軟、硬件盡可能地簡化;在結(jié)構(gòu)上盡量模塊化,同時便于監(jiān)測、安裝、維護(hù)和檢修。為了驗(yàn)證協(xié)議轉(zhuǎn)換系統(tǒng)的功能和性能是否完全符合要求,對協(xié)議轉(zhuǎn)換系統(tǒng)進(jìn)行了測試,并最終實(shí)現(xiàn)了聯(lián)機(jī)驗(yàn)證。結(jié)果表明,該系統(tǒng)完全符合設(shè)計要求,完成了系統(tǒng)所應(yīng)具有的所有功能。
參考文獻(xiàn)
[1] Condor.Engineering.Inc.MIL-STD-1553 tutorial.pdf [EB/OL].http://www.codoreng.com,2004.
[2] Data Device Corporation.ACE/Mini-ACE Series BC/RT/MT advanced communication engine integrat-ed 1553 terminal User’s guide[M]. New York:Data Device Corporation,2004.
[3] 國防科學(xué)技術(shù)工業(yè)委員會.中華人民共和國國家軍用標(biāo)準(zhǔn) GJB 1188A-99 數(shù)字式時分制指令/響應(yīng)型多路傳輸數(shù)據(jù)總線[S].北京:國防科學(xué)技術(shù)工業(yè)委員會,1997.
[4] 王勇.航空機(jī)載計算機(jī)航空電子總線[D].西安:空軍工程大學(xué),1997.
[5] Aeronautical Radio Inc. MARK33 DIGITAL INFORMATION TRANSFER SYSTEM(DITS)[M].USA: Aeronautical Radio Inc,2002:1-6.
[6] 中華人民共和國航空工業(yè)部.中華人民共和國航空工業(yè)部標(biāo)準(zhǔn)HB6096-86數(shù)字信息傳輸系統(tǒng)[S]. 北京:中華人民共和國航空工業(yè)部,1986.
[7] 王勁松.基于DSP和μC/OS-II的家庭智能網(wǎng)絡(luò)控制器研究[D]. 北京:北方工業(yè)大學(xué),2003.
[8] LABROSSE J J. Embedded x86 programming:protected mode[J]. USA:EMBEDDED SYSTEMS PROGRAMMING 1998.
[9] 楊靜.基于DSP的嵌入式實(shí)時操作系統(tǒng)平臺及其應(yīng)用[D].杭州:浙江大學(xué),2005.
作者:付新華 肖明清 袁大勇 空軍工程大學(xué) 來源:《電子技術(shù)應(yīng)用》2008年5期