- 嵌入式GUI開發設計
- 韓超編著
- 2239字
- 2018-12-27 15:14:28
1.1 嵌入式GUI系統
GUI系統的含義為圖形用戶接口(Graphic User Interface)系統,它是計算機系統和用戶的接口。在嵌入式領域,隨著用戶需求的增加和技術的發展。GUI系統已經有了越來越廣泛的應用。
1.1.1 嵌入式GUI系統的作用
在20世紀90年代,作為人機交互的接口,GUI系統在桌面計算機系統中就已經有了很廣泛的應用,其中具有代表性的是:微軟的Windows系列(包括Windows95、Windows98、WindowsMe等)和WindowsNT系列(包括Windows NT 4.0、Windows 2000、Windows XP等)系統,桌面Linux的Gnome系統和KDE系統。相比傳統的命令行接口(Command Line Interface)方式。GUI系統為用戶提供了更友好的界面,將用戶從枯燥界面中解脫出來。同時,GUI系統也讓計算機系統的使用更加簡單。
在嵌入式系統發展的初級階段,GUI系統的應用相對較少。例如,在相對簡單的、以單片機為核心的簡單工控系統中,人機交互通常以LED(發光二極管)和按鍵相結合的方式,隨后才有了簡單的屏幕。這些只是簡單的輸入、輸出系統,不能被稱為“GUI系統”。
GUI系統在早期的嵌入式系統中應用較少的主要原因有兩個:一個方面,功能角度考慮,很多傳統的嵌入式系統邏輯相對簡單,人需要從系統獲取的信息較少,人對系統的操作也較少;另一個方面,從技術角度,嵌入式處理器的計算能力較低、嵌入式系統內存較少等現實和缺少適用于嵌入式系統的GUI系統,使得嵌入式系統中實現圖形化的人機交互界面有一定的技術難度。
隨著嵌入式系統的發展和普及,GUI在嵌入式系統中的作用越來越突出。當智能手機、PDA等系統出現后,嵌入式系統已經不是僅僅給個別專業操作人員所使用的,而需要適用于很廣泛的群眾。雖然在傳統的嵌入式控制領域,人機交互的內容并不是很復雜,但是使用者同樣需要更友好的界面。因此,GUI在嵌入式系統中的普及是大勢所趨。
GUI系統需要最終向用戶提供輸出和輸入兩個方面。在輸出方面,GUI系統向用戶提供一個圖形化的界面,在輸入方面,GUI系統需要接受用戶的操作,從而達到通過界面控制系統的目的。
1.1.2 嵌入式GUI系統的層級結構
嵌入式系統的設計一般秉承精簡、高效的原則,其軟件的層次結構相對簡單。自下而上,一般可以分為硬件層、操作系統層、中間件、應用層等幾個層次,如圖1-1所示。

圖1-1 嵌入式系統的軟件架構
嵌入式系統的硬件分為處理器(通常包含CPU和片內設備)、內存、板級硬件幾個部分。CPU涉及了特定體系結構的運算和控制單元,例如ARM、MIPS等,在整個系統的軟件開發中,一般都要基于該體系結構的編譯工作。片內設備是處理器內部的硬件模塊,比較重要的包括內存管理器、中斷控制器、定時器、GPIO等。嵌入式系統的內存的RAM主要通過SRAM和SDRAM實現,可固化的存儲器主要應用Nor Flash和Nand Flash。板級的硬件包含了嵌入式系統中需要,但是處理器片內沒有集成的部分,通常包括片內部件的外圍硬件、總線擴展、GPIO擴展幾種形式。
嵌入式的操作系統建立在硬件之上。操作系統通常具有進程(任務)調度、進程間通信、內存管理等方面。嵌入式系統的操作系統一般都具有一定的可移植性,可以建立在不同的硬件平臺上。操作系統的移植層通常包括對某種體系結構CPU的支持,需要涉及定時器、中斷控制器、系統內存等硬件。驅動程序是操作系統和硬件的接口,大量的硬件需要通過操作系統框架內的驅動程序,向上層提供控制硬件的接口。
提示:關于操作系統和上層軟件的關系,某些操作系統被稱為內核空間(Kernel Space),而操作系統以上的部分被稱為用戶空間(User Space)。按照功能,操作系統以上的部分可以分為中間件和上層應用兩個部分。
中間件一般提供了一些相對底層的軟件層次的功能。它的實現一般不包括應用程序的邏輯,而是向上層軟件提供了各種方便的應用程序接口(API)。中間件需要通過對操作系統的調用來建立,常常需要控制硬件。在嵌入式系統中,常用的中間件包含文件系統(File System)、網絡協議(Net protocol)、圖形用戶系統(GUI)等幾種,它們一般都需要控制特定的硬件來實現。此外,數據庫(Database)等不需要控制硬件的下層軟件,通常也作為中間件的形式出現。
應用層包含了應用程序的邏輯,它通過調用中間件和操作系統來實現。應用層的軟件程序也可以由上下若干層和不同的模塊組成。
注意:圖1-1是一個嵌入式系統軟件相對通用的結構圖,并沒有依賴特定的硬件平臺和操作系統。
uC/OS是一種簡單的操作系統,操作系統內核的功能比較簡單,只有任務調度、任務通信和簡單的內存管理功能,其內核空間和用戶空間的界限也不是很明顯。文件系統、網絡協議、圖形系統均通過的中間件的形式實現。
在Linux操作系統中,文件系統和網絡協議集成在操作系統內核中。Linux的文件系統包含了上層通用的虛擬文件系統(Virtual File System)和下層的操作系統實現(如ROMFS、JIFFS),建立在下層的RAM等Flash硬件上。Linux的網絡模塊也是操作系統組成部分,提供了對TCP/IP棧的支持,網絡模塊建立的硬件基礎是網絡設備的驅動程序。然而,Linux操作系統沒有包括對GUI的支持,因此Linux的GUI系統通常以中間件的方式實現。
在Linux中,GUI系統的實現如圖1-2所示。
在Linux中,GUI系統具有中間件典型的特點:核心實現提供了界面、控件等功能,API層是為上層應用提供的接口、移植層適應不同的硬件的需求。GUI系統核心通常需要建立在C庫和移植層的基礎上。GUI核心通常依賴操作系統提供的一些機制,如多線程支持等。GUI系統的移植實現基礎包含輸出設備和輸入設備兩個部分。輸出設備在Linux中通常需要通過對幀緩沖區驅動(例如:/dev/fb0)的調用來實現,輸出設備的移植通常是GUI系統的重點。與之相比,輸入設備是多種多樣的,包括鼠標、鍵盤、觸摸屏、按鍵等設備,對不同輸入設備的支持是GUI系統的難點和重要特性。
GUI系統的核心庫通常作為嵌入式系統的中間件,而使用GUI核心庫的GUI應用程序屬于應用程序層的程序。

圖1-2 Linux中GUI系統的軟件結構