曹維國,鄭志峰,楊海凝,溫培培,段潔
(1.長春理工大學(xué) 光電工程學(xué)院,長春 130022;2.廣東工商職業(yè)學(xué)院實訓(xùn)中心,肇慶 526020)
中高空面陣CCD航空相機操作系統(tǒng)裁剪技術(shù)研究
曹維國1,鄭志峰2,楊海凝1,溫培培1,段潔1
(1.長春理工大學(xué)光電工程學(xué)院,長春130022;2.廣東工商職業(yè)學(xué)院實訓(xùn)中心,肇慶526020)
針對面陣CCD航空相機操作系統(tǒng)的實際需求,結(jié)合相機中PC104總線結(jié)構(gòu)的硬件資源,對所采用的Linux系統(tǒng)進行實用性裁剪。采用粗粒度和細粒度相結(jié)合的裁剪方法,來增強Linux內(nèi)核的搶占性,改善Linux內(nèi)核的實時調(diào)度器的調(diào)度策略,以構(gòu)建具有較強實施處理能力的嵌入式系統(tǒng)。在不同環(huán)境下,對系統(tǒng)的啟動和任務(wù)響應(yīng)性能的試驗測試表明,裁剪后的系統(tǒng)穩(wěn)定、可靠,且可達到啟動時間小于5s,任務(wù)響應(yīng)時間小于20ms的性能指標(biāo)。
航空相機;操作系統(tǒng);裁剪;Linux
中高空面陣CCD航空相機主要配裝于軍用偵察機,其任務(wù)是從中高空實時獲取高分辨率可見光目標(biāo)圖像信息。而面陣CCD航空相機的操縱控制系統(tǒng)作為其控制核心,其響應(yīng)速度直接影響航空相機的工作性能,故影響航空偵察任務(wù)的完成情況。為了滿足航空相機的實時性設(shè)計要求,通常選擇Linux系統(tǒng)作為其主控系統(tǒng)。因為Linux系統(tǒng)成熟、穩(wěn)定、源代碼開放和可裁剪,且不存在黑箱技術(shù)。而現(xiàn)有的Linux是一個通用的操作系統(tǒng),雖然它采用了許多先進技術(shù)來提高系統(tǒng)的運行和反應(yīng)速度,但它本質(zhì)上不是一個實時操作系統(tǒng),應(yīng)用于航空相機嵌入式環(huán)境中還存在諸多的不足。例如關(guān)中斷問題、進程調(diào)度問題和時鐘問題等,這些缺點延遲高優(yōu)先級的中斷請求,妨礙了高優(yōu)先級進程實時搶占CPU和降低了周期性的實時任務(wù)實施效率。本文針對存在的不足,對現(xiàn)有的通用Linux系統(tǒng)進行實用裁剪與改造,從而減少移植工作的盲目性和加快嵌入式Linux系統(tǒng)的移植進度,并將其應(yīng)用于中高空面陣CCD航空相機操縱系統(tǒng)中。為開發(fā)中國航空領(lǐng)域具有自主知識產(chǎn)權(quán)的嵌入式處理器、嵌入式操作系統(tǒng)和嵌入式高端產(chǎn)品奠定了基礎(chǔ),對提高我國武器裝備的設(shè)計水平和自動化程度,具有重要的戰(zhàn)略意義和廣泛的應(yīng)用前景。
根據(jù)Linux裁剪方法研究現(xiàn)狀,現(xiàn)有的Linux的裁剪技術(shù)主要有基于Linux自配裁剪技術(shù),基于Linux系統(tǒng)的源代碼裁剪技術(shù),基于調(diào)用圖的Linux內(nèi)核的裁剪技術(shù)。
1.1基于Linux自配裁剪技術(shù)
在Linux內(nèi)核的初始設(shè)計時,將內(nèi)核的所有相關(guān)功能進行模塊化設(shè)計,并對所有功能模塊采用配置選項的獨立設(shè)置,再根據(jù)不同功能嵌入式系統(tǒng)設(shè)計需求,在實際應(yīng)用中采用內(nèi)核編譯指令make menuconfig對內(nèi)核模塊進行編譯。這種做法是利用Linux系統(tǒng)自配的編譯工具實現(xiàn)了內(nèi)核的裁剪,設(shè)計出不同嵌入式系統(tǒng)所需的內(nèi)核。
此種裁剪技術(shù)適用于功能比較單一和專門的嵌入式系統(tǒng),其系統(tǒng)所配套外圍硬件也相對單一,所以應(yīng)用此技術(shù)裁剪時,首先要明確Linux系統(tǒng)中的所有模塊的配置選項,再選擇具體的硬件所需驅(qū)動模塊進行配置。采用此種裁剪技術(shù)剪后的內(nèi)核占用的系統(tǒng)存儲空間相對較小,既滿足了嵌入系統(tǒng)所需的硬件配置要求,也實現(xiàn)了其功能的可行操作。此種裁剪方法的粒度較大,也稱作為粗粒度裁剪。
1.2基于Linux系統(tǒng)的源代碼裁剪技術(shù)
在嵌入式系統(tǒng)的實際裁剪中,可在分析Linux內(nèi)核源代碼的詳細功能基礎(chǔ)上,參考嵌入式系統(tǒng)的具體運行需求,通過修改內(nèi)核代碼,例如保留執(zhí)行運行操作的內(nèi)核代碼,去除不相關(guān)的代碼或者函數(shù),提供實際應(yīng)用中的需要的代碼,降低無關(guān)代碼所占空間。此種裁剪方法的優(yōu)點是裁剪粒度較小,裁剪內(nèi)容相對詳細;但缺點是操作難度很大,對于源代碼的內(nèi)容量大的操作不易實現(xiàn)。
1.3基于調(diào)用圖的Linux內(nèi)核的裁剪技術(shù)
基于調(diào)用圖的Linux內(nèi)核的裁剪過程分為以下五個步驟:
(1)建立應(yīng)用程序的調(diào)用圖
Linux系統(tǒng)設(shè)計的程序的調(diào)用圖有C=(V,R),則有公式(1):
式中,V為程序中所有的函數(shù)集合;R為函數(shù)調(diào)用關(guān)系集合。
根據(jù)公式(1)建立的調(diào)用圖應(yīng)用程序代碼,再依據(jù)公式和程序代碼建立應(yīng)用程序調(diào)用圖,就可直接的對庫函數(shù)進行調(diào)用選擇,從而去除無關(guān)內(nèi)容。
(2)建立共享庫調(diào)用圖
Linux系統(tǒng)龐大功能的實現(xiàn)對函數(shù)庫中函數(shù)的大量調(diào)用,所以建立的調(diào)用共享庫是Linux系統(tǒng)重要構(gòu)成,系統(tǒng)所涉及到的程序的基本函數(shù)全部保存在共享庫中,但是由于其內(nèi)容龐雜,其占用大量的存儲空間,因此針對此問題,需要對共享庫的裁剪。
通常,Linux系統(tǒng)內(nèi)部的共享庫是以調(diào)用圖的形式給出的,如圖1所示,其可直觀看出系統(tǒng)對庫函數(shù)的調(diào)用結(jié)構(gòu),使用時,可直接調(diào)入到Linux中,且為應(yīng)用程序提供的多個入口。建立的共享庫調(diào)用圖的目的是為了解相關(guān)數(shù)據(jù)的重復(fù)調(diào)用性,無關(guān)數(shù)據(jù)庫則可直接剔除,實現(xiàn)對共享調(diào)用庫的裁剪。
圖1 共享調(diào)用圖示意圖
(3)建立內(nèi)核調(diào)用圖
建立內(nèi)核調(diào)用圖和建立庫調(diào)用圖的方法相似,當(dāng)系統(tǒng)有異常請求或中斷信號時,內(nèi)核就會進行中斷判別,根據(jù)不同的中斷級別進行相應(yīng)的中斷處理,此時只有建立內(nèi)核調(diào)用圖,才能明確啟動內(nèi)核函數(shù)的具體條件和時間。根據(jù)內(nèi)核函數(shù)啟動的情況,來去除Linux裁剪中無關(guān)的函數(shù)。
(4)建立混合調(diào)用圖
建立混合調(diào)用圖[1]的方法是在分析以上三種調(diào)用圖的建立原理基礎(chǔ)上,采用三種調(diào)用圖建立技術(shù)優(yōu)點,弱化其技術(shù)缺點,結(jié)合實際應(yīng)用系統(tǒng)的設(shè)計要求,構(gòu)造實際應(yīng)用系統(tǒng)的混合調(diào)用圖。如圖2給出了面陣CCD航空相機操縱系統(tǒng)圖像采集模塊的混合調(diào)用圖。
圖2 操縱系統(tǒng)圖像模塊的混合調(diào)用圖
(5)內(nèi)核函數(shù)和庫函數(shù)的調(diào)用
設(shè)計應(yīng)用程序時,因無法直接調(diào)用內(nèi)核函數(shù),因此,必須參照所建立的共享庫函數(shù)與內(nèi)核函數(shù)的映射關(guān)系和應(yīng)用程序與庫函數(shù)的調(diào)用關(guān)系。實際調(diào)用時對所需的內(nèi)核函數(shù)進行實用性裁剪,同時,可有效去除無關(guān)的內(nèi)核函數(shù)。以圖2所建立的混合調(diào)用圖看出,所編寫的航空相機操縱系統(tǒng)的圖像采集模塊的應(yīng)用程序調(diào)用的庫函數(shù)包括有printf、mmap、munmap和ioctio,內(nèi)核函數(shù)有sys-open、sys-close、sys-write、sys-mmap、sys-ioctl、sys-munmap,而其他無關(guān)的庫函數(shù)和內(nèi)核功能函數(shù)將被裁剪去除。
針對基于PC104總線的硬件資源進行了Boot Loader移植,根據(jù)應(yīng)用需求,將移植后系統(tǒng)采用不同的裁剪方法進行裁剪。
2.1內(nèi)核相關(guān)源代碼修改裁剪
系統(tǒng)要修改的相關(guān)源代碼包括啟動程序和arch目錄中代碼修改文件[2]。對啟動程序的修改就是通過對內(nèi)核入口代碼的修改來實現(xiàn)的,具體的做法就是修改路徑為/arch/arm/kernel/head-army.s相關(guān)源代碼文件。內(nèi)核啟動時,內(nèi)核首先通過入口代碼核實PC/104控制寄存器的配對值與Linux內(nèi)核代碼默認(rèn)信息是否一致。因此,通過修改入口代碼可使得Linux內(nèi)核的正常啟動。因為Linux的啟動程序中涉及到arch目錄,所以必須對arch目錄相關(guān)文件必須進行一定修改,才能滿足不同嵌入式系統(tǒng)的啟動要求,主要涉及的文件有Makefile、config.in和entry-army.S。arch目錄中與啟動有關(guān)的文件代碼修改流程如圖3所示。
2.2粗粒度裁剪內(nèi)核配置
圖3 啟動相關(guān)文件代碼修改流程圖
基于Linux自配裁剪技術(shù)的粗粒度裁剪內(nèi)核配置有四種方式:make config、make oldconfig、make menuconfig和make xconfig。根據(jù)所需系統(tǒng)的技術(shù)要求,選擇不同方式的內(nèi)核配置方式,由于每種應(yīng)用系統(tǒng)代碼修改操作流程不同,以致于操作過程的可操作性難易不同。根據(jù)操縱系統(tǒng)程序代碼的特點,本文選擇了make xconfig方式進行配置,因其具有菜單式配置選項設(shè)置,操作過程可視、簡便,且有利于提高應(yīng)用程序代碼的重復(fù)使用率,使編程簡化,節(jié)省存儲空間[2-4]。圖4(a)、(b)給出了操縱系統(tǒng)主控計算機中Linux平臺的Xwindow界面。
圖4 粗粒度的裁剪內(nèi)核配置界面圖
對于Linux內(nèi)核提供的配置時,多功能模塊給出了Y、N和M三種選擇,具體含義分別為將該功能編譯到內(nèi)核、不選擇編譯和編譯存儲為實時動態(tài)模塊并等待需要插入內(nèi)核。本文為實現(xiàn)所設(shè)計的嵌入式系統(tǒng)內(nèi)核構(gòu)建最小,多項功能模塊的配置選擇為N。目的提高內(nèi)核內(nèi)存利用率,減少啟動時間。
2.3細粒度裁剪內(nèi)核函數(shù)和庫函數(shù)
基于Linux系統(tǒng)的源代碼裁剪技術(shù)的細粒度裁剪主要是通過函數(shù)分析程序,選擇系統(tǒng)為實現(xiàn)某一特定功能必須的函數(shù)或者庫函數(shù),并剔除無關(guān)的函數(shù)包,以實現(xiàn)內(nèi)核空間優(yōu)化[5]。
表1給出了所設(shè)計的操縱系統(tǒng)的應(yīng)用程序必須調(diào)用的庫函數(shù),并給出了函數(shù)庫與內(nèi)核函數(shù)的對應(yīng)關(guān)系。通過此表就可剔除系統(tǒng)無關(guān)的函數(shù)包,如strcpy。
本文要構(gòu)造一個具有實時響應(yīng)能力的實用性Linux系統(tǒng),其必須具備開關(guān)機、重啟和任務(wù)響應(yīng)等功能,所以本文對操縱系統(tǒng)進行相關(guān)啟動和任務(wù)響應(yīng)測試[6]。系統(tǒng)在模擬的環(huán)境工作條件下,分別對未裁剪和裁剪后的系統(tǒng)進行了720小時的間歇性性能測試試驗,每次試驗至少連續(xù)工作4小時以上,讓被測試系統(tǒng)間歇性執(zhí)行啟動,重啟和不同的任務(wù)響應(yīng),并且在試驗測試結(jié)束一年以后進行實際應(yīng)用試驗測試。
首先要進行的是開關(guān)機與重啟測試,系統(tǒng)的啟動時間通過系統(tǒng)函數(shù)top和uptime可以計算得到。為了驗證啟動時間的精確性,系統(tǒng)同時采用第三方設(shè)備(精密定時器,精度100μs)進行測試。依據(jù)航空相機自檢工作周期為3.2s~4.6s,故要求裁剪后的系統(tǒng)的啟動測試要求時間小于等于5s。經(jīng)過多次測試后,得到未裁剪和裁剪后系統(tǒng)的啟動時間如表2所示。
在進行任務(wù)響應(yīng)功能測試,系統(tǒng)上電啟動后,正確連接適配器和外部測試端口,根據(jù)應(yīng)用軟件相關(guān)提示信息,進行測試,系統(tǒng)文件嵌入相關(guān)的計時程序和第三方計時硬件,該程序可自動記錄任務(wù)響應(yīng)時間。依據(jù)航空相機快門響應(yīng)范圍為1/5000s~1/125s和其姿態(tài)調(diào)整時間為2.8ms~10.1ms,可以得到裁剪后的系統(tǒng)的任務(wù)響應(yīng)測試要求時間小于等于20ms,具體任務(wù)響應(yīng)測試數(shù)據(jù)見表3所示。
表1 庫函數(shù)和內(nèi)核函數(shù)的對應(yīng)關(guān)系
表2 系統(tǒng)啟動時間數(shù)據(jù)表
表3 任務(wù)響應(yīng)測試數(shù)據(jù)表
由表2和3測試結(jié)果分析可知,所設(shè)計的面陣CCD航空相機嵌入式Linux系統(tǒng)方案可行,裁剪方法有效。經(jīng)過實驗室測試和實際航拍考核,結(jié)果表明該系統(tǒng)穩(wěn)定、可靠,并且具備嵌入式Linux系統(tǒng)的基本功能和任務(wù)響應(yīng)功能,達到了啟動時間小于5s和任務(wù)響應(yīng)時間小于20ms的技術(shù)指標(biāo)的要求。
研究了Linux內(nèi)核的裁剪技術(shù),采用粗粒度與細粒度相結(jié)合的裁剪方法,對所研究的面陣CCD航空相機的操作系統(tǒng)進行裁剪,使裁剪后的系統(tǒng)搶占性和內(nèi)核實時調(diào)度器的調(diào)度策略兩方面性能得到了大幅度的增強和改善。經(jīng)過實驗室測試和實際航拍考核,表明該系統(tǒng)啟動時間小于5s,任務(wù)響應(yīng)時間小于20ms,系統(tǒng)運行穩(wěn)定、可靠,而本文所研究的裁剪技術(shù)對同類型嵌入式系統(tǒng)性能改造也具有較強的實際應(yīng)用價值。
[1] 張云蓉,王培東.基于調(diào)用圖的嵌入式Linux裁剪技術(shù)研究[J].哈爾濱理工大學(xué)學(xué)報,2004,9(2):60-62.
[2] 黃義文.Linux操作系統(tǒng)內(nèi)核裁剪的分析[J].中國民航飛行學(xué)院學(xué)報,2010,6(2):56-59.
[3] 張國峰.基于Linux的三維圖形渲染平臺的構(gòu)建和優(yōu)化研究[J].系統(tǒng)仿真學(xué)報,2006,1(S2):466-469.
[4] 曾福振,閔聯(lián)營.基于ARM和Linux的嵌入式平臺的構(gòu)建[J].微型機與應(yīng)用,2011,30(12):51-57.
[5] 劉云新,張堯?qū)W.一個基于Linux的嵌入式實時操作系統(tǒng)[J].計算機工程與應(yīng)用,2001,1(7):64-67.
[6] 段潔.中高空面陣CCD航空相機操縱系統(tǒng)關(guān)鍵技術(shù)研究[D].長春:長春理工大學(xué),2013.
Research on Tailoring Technology of Operation System of Medium-high Altitude Area Array CCD Aerial Camera
CAO Weiguo1,ZHENG Zhifeng2,YANG Haining1,WEN Peipei1,DUAN Jie1
(1.School of Optoelectronic Engineering,Changchun University of Science and Technology,Changchun 130022;2.Guangdong College of Business and Technology,Zhaoqing 526020)
In view of the actual demand of operating system of the air plane array CCD camera,and combining with the hardware resources of the PC104 bus structure,the Linux system adopted in CCD camera is cut practically,which based on the tailoring method adopting the combination of coarse-grained and fine-grained to enhance the Linux kernel preemption.Through improving the scheduling strategy of Linux kernel scheduler,we build a embedded system with the strong implementation capacity.The system startup and task of the response performance test in different environment shows that the cut systems is stable,reliable,and can achieve the startup time less than 5s,the performance of the task response time less than 20ms.
aviation camera;operating system;tailoring;Linux
TP391
A
1672-9870(2015)05-0058-06
2014-11-21
曹維國(1958-),男,高級實驗師,E-mail:caoweiguo269@sohu.com