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

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

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

圖3 數據傳輸機制
顯示圖像的數據通過 LCD驅動傳送到外部的顯存中,ARM系統中的圖像數據空間映射到外部顯存空間,由 FPGA硬件完成顯示數據的顯示刷新。實現顯示圖像的慢速數據交互,并進行高速數據的顯示刷新,完成大屏幕雷達圖像的高速顯示。
整個船用雷達的軟件整體框圖如圖4所示。

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

圖5 幀緩沖驅動程序架構
LCD-FPGA驅動設計:在本設計中,顯示部分的LCD控制器的設計集成在FPGA內部,通過ARM系統的系統總線實現與FPGA關于顯存部分的數據通信,由FPGA外部的DDR分配一塊顯示緩沖區,將這片顯存空間地址映射到ARM的片選空間,同時幀緩沖設備就可以對外部這片顯存空間進行讀寫數據訪問,實現上層應用空間對顯示屏幕的用戶直接操作,其原理見圖6。

圖6 LCD-FPGA顯存分配
LCD-FPGA驅動的基本流程:
a.驅動加載采用平臺驅動設備加載。
b.把FPGA的數據傳輸的地址做mmap映射,使用共享內存的方式,直接將FPGA顯存的空間映射到用戶空間,用戶空間可以直接訪問FPGA的顯存空間,實現fb的內存映射功能。
c.驅動將從平臺設備獲取的LCD設備信息進行上層fb的參數設置,使得應用層能夠使用。
d.注冊framebuffer幀緩沖設備,該過程將前面設置的硬件接口參數,統一創建到對應的幀緩沖設備中,并自動創建fb設備節點。
e.驅動卸載包括注銷平臺設備、注銷framebuffer幀緩沖設備,停止LCD顯示,以及對FPGA顯存的取消映射。
將LCD-FPGA的驅動加載成功以后,操作/dev/fb0的幀緩沖設備文件,簡單測試幀緩沖設備的用戶空間的訪問。測試的形式主要是寫圖片,由于底層硬件設置的分辨率為1024×768,像素位數是16位,所以文件的大小應與實際的硬件顯存訪問的空間大小相同,幀緩沖設備才能進行正確的數據讀寫,在顯示屏幕上完整顯示圖片。具體的操作流程如圖7所示。

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

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