閻旭田丹
(電子科技大學(xué) 成都 611731)
嵌入式系統(tǒng)廣泛用于船用雷達(dá)的顯示控制系統(tǒng),目前船用雷達(dá)的顯示控制系統(tǒng)主要為基于ARM的嵌入式處理系統(tǒng),通過(guò)人機(jī)交互界面對(duì)船用雷達(dá)的各個(gè)硬件模塊進(jìn)行控制,通過(guò)大尺寸的顯示屏顯示雷達(dá)圖像。
嵌入式系統(tǒng)應(yīng)用于船用雷達(dá)領(lǐng)域主要有如下的技術(shù)特點(diǎn):實(shí)時(shí)性好,能夠較好的滿(mǎn)足船用雷達(dá)系統(tǒng)在特定工作情況下的實(shí)時(shí)要求,完成雷達(dá)不同功能切換;專(zhuān)用性強(qiáng),嵌入式系統(tǒng)面向于船舶電子導(dǎo)航設(shè)備,因此硬件和軟件都是專(zhuān)門(mén)針對(duì)船用雷達(dá)系統(tǒng);可裁剪性好,嵌入式系統(tǒng)提供外部擴(kuò)展的硬件模塊和優(yōu)化的軟件系統(tǒng),便于維護(hù)和升級(jí);可靠性高,嵌入式系統(tǒng)能夠在惡劣的環(huán)境下對(duì)雷達(dá)軟硬件設(shè)備的穩(wěn)定控制。
目前有兩種船用雷達(dá)顯示架構(gòu),一種是基于ARM加DSP的雙核處理器架構(gòu),該系統(tǒng)主要將雷達(dá)的控制和圖像顯示放在ARM核的SOC中,通過(guò)SOC中自帶的LCD控制器實(shí)現(xiàn)圖像的顯示,由DSP實(shí)現(xiàn)雷達(dá)數(shù)據(jù)的處理,處理好的數(shù)據(jù)通過(guò)通訊接口傳入ARM進(jìn)行顯示,如圖1所示,該架構(gòu)的優(yōu)點(diǎn)是使用雙核架構(gòu)的處理器,將數(shù)據(jù)處理和數(shù)據(jù)顯示分離開(kāi)來(lái),充分發(fā)揮ARM和DSP的優(yōu)勢(shì),最大限度提高系統(tǒng)效率,不足在于由于目前ARM核運(yùn)行頻率不高,使得系統(tǒng)總線(xiàn)上顯示數(shù)據(jù)量不能太大,總線(xiàn)上的數(shù)據(jù)傳輸限制了LCD上數(shù)據(jù)顯示大小,只能滿(mǎn)足較小屏幕的顯示需求。但考慮到現(xiàn)代船舶電子顯示屏的需求,較大的屏幕能大大提高船用雷達(dá)的顯示可靠性,因此大屏幕數(shù)據(jù)顯示是船用雷達(dá)顯示系統(tǒng)發(fā)展的需要。

圖1雙核處理架構(gòu)
另一種是基于Intel處理器的工控機(jī)模塊,整合了船用雷達(dá)各個(gè)模塊,更像是一個(gè)高性能的PC機(jī),該系統(tǒng)的優(yōu)點(diǎn)是能夠迅速的處理雷達(dá)數(shù)據(jù)并顯示在大屏幕上,不足是由于工控機(jī)軟硬件結(jié)構(gòu)復(fù)雜,開(kāi)發(fā)難度大,設(shè)備成本高和體積大等。
本設(shè)計(jì)由兩部分組成:嵌入式ARM模塊部分負(fù)責(zé)顯示功能的驅(qū)動(dòng)層操作,底層硬件的顯示操作由FPGA完成,即將原來(lái)基于ARM的嵌入式處理器中的LCD控制器分離出,放在FPGA模塊部分進(jìn)行硬件層的顯示操作。建立ARM與FPGA之間的異步數(shù)據(jù)傳輸機(jī)制,并通過(guò)該機(jī)制將嵌入式ARM部分關(guān)于雷達(dá)顯示人機(jī)操作界面的數(shù)據(jù)圖像發(fā)送到FPGA進(jìn)行顯示,并創(chuàng)建雙核模塊間的控制寄存器,實(shí)現(xiàn)ARM顯示功能對(duì)FPGA硬件層的控制操作,使雷達(dá)圖像在屏幕上掃描顯示。FPGA就負(fù)責(zé)LCD控制器的底層數(shù)據(jù)調(diào)度顯示,由于FPGA特有的高速并行數(shù)據(jù)處理的技術(shù)特點(diǎn),使得能夠進(jìn)行大量的圖像數(shù)據(jù)顯示,因此能夠支持雷達(dá)掃描圖像的大屏幕顯示,并減少嵌入式ARM處理器的運(yùn)行負(fù)載,提高顯控系統(tǒng)的運(yùn)行效率,同時(shí),F(xiàn)PGA也可以取代DSP完成雷達(dá)數(shù)據(jù)的數(shù)字信號(hào)處理。方案實(shí)現(xiàn)原理如圖2所示。

圖2 大屏顯示方案
根據(jù)對(duì)圖像顯示機(jī)制的分析和討論,本文提出了一種支持大屏幕船用雷達(dá)數(shù)字成像的顯示系統(tǒng)解決方案,這一系統(tǒng)的整體數(shù)據(jù)傳輸機(jī)制原理如圖3所示。

圖3 數(shù)據(jù)傳輸機(jī)制
顯示圖像的數(shù)據(jù)通過(guò) LCD驅(qū)動(dòng)傳送到外部的顯存中,ARM系統(tǒng)中的圖像數(shù)據(jù)空間映射到外部顯存空間,由 FPGA硬件完成顯示數(shù)據(jù)的顯示刷新。實(shí)現(xiàn)顯示圖像的慢速數(shù)據(jù)交互,并進(jìn)行高速數(shù)據(jù)的顯示刷新,完成大屏幕雷達(dá)圖像的高速顯示。
整個(gè)船用雷達(dá)的軟件整體框圖如圖4所示。

圖4 軟件整體框架
數(shù)據(jù)流分為2路:顯示的雷達(dá)回波數(shù)據(jù)由人機(jī)交互界面開(kāi)始,經(jīng)過(guò)ARM顯示系統(tǒng)的幀緩沖設(shè)備,通過(guò)LCD驅(qū)動(dòng)層的數(shù)據(jù)傳輸,發(fā)送至底層硬件部分,進(jìn)行圖像的刷新顯示;上位機(jī)對(duì)雷達(dá)各功能模塊的控制指令由人際界面發(fā)出,經(jīng)過(guò)雷達(dá)控制中間件軟件進(jìn)行控制調(diào)度,然后由采集控制驅(qū)動(dòng)相應(yīng)底層雷達(dá)硬件操作,完成上位機(jī)對(duì)底層硬件的有效控制。
根據(jù)整個(gè)雷達(dá)數(shù)據(jù)流的方向,設(shè)計(jì)整個(gè)軟件架構(gòu),確定驅(qū)動(dòng)層分為L(zhǎng)CD模塊和中間件模塊。建立上位機(jī)和底層之間的高速、可靠的顯示與控制通信機(jī)制,完成大屏顯示。
船用雷達(dá)LCD驅(qū)動(dòng)模塊主要負(fù)責(zé)上層嵌入式操作系統(tǒng)的統(tǒng)一應(yīng)用層顯示機(jī)制與底層FPGA顯示硬件的數(shù)據(jù)通信連接,使得嵌入式船用雷達(dá)顯示系統(tǒng)的上層應(yīng)用程序的圖像通過(guò)驅(qū)動(dòng)層在底層硬件完成圖像顯示。整個(gè)模塊包括雷達(dá)圖像數(shù)據(jù)的高速傳輸、對(duì)LCD控制器功能寄存器的設(shè)定,以及對(duì)上層圖像應(yīng)用程序的接口設(shè)計(jì)。
LCD模塊包括幀緩沖驅(qū)動(dòng)的設(shè)計(jì)和LCD-FPGA驅(qū)動(dòng)的設(shè)計(jì)。
幀緩沖作為linux系統(tǒng)為顯示設(shè)備提供的一個(gè)軟件接口,它的作用就是將傳統(tǒng)的顯示緩沖區(qū)抽象,屏蔽圖像底層硬件差異,允許上層應(yīng)用程序在一定的圖形模式下直接對(duì)顯示緩沖區(qū)進(jìn)行讀寫(xiě)操作,幀緩沖設(shè)備屬于標(biāo)準(zhǔn)的字符型設(shè)備驅(qū)動(dòng)。設(shè)備驅(qū)動(dòng)結(jié)構(gòu)如圖5所示。

圖5 幀緩沖驅(qū)動(dòng)程序架構(gòu)
LCD-FPGA驅(qū)動(dòng)設(shè)計(jì):在本設(shè)計(jì)中,顯示部分的LCD控制器的設(shè)計(jì)集成在FPGA內(nèi)部,通過(guò)ARM系統(tǒng)的系統(tǒng)總線(xiàn)實(shí)現(xiàn)與FPGA關(guān)于顯存部分的數(shù)據(jù)通信,由FPGA外部的DDR分配一塊顯示緩沖區(qū),將這片顯存空間地址映射到ARM的片選空間,同時(shí)幀緩沖設(shè)備就可以對(duì)外部這片顯存空間進(jìn)行讀寫(xiě)數(shù)據(jù)訪(fǎng)問(wèn),實(shí)現(xiàn)上層應(yīng)用空間對(duì)顯示屏幕的用戶(hù)直接操作,其原理見(jiàn)圖6。

圖6 LCD-FPGA顯存分配
LCD-FPGA驅(qū)動(dòng)的基本流程:
a.驅(qū)動(dòng)加載采用平臺(tái)驅(qū)動(dòng)設(shè)備加載。
b.把FPGA的數(shù)據(jù)傳輸?shù)牡刂纷鰉map映射,使用共享內(nèi)存的方式,直接將FPGA顯存的空間映射到用戶(hù)空間,用戶(hù)空間可以直接訪(fǎng)問(wèn)FPGA的顯存空間,實(shí)現(xiàn)fb的內(nèi)存映射功能。
c.驅(qū)動(dòng)將從平臺(tái)設(shè)備獲取的LCD設(shè)備信息進(jìn)行上層fb的參數(shù)設(shè)置,使得應(yīng)用層能夠使用。
d.注冊(cè)framebuffer幀緩沖設(shè)備,該過(guò)程將前面設(shè)置的硬件接口參數(shù),統(tǒng)一創(chuàng)建到對(duì)應(yīng)的幀緩沖設(shè)備中,并自動(dòng)創(chuàng)建fb設(shè)備節(jié)點(diǎn)。
e.驅(qū)動(dòng)卸載包括注銷(xiāo)平臺(tái)設(shè)備、注銷(xiāo)framebuffer幀緩沖設(shè)備,停止LCD顯示,以及對(duì)FPGA顯存的取消映射。
將LCD-FPGA的驅(qū)動(dòng)加載成功以后,操作/dev/fb0的幀緩沖設(shè)備文件,簡(jiǎn)單測(cè)試幀緩沖設(shè)備的用戶(hù)空間的訪(fǎng)問(wèn)。測(cè)試的形式主要是寫(xiě)圖片,由于底層硬件設(shè)置的分辨率為1024×768,像素位數(shù)是16位,所以文件的大小應(yīng)與實(shí)際的硬件顯存訪(fǎng)問(wèn)的空間大小相同,幀緩沖設(shè)備才能進(jìn)行正確的數(shù)據(jù)讀寫(xiě),在顯示屏幕上完整顯示圖片。具體的操作流程如圖7所示。

圖7 操作流程
a.打開(kāi)幀緩沖設(shè)備文件,即打開(kāi)/dev/fb0的設(shè)備文件;
b.通過(guò)ioctl()操作獲得底層驅(qū)動(dòng)的固定屏幕參數(shù)和可變屏幕參數(shù),比如屏幕分辯率(1024×768),像素位數(shù)(16bit),計(jì)算硬件支持的最大屏幕緩沖區(qū)的大小。
c.將從底層獲取的與硬件匹配的屏幕緩沖區(qū)的實(shí)際物理空間映射到用戶(hù)空間,使應(yīng)用層可以對(duì)這片空間直接進(jìn)行數(shù)據(jù)讀寫(xiě)。
d.在底層屏幕的物理空間映射成的用戶(hù)空間可以直接進(jìn)行圖片數(shù)據(jù)的寫(xiě)入,將1024×768分辨率、16位像素的圖片寫(xiě)入顯示緩沖區(qū),完成幀緩沖 設(shè)備的應(yīng)用空間測(cè)試。測(cè)試結(jié)果如圖8所示。

圖8 雷達(dá)界面
本設(shè)計(jì)以嵌入式架構(gòu)為前提,通過(guò)優(yōu)化ARM和FPGA的通信方式,使得性能較低的ARM芯片也能驅(qū)動(dòng)大屏幕的顯示,有效降低了船用雷達(dá)系統(tǒng)成本,通過(guò)低成本的嵌入式系統(tǒng)設(shè)計(jì)方案取代了高昂的工控機(jī)方案,本設(shè)計(jì)具有通用性,不僅僅局限于船用雷達(dá),可適用于普遍大屏驅(qū)動(dòng)的場(chǎng)合。
[1]杜春雷.ARM體系結(jié)構(gòu)與編程[M].北京:清華大學(xué)出版社,2003,2.
[2]張潤(rùn)澤,船舶導(dǎo)航雷達(dá),第一冊(cè),第二冊(cè).人民交通出版社,1987,6.
[3]雷琴,耿晨歌,陳耀武,汪樂(lè)宇.基于嵌入式的船載雷達(dá)系統(tǒng)軟件設(shè)計(jì).船舶,2003,(3).
[4]宋寶華,Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)詳解,人民郵電出版社,2008,2.
[5]Samsung Electronics.32-bit CMOS Microcontroller User's Manual.Revision 1.
[6]B.Cantrell,J.Degraaf,F(xiàn).Willwerth.Development of a digital array radar(DAR)[J].IEEE Aerospace and electronics systems magazine,2002,17(3):22 -27.