專利名稱:一種實現分屏顯示的系統和方法
一種實現分屏顯示的系統和方法
技術領域:
本發明涉及計算機技術領域,特別涉及一種實現分屏顯示的系統和方法。背景技術:
長期以來,嵌入式設備因為其顯示屏分辨率較低、屏幕尺寸小,作為一個顯示設備被系統獨占,只能作為一個屏幕顯示。隨著嵌入式技術的發展,嵌入式設備的顯示屏分辨率越來越高,屏幕尺寸越來越大,在屏幕上實現分屏顯示的需求越來越多,希望能將一個顯示屏分成多個顯示區域,一部分顯示區域給操作系統使用,一部分顯示區域用于顯示廣告、虛擬鍵盤或者提示信息等內容。現有實現分屏顯示的方法主要包括以下兩種其一、從硬件上將顯示屏分成多個屏,然后通過軟件分別控制這些屏來實現分屏顯示的功能。這種方法需要對顯示屏進行定制,缺乏通用性且成本較高。其二、從應用層將顯示屏分成幾個顯示區域,分別顯示不同內容。但由于是從應用層對顯示屏進行的區分,因此多個屏幕僅能夠顯示同一當前應用的不同內容,無法保證各顯示區域的獨立性。
發明內容有鑒于此,本發明提供了一種實現分屏顯示的方法和系統,在同一個顯示屏上實現分屏顯示,無需對顯示屏進行定制,且保證各顯示區域的獨立性。具體技術方案如下一種實現分屏顯示的系統,顯示屏從邏輯上被分為N個顯示區域,所述系統包括 顯示控制器、顯存和N個顯示驅動,其中所述顯存包含N個顯存區域,每一個顯示驅動分別對應一個顯存區域,每一個顯存區域分別對應一個顯示區域,所述N為2以上的整數;所述顯示驅動,用于被上層應用程序APP調用時,獲取所述APP的數據并寫入或更新至對應的顯存區域;所述顯存區域,用于緩存要顯示在對應顯示區域的數據;所述顯示控制器,用于讀取各顯存區域的數據并傳輸至各顯存區域對應的顯示區域。具體地,所述顯存區域的大小由對應顯示區域的分辨率和色深確定。優選地,所述顯存區域中的各存儲單元分別和對應顯示區域中的像素點一一對應,所述顯存區域的大小為對應顯示區域的分辨率乘以色深所對應的字節數。其中,所述N個顯示驅動分別提供不同的接口供上層APP調用,或者提供統一的接口供上層APP調用。所述N個顯示驅動供同一個APP調用;或者所述N個顯示驅動分別供不同的APP調用;或者,一個顯示驅動供多個APP調用。
更進一步地,在顯示驅動與其供上層APP調用的接口之間還包括排版單元,用于在該顯示驅動供多個APP調用時,對來自所述多個APP的數據進行圖像融合,所述圖像融合包括圖像合成、圖層配置和透明度配置中的至少一種。一種實現分屏顯示的方法,顯示屏從邏輯上被分為N個顯示區域,顯存包含N個顯存區域,N個顯示驅動分別對應不同的顯存區域,每一個顯存區域分別對應一個顯示區域, 所述N為2以上的整數;所述方法包括所述顯示驅動被上層應用程序APP調用時,獲取所述APP的數據并寫入或更新至對應的顯存區域;所述顯存區域緩存要顯示在對應顯示區域的數據;所述顯示控制器讀取各顯存區域的數據并傳輸至各顯存區域對應的顯示區域。具體地,所述顯存區域的大小由對應顯示區域的分辨率和色深確定。優選地,所述顯存區域中的各存儲單元分別和對應顯示區域中的像素點一一對應,所述顯存區域的大小為對應顯示區域的分辨率乘以色深所對應的字節數。其中,所述顯示驅動被上層APP調用包括所述N個顯示驅動通過不同的接口被上層APP調用,或者通過統一的接口被上層 APP調用。具體地,所述顯示驅動被上層APP調用包括所述N個顯示驅動被同一個APP調用;或者所述N個顯示驅動分別被不同的APP調用;或者,
一個顯示驅動被多個APP調用。更進一步地,在一個顯示驅動被多個APP調用時,該方法還包括排版單元對來自所述多個APP的數據進行圖像融合,將圖像融合后的數據發送給所述一個顯示驅動,所述圖像融合包括圖像合成、圖層配置和透明度配置中的至少一種。由以上技術方案可以看出,本發明通過上述系統和方法在底層通過多個顯示驅動操作多個顯存區域實現在一個物理屏上進行分屏顯示,無需對顯示屏進行定制,適用于任何顯示屏,具有較高的通用性且降低了實現成本;這種在底層實現分屏顯示的方式可以供不同APP同時調用不同的顯示驅動從而在顯示屏的不同顯示區域顯示不同APP的內容,從而保證了各顯示區域的獨立性。
圖1為本發明實施例提供的一種實現分屏顯示的系統結構圖;圖2為本發明實施例提供的另一種實現分屏顯示的系統結構圖;圖3為本發明實施例提供的安卓平臺下的軟件架構圖;圖4為本發明實施例提供的實現分屏顯示的方法流程圖。
具體實施方式為了使本發明的目的、技術方案和優點更加清楚,下面結合附圖和具體實施例對本發明進行詳細描述。本發明將一個顯示屏從邏輯上分為N個顯示區域,并將顯存對應分為N個顯存區域,每個顯存區域分別對應一個顯示區域,緩存要顯示在對應顯示區域的數據。同時,存在N 個顯示驅動,每個顯示驅動分別對應一個顯存區域,各顯示驅動向上層提供操作接口,供上層APP進行調用,即顯示驅動被APP調用時,獲取該APP的數據并寫入或更新至對應的顯存區域。上述N為2以上的整數。本發明實施例中所述的顯示屏為一塊物理屏,可以采用但不限于LED顯示屏、 LCD顯示屏等。在預先對顯示屏劃分為多個顯示區域時,可以采用任意方式,一種優選的實施方式為沿顯示屏的縱向長度進行劃分,各顯示區域的寬度為顯示屏的寬度。為了方便描述和理解,本發明實施例中均以兩個顯示區域,對應兩個顯存區域和兩個顯示驅動為例進行描述。如圖1所示,在顯存中存在兩個顯存區域,即顯存區域1和顯存區域2,分別對應一塊顯示屏上的顯示區域1和顯示區域2。顯示區域1和顯示區域2是沿顯示屏的縱向長度進行劃分的,寬度與顯示屏的寬度相同,其中顯示區域1大于顯示區域2的面積。當然, 圖1中所示的顯示區域1和顯示區域2僅為本發明實施例所提供的一種實例,還可以選擇其他劃分方式,在此不再窮舉。顯存區域1和顯存區域2在物理上分別是連續的內存段,首地址分別是basel和 kiSe2,顯存區域1和顯存區域2的大小分別由其對應的顯示區域的分辨率和色深決定。如果顯存區域中的各存儲單元分別和對應顯示區域中的像素點一一對應,那么顯存區域的大小為分辨率乘以色深所對應的字節數。假設一塊物理屏幕的分辨率是640*360,色深為8bit (占用一個字節),如果將該屏幕分為分辨率為600*360和40*360兩個顯示區域,那么顯存中兩個顯存區域的地址可以分別為:base 到 base+600*360_l,以及 base+600*360 到 base+640*360。假設一塊物理屏幕的分辨率是854*480,色深為16bit (占用兩個字節),如果將該屏幕分為分別率為800*480和M*480兩個顯示區域,那么顯存中兩個顯存區域的地址可以分別為base 到 base+800*480*2_l,以及 base+800*480*2 到 base+854*480*2。在CPU中存在兩個顯示驅動顯示驅動1和顯示驅動2,分別用于操作顯存區域1 和顯存區域2,并向上層應用提供接口,供上層APP進行調用。顯示驅動1接收調用顯示驅動1的上層APP的數據,并將接收到的數據寫入或更新至顯存區域1,由顯示控制器使用直接內存讀取(DMA)讀取顯存區域1中的數據并通過諸如紅綠藍(RGB)接口或移動產業處理器接口(MIPI)等圖像數據接口傳輸到顯示區域1。 同樣,顯示驅動2接收調用顯示驅動2的上層APP的數據,并將接收到的數據寫入或更新至顯存區域2,由顯示控制器使用DMA讀取顯存區域2中的數據并通過諸如RGB接口或MIPI 接口等圖像數據接口傳輸到顯示區域2。其中,顯示驅動1和顯示驅動2可以采用統一的接口供上層APP進行調用,也可以采用不同的接口供上層APP調用。該供上層APP調用的接口可以為圖形設備接口(⑶I)。不同顯示驅動被APP調用的方式可以采用以下幾種第一種顯示驅動1和顯示驅動2可以供同一個APP進行調用,例如可以同時供輸入法進行調用,顯示驅動1用于將輸入法的輸入結果界面數據寫入或更新至顯存區域1,并進一步顯示于顯示區域1 ;顯示驅動2用于將輸入法的輸入界面數據(例如虛擬鍵盤)寫入或更新至顯存區域2,并進一步顯示于顯示區域2。
第二種顯示驅動1和顯示驅動2也可以分別供不同的APP進行調用,如圖1中所示,顯示驅動1可以供APPl進行調用,顯示驅動2可以供APP2進行調用。例如顯示驅動1 可以供瀏覽器進行調用,將瀏覽器的界面數據寫入或更新至顯存區域1,并進一步顯示于顯示區域1 ;顯示驅動2可以供廣告推送器進行調用,將廣告數據寫入或更新至顯存區域2,并進一步顯示于顯示區域2。第三種一個顯示驅動可以同時供多個APP進行調用,如圖2所示,顯示驅動1可以供APPl和APP2進行調用,顯示驅動2可以供APP3進行調用。此時,在顯示驅動與其供上層APP調用的接口之間還會存在一個排版單元(Composer),用于對來自多個APP的數據進行圖像融合,包括但不限于圖像合成、圖層配置、透明度配置等。在進行圖像融合時,采用的策略可以為根據多個APP被用戶調用的先后順序為各APP的數據進行圖層配置、透明度配置等。例如將用戶最新調用的APP的數據配置為最上端的圖層,透明度最低,即越新調用的APP的數據配置的圖層越上端,透明度越低。上述第二種和第三種所示的調用方式可以廣泛的應用于廣告推送領域,例如可以將面積較大的顯示區域1對應顯存區域1和顯示驅動1,操作系統的各應用調用該顯示驅動1,將面積較小的顯示區域2對應顯存區域2和顯示驅動2,推送廣告的APP調用該顯示驅動2。最終,實現在較大的顯示區域1中顯示操作系統的各應用,在較小的顯示區域2實現廣告信息的推送。這樣,廣告內容不會被其他應用程序所覆蓋或遮擋,可以一直顯示在顯示區域2從而達到廣告營銷的目的,并且,廣告內容不會對手機的其他應用造成影響,用戶可以正常的在顯示區域1使用手機的各項功能。下面以安卓(android)平臺為例,說明上述技術實現的軟件架構圖,如圖3所示, 在Linux kernel中存在兩個顯存區域fbO和fbl,硬件抽象層可以由halO和hal 1分別用于操作底層的fbO和fbl,硬件抽象層實際就是驅動程序,定義了系統對各硬件的需求。halO 和hall通過顯示硬件(Displayhardware)向上層surfaceflinger提供統一的操作接口, surfaceflinger對各APP的數據進行圖像融合。在java層實現⑶I接口,供上層APP調用。Viewl,View2, · · ·,Viewn為在android系統上運行的各種APP。基于上述實現分屏顯示的系統,實現分屏顯示的方法流程可以如圖4所示,包括以下步驟步驟401 顯示驅動被上層APP調用時,獲取來自APP的數據并寫入或更新至對應的顯存區域。同上述系統中所描述,顯示驅動在被上層APP調用時,N個顯示驅動可以通過不同的接口被上層APP調用,也可以通過統一的接口被上層APP調用。在具體調用顯示驅動時,N個顯示驅動被APP調用的方式可以采用以下幾種第一種多個顯示驅動可以供同一個APP進行調用,例如可以同時供輸入法進行調用,顯示驅動1用于將輸入法的輸入結果界面數據寫入或更新至顯存區域1,并進一步顯示于顯示區域1 ;顯示驅動2用于將輸入法的輸入界面數據(例如虛擬鍵盤)寫入或更新至顯存區域2,并進一步顯示于顯示區域2。第二種多個顯示驅動可以分別供不同的APP進行調用,如圖1中所示,顯示驅動 1可以供APPl進行調用,顯示驅動2可以供APP2進行調用。例如顯示驅動1可以供瀏覽器進行調用,將瀏覽器的界面數據寫入或更新至顯存區域1,并進一步顯示于顯示區域1 ;顯示驅動2可以供廣告推送器進行調用,將廣告數據寫入或更新至顯存區域2,并進一步顯示于顯示區域2。第三種一個顯示驅動可以同時供多個APP進行調用,如圖2所示,顯示驅動1可以供APPl和APP2進行調用,顯示驅動2可以供APP3進行調用。在一個顯示驅動被多個APP調用時,該顯示單元與該顯示單元被APP調用的接口之間還包括一個排版單元,在本步驟之前還包括排版單元對來自多個APP的數據進行圖像融合,將圖像融合之后的數據發送給該顯示驅動的步驟,其中圖像融合可以包括圖像合成、圖層配置和透明度配置中的至少一種。步驟402 顯存區域緩存要顯示在對應顯示區域的數據。每個顯存區域在物理上分別是連續的內存段,其大小分別由其對應的顯示區域的分辨率和色深決定。一種優選的實施方式顯存區域中的各存儲單元分別和對應顯示區域中的像素點一一對應,此時,顯存區域的大小為分辨率乘以色深所對應的字節數。步驟403 顯示控制器讀取各顯存區域的數據并傳輸至各顯存區域對應的顯示區域。顯示控制器使用DMA從顯存的各顯存區域中讀取數據,并通過諸如RGB或MIPI等圖像數據接口將各顯存區域中讀取的數據傳輸至對應的顯示區域。以上所述僅為本發明的較佳實施例而已,并不用以限制本發明,凡在本發明的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本發明保護的范圍之內。
權利要求
1.一種實現分屏顯示的系統,其特征在于,顯示屏從邏輯上被分為N個顯示區域,所述系統包括顯示控制器、顯存和N個顯示驅動,其中所述顯存包含N個顯存區域,每一個顯示驅動分別對應一個顯存區域,每一個顯存區域分別對應一個顯示區域,所述N為2以上的整數;所述顯示驅動,用于被上層應用程序APP調用時,獲取所述APP的數據并寫入或更新至對應的顯存區域;所述顯存區域,用于緩存要顯示在對應顯示區域的數據;所述顯示控制器,用于讀取各顯存區域的數據并傳輸至各顯存區域對應的顯示區域。
2.根據權利要求1所述的系統,其特征在于,所述顯存區域的大小由對應顯示區域的分辨率和色深確定。
3.根據權利要求2所述的系統,其特征在于,所述顯存區域中的各存儲單元分別和對應顯示區域中的像素點一一對應,所述顯存區域的大小為對應顯示區域的分辨率乘以色深所對應的字節數。
4.根據權利要求1、2或3所述的系統,其特征在于,所述N個顯示驅動分別提供不同的接口供上層APP調用,或者提供統一的接口供上層APP調用。
5.根據權利要求1、2或3所述的系統,其特征在于,所述N個顯示驅動供同一個APP調用;或者所述N個顯示驅動分別供不同的APP調用;或者, 一個顯示驅動供多個APP調用。
6.根據權利要求5所述的系統,其特征在于,在顯示驅動與其供上層APP調用的接口之間還包括排版單元,用于在該顯示驅動供多個APP調用時,對來自所述多個APP的數據進行圖像融合,所述圖像融合包括圖像合成、圖層配置和透明度配置中的至少一種。
7.一種實現分屏顯示的方法,其特征在于,顯示屏從邏輯上被分為N個顯示區域,顯存包含N個顯存區域,N個顯示驅動分別對應不同的顯存區域,每一個顯存區域分別對應一個顯示區域,所述N為2以上的整數;所述方法包括所述顯示驅動被上層應用程序APP調用時,獲取所述APP的數據并寫入或更新至對應的顯存區域;所述顯存區域緩存要顯示在對應顯示區域的數據;所述顯示控制器讀取各顯存區域的數據并傳輸至各顯存區域對應的顯示區域。
8.根據權利要求7所述的方法,其特征在于,所述顯存區域的大小由對應顯示區域的分辨率和色深確定。
9.根據權利要求8所述的方法,其特征在于,所述顯存區域中的各存儲單元分別和對應顯示區域中的像素點一一對應,所述顯存區域的大小為對應顯示區域的分辨率乘以色深所對應的字節數。
10.根據權利要求7、8或9所述的方法,其特征在于,所述顯示驅動被上層APP調用包括所述N個顯示驅動通過不同的接口被上層APP調用,或者通過統一的接口被上層APP調用。
11.根據權利要求7、8或9所述的方法,其特征在于,所述顯示驅動被上層APP調用包括所述N個顯示驅動被同一個APP調用;或者所述N個顯示驅動分別被不同的APP調用;或者, 一個顯示驅動被多個APP調用。
12.根據權利要求11所述的方法,其特征在于,在一個顯示驅動被多個APP調用時,該方法還包括排版單元對來自所述多個APP的數據進行圖像融合,將圖像融合后的數據發送給所述一個顯示驅動,所述圖像融合包括圖像合成、圖層配置和透明度配置中的至少一種。
全文摘要
本發明提供了一種實現分屏顯示的系統和方法,顯示屏從邏輯上被分為N個顯示區域,所述系統包括顯示控制器、顯存和N個顯示驅動,其中所述顯存包含N個顯存區域,每一個顯示驅動分別對應一個顯存區域,每一個顯存區域分別對應一個顯示區域,所述N為2以上的整數;所述顯示驅動被上層應用程序(APP)調用時,獲取所述APP的數據并寫入或更新至對應的顯存區域;所述顯存區域緩存要顯示在對應顯示區域的數據;所述顯示控制器讀取各顯存區域的數據并傳輸至各顯存區域對應的顯示區域。本發明在同一個顯示屏上實現分屏顯示,無需對顯示屏進行定制,且保證了各顯示區域的獨立性。
文檔編號G06F3/14GK102279723SQ20111024390
公開日2011年12月14日 申請日期2011年8月24日 優先權日2011年8月24日
發明者李新征, 謝美倫 申請人:百度在線網絡技術(北京)有限公司