作者:奚玲,高博,于陸,宋國民
1 引言
隨著人們物質生活的極大豐富,旅行已經成為了日常生活中重要的一部分。在戶外旅行中最重要的信息莫過于位置信息,于是地理信息系統(GIS)、衛星定位系統(GPS)、導航系統逐漸開始走入人們的視線,GPS車輛導航系統,腕表式GIS系統等都為人們的出行提供了極大的方便。這些產品在外形上要滿足體積小、便于攜帶的要求;在性能上要滿足信息完備、實時性強、處理速度快的要求。綜合考慮以上因素,嵌入式應用成為這些產品的首選。嵌入式芯片體積小,耗電低,適合開發功能單一的便攜式產品,但是和臺式機的CPU相比,嵌入式處理器的速度要慢得多。在嵌入式芯片上開發GIS系統時,信息完備性要求使得系統的數據處理量非常大,因此處理器速度的限制將使系統的性能受到嚴重的影響。例如,在嵌入式GIS系統的應用中,地圖漫游速度是衡量系統性能優劣的一項重要指標,地圖漫游的速度在很大程度上受限于嵌入式CPU的處理速度,因此在嵌入式GIS設計中,如何提高地圖的瀏覽速度就成為一個重要課題。
提高地圖瀏覽速度應該從以下幾個方面著手:
(1)提高芯片的處理速度 這是從選型時就應該考慮的問題,一旦芯片選定,這種方法就失去了作用
(2)設計地圖數據結構時對數據的有效性和冗余性進行綜合考慮 這種方法是從減小地圖數據量從而減小處理器的工作負荷考慮的,但地圖信息完備性要求使這種改進對于地圖漫游速度的提高有限
(3)提高對芯片的利用率 本文即從這個方面考慮,采用雙緩存技術,利用芯片的空閑時間進行數據的預處理,達到提高芯片利用率的目的,從而加快地圖漫游速度
2 雙緩存技術實現地圖快速漫游的基礎
基于對圖像的開窗處理顯示矢量地圖是很多臺式機上的GIS系統采用的方法之一,這種算法的主要思想是:從數字地圖數據庫中提取出顯示范圍內的地圖要素,將描述這些地理要素的坐標轉換成屏幕坐標,用顯示窗口對這些數據進行剪裁,將剪裁后的地理要素直接繪制在屏幕窗口內。這種算法的優點是算法簡單,實現方便。同時,由于臺式機CPU處理速度能夠滿足實時剪裁圖像的要求,使得用該算法實現的GIS系統在臺式機上的實時性不受影響。但是對于嵌入式系統來說,速度限制是不容忽視的問題。如果仍然用同樣的方法實現地圖漫游,則會發現地圖的漫游成為難以忍受的過程,在屏幕上將地圖移動實際距離為兩公里的路程,需要的時間是在臺式機上實現同樣過程的十倍多。究其原因,可以發現速度的瓶頸在于兩點:1:嵌入式GIS產品從便攜式角度考慮,大多采用液晶顯示屏,液晶屏的顯示是由其自帶的緩存和顯示處理器存儲處理的,屏幕顯示數據通過異步方式和系統處理器間實現通信,導致液晶屏顯示緩存的讀寫慢,產生系統速度的瓶頸,這使得直接在顯示緩存上繪制地圖需要花費很長的時間;2:預處理數據量大,預處理包括對地理要素的讀取、坐標的轉換以及裁剪,因此預處理活動占用系統時間長。這兩點使得在單任務嵌入式操作系統中,地圖漫游的過程不僅很緩慢而且常常需要停頓下來等待數據的處理和顯示。因此,要實現嵌入式系統中地圖的平滑快速漫游,必須首先解決好這兩個問題。
讀寫顯示緩存的速度極大的影響了地圖的繪圖速度。在筆者開發的車載導航系統中,使用分辨率為640*480的液晶顯示屏,在這樣的屏幕上繪制一幅地圖數據經測試平均需要400毫秒;而系統RAM的讀寫速度是幾十Mbytes/s的速度,也就是說在系統RAM上繪制同樣大小的區域僅需要幾十毫秒甚至幾毫秒。因此,我們采用這樣的方法加快繪圖過程的速度:首先在系統內存中開辟專門用于繪制地圖圖像的空間,稱之為虛擬屏幕,虛擬屏幕的范圍應遠大于實際顯示屏的顯示范圍,同時,我們在顯示緩存中開辟和虛擬屏幕大小相同的空間用于緩存地圖圖像。這樣,我們首先用開窗法在虛擬屏幕上繪制地圖,繪制操作是對于系統RAM的讀寫,速度很快,然后從虛擬屏幕上將實際屏幕上應該顯示的地圖圖像拷貝到緩存空間,圖像拷貝要花費一定的時間,但是虛擬屏幕遠大于實際屏幕范圍,這樣的拷貝工作不需要每移動一步都進行一次,而是積累一段時間以后才進行一次拷貝。顯示屏幕上的圖像實際上是顯示緩存的一個窗口,也就是從顯示緩存的某個地址開始的一塊連續空間。因此,使用了顯示緩存后,地圖的移動過程就是在緩存空間上移動圖像的起始指針的過程(見圖1)。我們知道,指針移動是幾乎沒有時間消耗的,因此,這樣的方法使得當虛擬屏幕上的一幅地圖組織好并拷貝到顯示緩存空間之后,地圖的移動滿足快速、實時的要求。此時速度的問題就轉移到在虛擬屏幕上組織地圖和將虛擬屏幕的圖像拷貝到顯示緩存空間的過程中,也就是說,此時地圖的移動是快速但并不平滑的,因為虛擬屏幕的組織和圖像拷貝將引起地圖移動的停頓。雖然對于屏幕的顯示緩存來說,圖像拷貝的速度遠大于單點讀寫的速度,但是,我們仍然無法滿意它所造成的地圖移動的不連續的后果。因此,我們仍然需要進一步采取措施解決組織虛擬屏幕和圖像拷貝的時間消耗,這使得我們在緩存法的基礎上研究了一種新的顯示技術——雙緩存法——來實現地圖的快速漫游。
3 利用雙緩存技術實現地圖快速漫游
3.1 雙緩存技術實現地圖平滑漫游的基本原理
雙緩存技術實現地圖平滑漫游是在緩存法的基礎上提出的一種為解決嵌入式系統下,使用遙控器連續移動地圖,地圖漫游速度慢或不連續的問題的新方法。雙緩存的方法解決了緩存法實現地圖漫游中遺留下來的問題:移動過程中的停頓問題。它的實現基礎在于:即使是連續發送移動命令,在遙控器的兩個命令脈沖之間,仍然存在一定的時間間隔,根據地圖移動的方向趨勢,利用命令脈沖之間的時間間隔進行數據組織和圖像拷貝工作是雙緩存法的實現依據。圖2是遙控器連續移動命令脈沖的時序和單緩存實現地圖移動過程的對應。
圖1 移動命令時序
從上圖我們可以看出:
(1)兩次連續的移動命令之間的時間至少為190ms, 實際顯示圖像在虛擬屏幕的范圍之內時,圖像的移動是顯示緩存指針移動的過程,處理器在這段時間內空閑。
(2)實際顯示圖像達到虛擬屏幕的邊界時,如果連續接收到移動的命令,則只能在以新的顯示中心重新組織虛擬屏幕上的地圖并將虛擬屏幕上的圖像拷貝到顯示緩存之后,才能繼續移動顯示緩存的指針,在此過程中,起碼有三個移動命令沒有及時處理。
從以上兩點可以得出,在單緩存法實現地圖移動的過程中,處理器的并不總處于忙狀態,而是時忙時閑,因此如果將虛擬屏幕數據的組織和圖像的拷貝工作平均分配到各個移動命令脈沖之間的處理器空閑時段,就能解決達到移動邊界時,要長時間等待數據處理的問題。
3.2 雙緩存實現地圖平滑移動的方法及實現
利用雙緩存技術實現地圖平滑移動的內存空間分配圖如下:
圖2 雙緩存實現地圖平滑移動
如上圖所示,雙緩存實現地圖漫游的方法是:將顯示緩存劃分為兩個和虛擬屏幕顯示范圍相同的緩存空間,我們稱之為緩存A,和緩存B。定義預處理邊界為范圍小于虛擬屏幕范圍的一個內邊界。當顯示屏幕的圖像移動到預處理邊界時,如果仍然接受到同一方向的連續移動命令,則開始在虛擬屏幕組織移動方向上的新圖像,并拷貝該圖像到緩存B;同時,在緩存A上,屏幕指針移動的過程仍在進行,當顯示屏幕移動到緩存A的實際邊界時,緩存B上已經準備好了顯示方向上的新地圖,此時將屏幕指針跳到緩存B相應位置的地址,就可以保證地圖移動動作的連續性。
雙緩存法實現地圖平滑移動的過程流程圖描述如圖4所示。
圖3雙緩存法實現地圖移動過程示意圖
在采用雙緩存法實現地圖的平滑漫游的處理過程中,預處理邊界的選取是一個決定其效果的重要因素,預處理邊界如果和實際邊界離得太近,則預留的時間不足以完成所有的預處理任務,無法滿足平滑移動的要求,而如果預處理邊界范圍太小,則使得預測方向可信度降低,有可能使預處理過程無效。該邊界的選取和系統讀寫屏幕的速度以及遙控器的靈敏度都是相關的,選取方法同時和預測方向的算法也有一定的聯系,因此仁者見仁智者見智,可以根據各自系統設計的不同進行選擇。
4 實驗與結論
筆者在開發嵌入式環境下車載導航系統的軟件中使用了雙緩存法實現地圖漫游,在使用該方法之前,對開窗法、緩存法和雙緩存法實現的地圖移動的速度的進行了比較試驗,表1是試驗結果。該試驗是在同一幅地圖數據,同樣的數據量下,移動同樣的距離得出的:
表1幾種漫游方法顯示速度試驗
在我們的地圖漫游軟件采用了這種雙緩存法來實現地圖的平滑移動后,人們從視覺上幾乎感覺不到地圖移動的停頓,因此系統的整體性能得以提高。
雙緩存法是在嵌入式系統中實現地圖平滑顯示的一種實用方法,但用此法是以犧牲內存為代價提高地圖的漫游速度,因此采用這種算法的系統必須有足夠的內存(包括系統內存和顯示緩存),預處理邊界也需要根據系統要求科學選取。同時這個算法的實現代碼也比前兩種復雜,因此,大家可以根據自己系統的實際情況進行算法的選擇。
責任編輯:gt
-
處理器
+關注
關注
68文章
19339瀏覽量
230202 -
嵌入式
+關注
關注
5086文章
19143瀏覽量
306047 -
液晶顯示屏
+關注
關注
1文章
208瀏覽量
27569
發布評論請先 登錄
相關推薦
評論