錢軍琪,李 博,徐玉杰
(航空工業(yè)西安航空計算技術(shù)研究所,陜西 西安 710065)
基于國產(chǎn)化軟硬件的顯示模塊(以下簡稱顯示模塊)位于某顯示處理系統(tǒng)中,基于國產(chǎn)處理器FT2000/4、國產(chǎn)圖形處理器JM7200和國產(chǎn)操作系統(tǒng)麒麟Linux操作系統(tǒng)完成軟硬件設(shè)計與實現(xiàn)。
顯示模塊系統(tǒng)結(jié)構(gòu)如圖1所示。顯示模塊支持座艙顯示符號,可運行iDATA、VAPS及ARINC661工具生成的顯示符號繪制代碼進行符號繪制。其最終輸出為多功能顯示器中的各種關(guān)鍵飛行信息、態(tài)勢感知、系統(tǒng)管理、作戰(zhàn)任務(wù)等畫面[1]。
圖1 系統(tǒng)結(jié)構(gòu)圖
顯示模塊主要技術(shù)參數(shù)如下:
◇ CPU:主頻1GHz;
◇ GPU:顯存容量4GB,像素填充率4.8GPixel/S,多邊形生成率200Mtri/S;
◇ 顯示接口:DVI,最大分辨率1600×1200@60Hz;
◇ 內(nèi)存:容量4GB;
◇ 電子盤:NVMe接口電子盤,容量512G;
◇ 對外接口:1路RS232,1路RS422,2路以太網(wǎng);
◇ 擴展接口:1路PCIE x8可用于擴展機載網(wǎng)絡(luò)如FC等;
◇ 模塊功耗:不超過40 W;
◇ 操作系統(tǒng):麒麟Linux操作系統(tǒng),內(nèi)置容器支持能力;
◇ OpenGL版本:OpenGL1.5;
◇ Qt版本:4.8。
顯示模塊主要由國產(chǎn)中央處理器FT2000/4及國產(chǎn)圖形處理器JM7200構(gòu)成,系統(tǒng)結(jié)構(gòu)如圖2所示。
圖2 顯示模塊系統(tǒng)結(jié)構(gòu)圖
顯示模塊硬件主要包括以下功能塊:
◇處理器電路:主要包括CPU和DDR、SPI Flash等周邊電路;
◇圖形處理器電路:主要包括GPU及其周邊電路;
◇視頻接口控制電路:主要包括FPGA及其周邊電路,DVI視頻輸出驅(qū)動電路;
◇大容量存儲器電路:主要包括NVMe電子盤電路;
◇RS232和RS422電路;
◇以太網(wǎng)接口電路;
◇復(fù)位及監(jiān)控電路;
◇電源轉(zhuǎn)換電路:DC/DC;
◇時鐘電路。
3.2.1 處理器電路
處理器選用FT2000/4處理器實現(xiàn)。FT2000/4處理器是由飛騰公司設(shè)計開發(fā)的面向桌面應(yīng)用領(lǐng)域的高性能國產(chǎn)處理器芯片,處理器電路主要技術(shù)指標如下[2]:
◇FT2000/4處理器:工作主頻1GHz;
◇4GB DDR存儲器:64位訪問,支持8位ECC校驗;
◇ 32MB SPI Flash存儲器;
◇對外接口:
●以太網(wǎng)2路,1000/100/10MHz自適應(yīng);
●1路X8的PCIE2.0接口;
●1路RS232接口;
●1路RS422接口。
處理器電路示意如圖3所示。
圖3 處理器電路示意圖
FT2000/4處理器包含4個ARMV8架構(gòu)的CPU核心,主頻運行在1GHz,處理能力8MIPS/MHz,單個處理器的處理性能1GHz×8MIPS/MHz×4=32GIPS;FT2000/4處理器集成DDR控制器,DDR控制器具備72位數(shù)據(jù)寬度(64位數(shù)據(jù)寬度,8位的ECC校驗寬度)。設(shè)計中DDR芯片選用4片國產(chǎn)的SM41K512M16M,配置4GB容量的DDR3 SDRAM。
FT2000/4處理器配置32MB的SPI接口Flash存儲器SM25QU256MK,用于存儲BOOT或固件等關(guān)鍵啟動代碼的存儲。FT2000/4處理器PCIE接口可滿足JM7200、NVMe電子盤的接口需求,同時為機載總線功能擴展留有接口。
FT2000/4處理器通過SPI Flash中的boot啟動,加載部署于NVMe電子盤中的麒麟Linux操作系統(tǒng)。麒麟Linux操作系統(tǒng)對FT2000/4和JM7200進行了適配,在多個應(yīng)用場景中得到了長期驗證,其穩(wěn)定性已驗證充分,可在機載環(huán)境推廣使用。
3.2.2 圖形處理器電路
圖形處理器電路選擇景嘉微電子公司生產(chǎn)的高性能國產(chǎn)圖形處理芯片JM7200。JM7200能夠高效完成2D、3D的圖形加速功能,提供多種豐富的外設(shè)接口,支持多種視頻輸出接口。對于麒麟Linux操作系統(tǒng),景嘉微電子公司提供符合OpenGL規(guī)范及支持2D桌面應(yīng)用的驅(qū)動程序,其驅(qū)動程序隨麒麟Linux系統(tǒng)在多個應(yīng)用場景中進行了廣泛驗證[3]。
圖形處理器電路示意如圖4所示,JM7200需要外置一片SPI接口Flash芯片用于存儲VBIOS程序,VBIOS可對JM7200上電后的基礎(chǔ)工作模式進行配置,如默認分辨率、默認輸出畫面等。
圖4 圖形處理電路示意圖
圖形處理器JM7200主要技術(shù)指標如下:
◇內(nèi)核時鐘頻率800MHz,存儲器時鐘頻率1066MHz;
◇PCIE 2.0接口,最高支持x16;
◇片上封裝兩組DDR3存儲器,每組位寬32位,共4GB容量;
◇2D、3D圖形生成功能;
◇支持2路LVDS和1路VGA視頻輸出;
◇支持4K分辨率視頻輸出;
◇功耗20W。
3.2.3 視頻接口控制電路
視頻接口控制電路指模塊中的FPGA視頻處理及DVI接口電路,FPGA用于JM7200輸出的兩路視頻信號的選擇及合并,可配置為兩路視頻信號的二選一輸出模式及半透明疊加輸出模式。
FPGA選取J7M7K325T芯片,FPGA與CPU通過PCIE總線連接,FPGA作為PCIE總線中的EP。CPU通過PCIE總線配置其視頻模式,經(jīng)FPGA處理后形成最終需顯示的視頻信號,最終視頻信號經(jīng)DVI視頻驅(qū)動器轉(zhuǎn)換為滿足多功能顯示器MFD的DVI信號。DVI驅(qū)動器使用GM7510芯片,具有信號抖動小、芯片功耗低等特點。
3.2.4 大容量存儲器電路
大容量存儲器指顯示模塊板載的國產(chǎn)嵌入式固態(tài)存儲芯片AS689GEF。該存儲芯片采用存控一體結(jié)構(gòu),將NAND閃存和DRAM結(jié)合到一個小的BGA封裝中,支持智能掃描,數(shù)據(jù)刷新,具有專有的高帶寬LDPC代碼校正以及端到端數(shù)據(jù)路徑保護,保證非易失性存儲設(shè)備中的數(shù)據(jù)完整性。AS689GEF對外接口為PCIE,支持NVMe協(xié)議,FT2000/4具備PCIE接口,可連接PCIE接口的NVMe電子盤。
本設(shè)計中,采用CPU的PEU0控制器與大容量存儲芯片連接,設(shè)計線寬為4x。AS689GEF主要技術(shù)指標如下:
◇容量為512GB;
◇支持PCIe 3.0 x2通道/ x4通道;
◇支持NVMe 1.3寄存器接口和指令;
◇具備有CRC奇偶校驗的端到端數(shù)據(jù)路徑保護;
◇具備系統(tǒng)保護功能,可防止電源不穩(wěn)定。
3.2.5 復(fù)位及監(jiān)控電路
顯示模塊具備上電復(fù)位和電源監(jiān)控功能。復(fù)位輸出為一路系統(tǒng)復(fù)位輸出,同時復(fù)位電路必須滿足輸出波形穩(wěn)定、沒有毛刺、波形寬度滿足電路中最大寬度的復(fù)位要求。
復(fù)位電路采用SM706實現(xiàn)上電復(fù)位和電源監(jiān)控復(fù)位。在工作中,如果SM706檢測到電源電壓5V低于4.75V時,系統(tǒng)處于復(fù)位狀態(tài),電源電壓大于4.75V后,產(chǎn)生大于200ms低有效復(fù)位信號,復(fù)位本模塊[4]。
模塊上電時,FPGA需要配置,在配置過程中應(yīng)保證其他功能塊仍處于復(fù)位狀態(tài),在設(shè)計時把FPGA加載是否完成的信號接到SM706的手動復(fù)位輸入端以保證FPGA加載完成,同時可通過手動復(fù)位對模塊進行復(fù)位。
顯示模塊設(shè)計中,軟件設(shè)計采用標準化、層次化和模塊化設(shè)計方法。按照軟件功能劃分,各部分功能相對獨立,采用模塊化設(shè)計,模塊之間通過標準API接口進行通信。軟件主要由操作系統(tǒng)軟件、定制驅(qū)動軟件和應(yīng)用軟件組成,其中應(yīng)用軟件由用戶開發(fā)。
顯示應(yīng)用軟件在運行過程中繪制大量符號及文字進行顯示,因此對于操作系統(tǒng)的圖形顯示軟件棧性能、電子盤文件訪問性能等均有較高需求。同時為滿足用戶提出的后續(xù)對于顯示應(yīng)用軟件的部署、升級、運行管理等進行容器支持的系列需求,選用國產(chǎn)Linux操作系統(tǒng)麒麟Linux作為顯示模塊的操作系統(tǒng)。
麒麟Linux操作系統(tǒng)本身面向桌面應(yīng)用環(huán)境,在機載環(huán)境使用時,需對麒麟Linux操作系統(tǒng)進行裁剪。
對麒麟Linux操作系統(tǒng)進行裁剪,移除其中面向桌面環(huán)境的應(yīng)用層軟件組件及部分服務(wù)層軟件組件,可減少系統(tǒng)部署時占用的存儲空間、系統(tǒng)運行時占用的內(nèi)存等資源消耗,同時提升系統(tǒng)的啟動時間。
麒麟Linux操作系統(tǒng)內(nèi)集成了常見通用外設(shè)驅(qū)動,如串口、以太網(wǎng)、SPI Flash、NVMe、JM7200等,已集成的驅(qū)動軟件不需進行設(shè)計實現(xiàn),可直接通過配置設(shè)備樹中的設(shè)備信息進行使用。
定制驅(qū)動軟件為顯示模塊中與CPU通過PCIE總線連接的FPGA實現(xiàn)的視頻切換管理功能對應(yīng)的驅(qū)動程序。FPGA內(nèi)部邏輯實現(xiàn)了視頻二選一及半透明疊加的配置選項,并提供了其配置的寄存器,以bar空間中指定地址的形式提供給CPU進行讀寫。因此定制驅(qū)動軟件實質(zhì)上是Linux下的PCIE的EP驅(qū)動。
Linux內(nèi)核提供了完善的PCI設(shè)備驅(qū)動框架,框架本身已經(jīng)提供了PCIE總線本身的操作,實現(xiàn)EP驅(qū)動時需按照框架實現(xiàn)對應(yīng)實際設(shè)備的PCI設(shè)備驅(qū)動程序內(nèi)核模塊。在內(nèi)核模塊中需定義由FPGA實現(xiàn)的EP設(shè)備的pci_device_id,包括VENDOR_ID和DEVICE_ID;實現(xiàn)對應(yīng)的probe函數(shù),并在其中申請bar空間的資源,實現(xiàn)對應(yīng)的mmap函數(shù)并在其中實現(xiàn)bar空間到虛擬內(nèi)存空間的映射。
內(nèi)核模塊完成代碼實現(xiàn),并編譯生成內(nèi)核模塊.ko文件后可通過insmod命令加載內(nèi)核模塊至內(nèi)核中,內(nèi)核模塊加載正確后,可使用lspci命令查看FPGA設(shè)備信息,確認其bar空間處于使能狀態(tài),且使用的驅(qū)動名稱為內(nèi)核模塊對應(yīng)的驅(qū)動名稱。Linux內(nèi)核提供了虛擬文件系統(tǒng)路徑/sys來使用內(nèi)核功能,用戶態(tài)的應(yīng)用程序可以通過訪問/sys路徑下的相關(guān)文件來實現(xiàn)設(shè)備驅(qū)動程序的調(diào)用。
顯示模塊應(yīng)用軟件基于Qt加OpenGL的基本架構(gòu)。其中Qt部分主要提供基礎(chǔ)框架及基礎(chǔ)控件。人機交互界面的組件布局通過Qt提供的控件實現(xiàn),如界面區(qū)域的劃分,菜單的切換等;Qt控件還用于實現(xiàn)屏幕中按鍵等通用組件。符號繪制通過Qt的OpenGL接口封裝實現(xiàn),在指定位置繪制出所需顯示的符號。
本文設(shè)計的顯示模塊方案,基于已在多種應(yīng)用場景中得到充分驗證的軟硬件基礎(chǔ)解決方案,實現(xiàn)國產(chǎn)化顯示平臺。在研制過程中,通過使用FT2000/4處理器的PC機快速構(gòu)建出應(yīng)用軟件驗證環(huán)境,實現(xiàn)了軟件研發(fā)及硬件研發(fā)的同步進行。
與顯示采用RTOS的常規(guī)方案不同,本方案中采用麒麟Linux作為操作系統(tǒng),利用麒麟Linux操作系統(tǒng)軟件生態(tài)中完善的圖形顯示軟件棧,簡化了用戶應(yīng)用軟件的開發(fā)復(fù)雜度,提升了應(yīng)用軟件開發(fā)效率,縮短了迭代周期。同時,使用麒麟Linux操作系統(tǒng)可將Linux生態(tài)下的容器能力引入機載領(lǐng)域。通過將顯示應(yīng)用容器化,可以利用如K8S等成熟的容器編排管理工具,控制并監(jiān)控顯示應(yīng)用的運行狀態(tài),也可通過容器鏡像的形式部署顯示應(yīng)用。容器在顯示場景中的應(yīng)用,對后續(xù)機載電子設(shè)備的新形態(tài)起到了一定的探索作用。