王寧 韓春陽(yáng)
摘 要:航空電子系統(tǒng)涵蓋了整個(gè)飛機(jī)上所有的航電應(yīng)用任務(wù),對(duì)飛機(jī)飛行任務(wù)的執(zhí)行起著至關(guān)重要的作用,如果沒(méi)有航電系統(tǒng),飛機(jī)僅僅是一架能飛上天的機(jī)器而已,有了航電系統(tǒng)飛機(jī)才能展現(xiàn)出它的強(qiáng)大功能。隨著對(duì)飛機(jī)功能要求的不斷提高,航電應(yīng)用的數(shù)量越來(lái)越多,設(shè)計(jì)也越來(lái)越復(fù)雜,在眾多復(fù)雜的設(shè)計(jì)中,各個(gè)應(yīng)用之間跨平臺(tái)進(jìn)行的數(shù)據(jù)交換是非常重要的一環(huán)。本文討論了一種實(shí)現(xiàn)數(shù)據(jù)跨平臺(tái)使用的方法。
關(guān)鍵詞:綜合化航電;數(shù)據(jù)交換;航電應(yīng)用
引言
隨著綜合化航空電子系統(tǒng)實(shí)現(xiàn)的功能越來(lái)越復(fù)雜,單一的硬件模塊已經(jīng)不能滿足全部航電應(yīng)用的運(yùn)行需求,因此,所有的航電應(yīng)用根據(jù)功能劃分以及對(duì)硬件資源的要求,被合理地分配到各個(gè)不同的硬件模塊上。在硬件模塊方案設(shè)計(jì)階段,設(shè)計(jì)人員會(huì)根據(jù)分配給該模塊的航電應(yīng)用的實(shí)際資源需求,來(lái)選擇最適合的硬件體系架構(gòu)。最終,航電系統(tǒng)中就會(huì)出現(xiàn)各種不同的硬件平臺(tái)互相協(xié)同工作的局面。在不同硬件平臺(tái)上運(yùn)行的航電應(yīng)用之間需要數(shù)據(jù)交換,因此,就需要對(duì)綜合化航電系統(tǒng)中跨平臺(tái)數(shù)據(jù)使用方法進(jìn)行研究并提出合理可行的解決方案。
1 跨平臺(tái)數(shù)據(jù)差異
跨平臺(tái)數(shù)據(jù)差異主要涉及兩方面的內(nèi)容:與CPU相關(guān)的大小端數(shù)據(jù)存儲(chǔ)方式、與編譯器相關(guān)的數(shù)據(jù)對(duì)齊格式。
1.1 大小端數(shù)據(jù)存儲(chǔ)方式
大小端存儲(chǔ)格式不同,體現(xiàn)為多字節(jié)數(shù)據(jù)在內(nèi)存中的存儲(chǔ)表示方法不同:采用大端模式時(shí),數(shù)據(jù)的高位存儲(chǔ)在內(nèi)存的低地址中;采用小端模式時(shí),數(shù)據(jù)的高位存儲(chǔ)在內(nèi)存的高地址中。大小端數(shù)據(jù)對(duì)齊主要由硬件設(shè)計(jì)所選取的CPU型號(hào)確定,例如:在目前主流的CPU系列中,X86系列采用小端模式,PPC系列則采用大端模式。
1.2 編譯器數(shù)據(jù)對(duì)齊格式
數(shù)據(jù)對(duì)齊格式的差異,體現(xiàn)為在經(jīng)編譯器編譯完成之后的目標(biāo)碼中,不同字節(jié)長(zhǎng)度的數(shù)據(jù)連續(xù)存放時(shí),對(duì)于每一個(gè)單獨(dú)數(shù)據(jù)的存儲(chǔ)起始地址的要求上。例如:同樣一組數(shù)據(jù),采用2字節(jié)對(duì)齊方式,與采用4字節(jié)對(duì)齊方式,最終在內(nèi)存中的存放結(jié)果是不相同的。
雖然數(shù)據(jù)的對(duì)齊操作具體由編譯器來(lái)執(zhí)行完成,但是對(duì)于數(shù)據(jù)對(duì)齊格式的要求,則不是完全由編譯器所決定的,編譯器對(duì)于數(shù)據(jù)對(duì)齊格式的選擇,很大程度上還是依賴于目標(biāo)碼最終的硬件執(zhí)行環(huán)境(主要是CPU對(duì)于數(shù)據(jù)對(duì)齊的硬性要求)。
2 應(yīng)用數(shù)據(jù)的不同類型
在航電應(yīng)用中,經(jīng)常遇到的需要跨平臺(tái)使用的數(shù)據(jù)主要有以下兩種類型:
靜態(tài)獨(dú)立數(shù)據(jù),是指該數(shù)據(jù)并不隨著應(yīng)用程序一起由編譯器編譯生成,該類數(shù)據(jù)經(jīng)常對(duì)應(yīng)系統(tǒng)的配置信息數(shù)據(jù)集。這些系統(tǒng)配置信息由宿主機(jī)上的專用配置工具進(jìn)行配置,配置完成后生成可供應(yīng)用程序在目標(biāo)機(jī)上進(jìn)行訪問(wèn)的二進(jìn)制數(shù)據(jù),該二進(jìn)制數(shù)據(jù)最終被固化在目標(biāo)機(jī)的非易失存儲(chǔ)設(shè)備上,或者直接以文件的形式存儲(chǔ)在目標(biāo)機(jī)的文件系統(tǒng)中。應(yīng)用程序在使用該類數(shù)據(jù)時(shí),必須按照其內(nèi)部的二進(jìn)制數(shù)據(jù)格式進(jìn)行操作,因此使用效率相對(duì)低一些。
編譯器聯(lián)編數(shù)據(jù),是指應(yīng)用程序源碼中直接由程序數(shù)據(jù)類型所定義的程序數(shù)據(jù)。這些數(shù)據(jù)經(jīng)編譯器編譯完成后,絕大部分存儲(chǔ)在應(yīng)用程序目標(biāo)碼的數(shù)據(jù)段中。通常情況下,該數(shù)據(jù)與應(yīng)用程序一起由編譯器編譯完成,并生成在同一個(gè)二進(jìn)制文件中,最終會(huì)隨著應(yīng)用程序的目標(biāo)碼,一起被固化進(jìn)目標(biāo)機(jī)的非易失存儲(chǔ)區(qū)域。也有極少數(shù)情況下,這部分程序數(shù)據(jù)會(huì)被單獨(dú)生成一個(gè)二進(jìn)制文件,并固化在編譯器指定的內(nèi)存地址中。但是,不論是與應(yīng)用程序的二進(jìn)制文件一起生成還是單獨(dú)生成,該類型的數(shù)據(jù)都能夠直接被應(yīng)用程序高效地使用。
3 應(yīng)用數(shù)據(jù)的跨平臺(tái)使用
對(duì)于靜態(tài)獨(dú)立數(shù)據(jù),由于最終的二進(jìn)制格式不是由編譯器按照程序定義的數(shù)據(jù)結(jié)構(gòu)生成的,因此,應(yīng)用程序在使用該數(shù)據(jù)時(shí)必須要了解數(shù)據(jù)的存儲(chǔ)方式。為了使靜態(tài)獨(dú)立數(shù)據(jù)對(duì)應(yīng)的二進(jìn)制格式,能夠滿足跨平臺(tái)使用的要求,則需要該二進(jìn)制格式與具體的編譯器無(wú)關(guān)。因此,需要在二進(jìn)制數(shù)據(jù)的起始位置,對(duì)數(shù)據(jù)格式進(jìn)行必要的描述,例如:數(shù)據(jù)所采用的大小端方式、不同類型數(shù)據(jù)所在的存儲(chǔ)位置、連續(xù)存儲(chǔ)數(shù)據(jù)的對(duì)齊方式等。根據(jù)這些描述性信息,應(yīng)用程序?qū)φ麄€(gè)二進(jìn)制數(shù)據(jù)的存儲(chǔ)格式就有了一個(gè)全面的了解,并且能夠找到任何所需的數(shù)據(jù)內(nèi)容。采用這種方式訪問(wèn)數(shù)據(jù),應(yīng)用程序需要在數(shù)據(jù)描述信息的指導(dǎo)下完成,如果每次對(duì)于數(shù)據(jù)的訪問(wèn)都需要對(duì)描述信息進(jìn)行解析,那么數(shù)據(jù)訪問(wèn)效率會(huì)很差。因此,需要在應(yīng)用程序的啟動(dòng)運(yùn)行階段,由一段專門的解析程序,一次性對(duì)全部的數(shù)據(jù)內(nèi)容進(jìn)行解析,并將解析后獲得的數(shù)據(jù),以當(dāng)前程序運(yùn)行時(shí)所支持的編譯器格式進(jìn)行存放,供后續(xù)應(yīng)用程序直接訪問(wèn),這樣就大大提高了數(shù)據(jù)的訪問(wèn)效率。
對(duì)于編譯器聯(lián)編數(shù)據(jù),最主要的問(wèn)題則是數(shù)據(jù)對(duì)齊。隨著硬件存儲(chǔ)技術(shù)的飛速發(fā)展,現(xiàn)代航電系統(tǒng)中對(duì)于內(nèi)存的使用,已經(jīng)不像以前那樣進(jìn)行嚴(yán)格的控制。因此,可以對(duì)該問(wèn)題采用一個(gè)簡(jiǎn)單的一刀切的處理辦法:對(duì)所有的程序數(shù)據(jù)都采用4字節(jié)對(duì)齊的方式進(jìn)行定義,即:將4字節(jié)以下的數(shù)值數(shù)據(jù)都統(tǒng)一定義為32位,將所有的字符串?dāng)?shù)據(jù)都定義為4字節(jié)的整數(shù)倍。這樣雖然會(huì)浪費(fèi)一小部分內(nèi)存空間,但是極大地提高了數(shù)據(jù)跨平臺(tái)使用能力。
4 結(jié)束語(yǔ)
隨著航電系統(tǒng)所采用的硬件環(huán)境越來(lái)越復(fù)雜,對(duì)于航電系統(tǒng)中數(shù)據(jù)跨平臺(tái)使用的要求也越來(lái)越高。設(shè)計(jì)數(shù)據(jù)跨平臺(tái)使用方案時(shí),在數(shù)據(jù)使用方面,不僅要考慮到跨平臺(tái)的通用性,同時(shí)也要兼顧對(duì)于數(shù)據(jù)訪問(wèn)的效率;在硬件環(huán)境方面,除了要考慮目前系統(tǒng)中所采用的硬件環(huán)境外,還要考慮到后續(xù)系統(tǒng)升級(jí)時(shí)可能出現(xiàn)的各種情況。只有把上述所有影響因素都考慮在內(nèi),最終設(shè)計(jì)的數(shù)據(jù)跨平臺(tái)使用方案才會(huì)有一個(gè)比較合理的生命存續(xù)周期。
參考文獻(xiàn):
[1] 柳翠寅,韓敏,袁繼敏. 基于XML的跨平臺(tái)數(shù)據(jù)安全交換[J]. 微計(jì)算機(jī)信息,2007,23(11-3):35-37.
[2] 侯琰,龍虹. Web Services在跨平臺(tái)數(shù)據(jù)交換中的應(yīng)用[J]. 計(jì)算機(jī)應(yīng)用與軟件,2006,23(3):59-60.
[3] 靳其兵,王艷艷,龍萍. 基于FDT的OPC跨平臺(tái)數(shù)據(jù)訪問(wèn)研究[J]. 計(jì)算機(jī)工程,2010,36(4):265-266.
作者簡(jiǎn)介:王寧,男,(1982.3-),陜西渭南人,本科,工程師,主要從事綜合化航電系統(tǒng)軟件的研究、機(jī)載實(shí)時(shí)容錯(cuò)分布式系統(tǒng)的研究。
韓春陽(yáng),男,(1987.3-),黑龍江五常人,本科,工程師,主要從事綜合化航電系統(tǒng)軟件的研究、機(jī)載實(shí)時(shí)容錯(cuò)分布式系統(tǒng)的研究。