摘要:MicroWindows是一個著名的開放源碼的嵌入式GUI軟件。本文簡要論述了MicroWindows的體系結構和應用程序接口,并介紹其設備驅動特性、API、客戶機/服務器模型和畫圖機制。
關鍵詞:MicroWindows API Nano-X 圖形用戶界面
許多開發(fā)者在嵌入式設計中開始使用類似于桌面的操作系統(tǒng)。其中一個方案就是Linux操作系統(tǒng)。由于Linux在嵌入式系統(tǒng)上具有桌面電腦的全部功能和特性,作為一種免費的開放源碼,它允許修改和根據用戶的要求進行定制。
MicroWindows是一個開放源碼的嵌入式GUI軟件,目的是把圖形視窗環(huán)境引入到運行Linux的小型設備和平臺上。作為X Window系統(tǒng)的替代品,MicroWindows可以用更少的RAM和文件存儲空間(100KB~600KB)提供相似的功能,允許設計得輕松加入各種顯示設備、鼠標、觸摸屏和鍵盤等;可移植性非常好,可用C語言實現(xiàn);支持Intel 16位/32位CPU、MIPS R4000以及基于ARM內核的處理器芯片。
1 體系結構
1.1 分層結構設計
MicroWindows采用分層結構設計方法,在底層提供對屏幕、鼠標、觸摸屏和鍵盤的驅動,在程序能訪問實際的硬件設備和其它用戶定制設備。在中間層有一個可移植圖形引擎,提供繪制線程、區(qū)域填充、繪制多邊形、裁減和使用顏色模式的方法。在頂層實現(xiàn)多種API以適應不同的應用環(huán)境。目前,MicroWindows中使用兩種流行的圖形編程接口:Microsoft Windows Win32/WinCE圖形顯示接口(GDI)和Xlib接口。前者應用于所有的Windows CE和Win32應用程序;后者就像Nano-X,應用于所有Linux X插件集的最底層,這樣可讓Linux圖形程序員X接口開發(fā)圖形應用程序。
1.2 驅動設備
device.h文件中定義設備驅動接口。MicroWindows已實現(xiàn)至少將一個屏幕、鼠標和鍵盤的驅動與系統(tǒng)相連。獨立圖形設備引擎的中間層可以使驅動設備直接完成對硬件的具體操作。
(1)屏幕驅動
MicroWindows可運行在支持Framebuffer的32位Linux系統(tǒng)上,也可使用SVGALib[45]庫來進行圖形顯示。此外,還被移植到16位的ELKS和實模式的MSDOS上,實現(xiàn)1、2、4、8、16和32位的像素支持,以及實現(xiàn)VGA16平面模式支持。它的圖形引擎能夠運行在任何支持readpixel、writepixel、drawhorzline、drawvertline和setpalette的系統(tǒng)之上。如果底層驅動系統(tǒng)實現(xiàn)了Blitting,則上層可提供更多的增強功能。在底層函數的支持之下,上層實現(xiàn)了對位圖、字體、光標以及顏色的支持。除了基于調色板的1、2、4和8位像素模式,也實現(xiàn)15、16和32位像素的真彩模式。
(2)鼠標驅動
MicroWindows有三個鼠標驅動程序。GPM驅動程序mou_gpm.c支持Linux系統(tǒng),串口鼠標驅動程序mou_ser.c支持Linux和ELKS系統(tǒng),int33驅動程序mou_dos.c支持MSDOS系統(tǒng)。鼠標驅動程序的基本功能,是將鼠標中的數據編碼,然后返回關于鼠標位置和按鍵的相對或絕對數據。
在Linux下,MicroWindows的主循環(huán)是select()聲明,如果運行的系統(tǒng)不支持select(),MicroWindows則提供Poll()入口。
(3)鍵盤驅動
MicroWindows提供兩個鍵盤驅動程序:Kbd_tty.c適用于Linux和ELKS系統(tǒng),鍵盤被當成文件描述符來讀寫;Kbd_bios.c用于MSDOS真彩模式下,它是對PC BIOS進行讀寫來對按鍵進行操作。
1.3 MicroGUI——獨立圖形設備引擎
MicroWindows的MicroGUI提供了對屏幕、鼠標、鍵盤驅動程序和硬件之間的接口。用戶應用程序不能直接調用核心圖形引擎,但是可通過API函數來實現(xiàn)。核心程序在客戶機/服務器模型下常駐在服務器上,使用內部的文本字體和位圖文本模式。此外,核心程序使用的是指針,這樣不用靠轉變成句柄來實現(xiàn)更多的復雜功能。
MicroWindows中的核心程序以GdXXX()開頭,與之相連的是圖形輸出系統(tǒng)而不是窗口管理系統(tǒng)。此外,還控制所有的裁剪和顏色轉換功能。以下是組成MicroWindows核心模塊的文件:
dvdraw.c——核心圖形程序,關于繪制線段、圓、多邊形及其填充,文本和位圖文件的繪制和顏色轉換;
devclip.c——核心裁剪程序;
devrgn.c——動態(tài)分配程序;
devmouse.c——鼠標控制程序;
devkbd.c——核心鍵盤控制程序;
devpalX.c——連接到系統(tǒng)調色板。
1.4 應用程序接口





