完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>
標(biāo)簽 > MiniGUI
MiniGUI是由北京飛漫軟件技術(shù)有限公司創(chuàng)辦的開源Linux圖形用戶界面支持系統(tǒng),經(jīng)過近些年的發(fā)展,MiniGUI已經(jīng)發(fā)展成為比較成熟的性能優(yōu)良的、功能豐富的跨操作系統(tǒng)的嵌入式圖形界面支持系統(tǒng)。
MiniGUI是由北京飛漫軟件技術(shù)有限公司創(chuàng)辦的開源Linux圖形用戶界面支持系統(tǒng),經(jīng)過近些年的發(fā)展,MiniGUI已經(jīng)發(fā)展成為比較成熟的性能優(yōu)良的、功能豐富的跨操作系統(tǒng)的嵌入式圖形界面支持系統(tǒng)。“小”是MiniGUI的特色,它目前已經(jīng)廣泛應(yīng)用于通訊、醫(yī)療、工控、電子、機(jī)頂盒、多媒體等領(lǐng)域。目前,MiniGUI的最新版本為MiniGUI 3.0。MiniGUI對(duì)中文的支持很友好。它支持GB2312與BIG5字符集,其他字符集也可以輕松加入。
MiniGUI是由北京飛漫軟件技術(shù)有限公司創(chuàng)辦的開源Linux圖形用戶界面支持系統(tǒng),經(jīng)過近些年的發(fā)展,MiniGUI已經(jīng)發(fā)展成為比較成熟的性能優(yōu)良的、功能豐富的跨操作系統(tǒng)的嵌入式圖形界面支持系統(tǒng)。“小”是MiniGUI的特色,它目前已經(jīng)廣泛應(yīng)用于通訊、醫(yī)療、工控、電子、機(jī)頂盒、多媒體等領(lǐng)域。目前,MiniGUI的最新版本為MiniGUI 3.0。MiniGUI對(duì)中文的支持很友好。它支持GB2312與BIG5字符集,其他字符集也可以輕松加入。
MiniGUI 是一款面向嵌入式系統(tǒng)的高級(jí)窗口系統(tǒng)(Windowing System)和圖形用戶界面(Graphical User Interface,GUI)支持系統(tǒng),由魏永明先生于 1998 年底開始開發(fā)。2002 年,魏永明先生創(chuàng)建北京飛漫軟件技術(shù)有限公司,為 MiniGUI 提供商業(yè)技術(shù)支持,同時(shí)也繼續(xù)提供開源版本,飛漫軟件是中國地區(qū)為開源社區(qū)貢獻(xiàn)代碼最多的軟件企業(yè)。最后一個(gè)采用 GPL 授權(quán)的 MiniGUI 版本是 1.6.10,從 MiniGUI 2.0.4 開始 MiniGUI 被重寫并使用商業(yè)授權(quán)。歷經(jīng)十余年時(shí)間, MiniGUI 已經(jīng)成為性能優(yōu)良、功能豐富的跨操作系統(tǒng)嵌入式圖形用戶界面支持系統(tǒng),支持Linux/uClinux、eCos、 uC/OS-II、VxWorks、ThreadX、Nucleus 、pSOS、OSE 等操作系統(tǒng)和數(shù)十種 SoC芯片,已驗(yàn)證的硬件平臺(tái)包括 ARM-based SoCs、MIPS based SoCs、IA-based SoCs、PowerPC、M68K(DragonBall /ColdFire)、Intel x86 等等,廣泛應(yīng)用于通訊、醫(yī)療、工控、電力、機(jī)頂盒、多媒體終端等領(lǐng)域。使用 MiniGUI 成功開發(fā)產(chǎn)品的企業(yè)有華為、中興通訊、大唐移動(dòng)、長虹、TCL、聯(lián)想、邁瑞、南瑞、炬力、D2 等。這些用戶廣泛分部在中國大陸、臺(tái)灣、新加坡、韓國、美國、德國、意大利、印度、以色列等國家和地區(qū)。值得一提的是,在中國自主開發(fā)的 3G 通訊標(biāo)準(zhǔn) TD-SCDMA中,約有 60% 獲得入網(wǎng)許可證的 TD-SCDMA 手機(jī)使用 MiniGUI 作為其嵌入式圖形平臺(tái),以支撐瀏覽器、可視電話等 3G 應(yīng)用軟件的運(yùn)行,其中有聯(lián)想TD30t、海信 T68、中興通訊 U85 等大家熟悉的 TD 手機(jī)型號(hào)。在 MiniGUI 的基礎(chǔ)上,飛漫軟件研發(fā)了 mDolphin (基于開源的瀏覽器核心 WebKit 的嵌入式瀏覽器,滿分通過 Acid3 的基準(zhǔn)測(cè)試)、mPeer (為使用 Java 技術(shù)的嵌入式設(shè)備提供高效的 J2SE AWT/Swing 實(shí)現(xiàn)支持),并且開發(fā)了基于 Eclipse CDT 的可視化集成開發(fā)環(huán)境,為開發(fā)人員提供所見即所得(WYSIWYG)的界面設(shè)計(jì)環(huán)境。2010年,飛漫軟件把最新版的 MiniGUI、mDolphin、mPeer、mStudio 等系統(tǒng)整合在一起,推出了合璧操作系統(tǒng)(HybridOS)解決方案,是一整套專為嵌入式設(shè)備打造的快速開發(fā)平臺(tái),集成了飛漫軟件10年的嵌入式行業(yè)研發(fā)經(jīng)驗(yàn)和眾多成熟的產(chǎn)品,使眾多的希望在嵌入式設(shè)備上做開發(fā)的中小型企業(yè),擺脫了“不穩(wěn)定的內(nèi)核以及驅(qū)動(dòng)程序”、“交叉編譯工具鏈、基礎(chǔ)函數(shù)庫存在大量缺陷”、“不恰當(dāng)?shù)拈_源軟件”、“高水平嵌入式開發(fā)工程師缺乏”等這些問題的困擾,從而能夠在一個(gè)運(yùn)行穩(wěn)定、功能強(qiáng)大的小巧系統(tǒng)內(nèi)核基礎(chǔ)上,專注開發(fā)產(chǎn)品。合璧操作系統(tǒng)(HybridOS)采用新的商業(yè)授權(quán)模式,性價(jià)比頗高。截止2010年9月,MiniGUI 的最新版本是3.0.10, MiniGUI 將作為合璧操作系統(tǒng)(HybridOS)的一個(gè)組成部分而不斷演進(jìn),推薦新老用戶使用合璧操作系統(tǒng)(Hybridos)作為嵌入式開發(fā)平臺(tái),必將節(jié)省大量的開發(fā)成本和時(shí)間。
特點(diǎn)優(yōu)勢(shì)
MiniGUI 為嵌入式 Linux 系統(tǒng)提供了完整的圖形系統(tǒng)支持,是全球針對(duì)嵌入式 Linux僅有的兩個(gè)商用嵌入式GUI系統(tǒng)之一。MiniGUI為嵌入式Linux 系統(tǒng)提供了完整的多進(jìn)程支持;可以 MiniGUI-Processes、MiniGUI-Threads或者M(jìn)iniGUI-Standalone 三種運(yùn)行模式運(yùn)行。
技術(shù)特性硬件適配性:可運(yùn)行于各種含有 MMU(內(nèi)存管理單元)的 32 位處理器架構(gòu)之上,如 ix386、ARM、MIPS、PowerPC 等。支持低端顯示設(shè)備(比如單色 LCD)和高端顯示設(shè)備(8 位色及以上顯示設(shè)備)。通過 MiniGUI 的圖形抽象層及圖形引擎技術(shù),還可以支持特殊的顯示設(shè)備,比如 YUV 顯示設(shè)備。對(duì)顯示設(shè)備分辨率無最大和最小限制。副屏支持。當(dāng)系統(tǒng)中有多個(gè)視頻設(shè)備時(shí),可將一個(gè)作為 MiniGUI 的主屏,實(shí)現(xiàn)完整的多窗口系統(tǒng);而其它設(shè)備作為副屏,在其上通過 MiniGUI 的圖形接口來實(shí)現(xiàn)文字渲染、圖形顯示等功能??芍С指鞣N輸入設(shè)備,如 PC 鍵盤、PC 鼠標(biāo)、小鍵盤(Keypad)、觸摸屏、遙控器等等。多種鍵盤布局的支持。MiniGUI 除支持常見的美式 PC 鍵盤布局之外,還支持法語、德語等西歐語種的鍵 盤布局。資源消耗:MiniGUI 的靜態(tài)存儲(chǔ)隨配置選項(xiàng)的不同而不同,最少需占用 1MB 靜態(tài)存儲(chǔ)空間。MiniGUI 啟動(dòng)后,初始占用 1MB 動(dòng)態(tài)存儲(chǔ)空間。建議系統(tǒng)內(nèi)存為 8MB 以上。操作系統(tǒng)適配性:支持 Linux 操作系統(tǒng)(非 uClinux 操作系統(tǒng)),可以 MiniGUI-Processes、MiniGUI-Threads 或者 MiniGUI-Standalone 三種運(yùn)行模式運(yùn)行。內(nèi)建資源支持??梢詫?MiniGUI 所使用的資源,諸如位圖、圖標(biāo)和字體等編譯到函數(shù)庫中,該特性可提高 MiniGUI 的初始化速度,并且非常適合無文件系統(tǒng)支持的實(shí)時(shí)嵌入式操作系統(tǒng)。針對(duì)嵌入式系統(tǒng)的特殊支持,包括一般性的 I/O 流操作,字節(jié)序相關(guān)函數(shù)等。窗口子系統(tǒng)特性:完備的多窗口機(jī)制和消息傳遞機(jī)制。使用 MiniGUI-Threads 運(yùn)行模式時(shí),可在不同線程中創(chuàng)建主窗口,并支持線程間的消息傳遞;使用 MiniGUI-Processes 運(yùn)行模式時(shí),支持完整的多進(jìn)程窗口系統(tǒng)。對(duì)話框和消息框支持。提供常用的控件類,包括靜態(tài)文本框、按鈕、單行和多行編輯框、列表框、組合框、菜單按鈕、進(jìn)度條、滑塊、屬性頁、工具欄、樹型控件、月歷控件、旋鈕控件、酷工具欄、網(wǎng)格控件、動(dòng)畫控件等。其它 GUI 元素,包括菜單、加速鍵、插入符、定時(shí)器等。圖形子系統(tǒng)特性:提供有增強(qiáng) GDI 函數(shù),包括光柵操作、復(fù)雜區(qū)域處理、橢圓、圓弧、多邊形以及區(qū)域填充等函數(shù)。在提供有兼容于 C99 規(guī)范的數(shù)學(xué)庫平臺(tái)上,還提供有高級(jí)二維繪圖函數(shù),可設(shè)置線寬、線型以及填充模式等。通過 MiniGUI 的圖形抽象層及圖形引擎技術(shù),也可以讓上述高級(jí) GDI 接口在低端顯示屏上實(shí)現(xiàn)。各種流行圖像文件的支持,包括 Windows BMP、GIF、JPEG、PNG等(JPEG 及 PNG的支持通過 libjpeg 及 libpng 函數(shù)庫提供)。Windows 的資源文件支持,如位圖、圖標(biāo)、光標(biāo)等。多字符集和多字體支持,目前支持 ISO8859-1~I(xiàn)SO8859-15、GB2312、GBK、GB18030、BIG5、EUC-JP、Shift-JIS、EUC-KR、UNICODE(UTF-8、UTF-16編碼)等字符集,支持等寬點(diǎn)陣字體、變寬點(diǎn)陣字體、Qt/Embedded 使用的嵌入式字體 QPF、TrueType矢量字體(對(duì) TrueType 的支持通過 freetype 1.3 函數(shù)庫提供)。輸入法支持,用于提供各種可能的輸入形式;內(nèi)建有適合 PC 平臺(tái)的漢字(GB2312)輸入法支持,包括內(nèi)碼、全拼、智能拼音、五筆及自然碼等。
MiniGUI 的技術(shù)優(yōu)勢(shì)和其它針對(duì)嵌入式產(chǎn)品的圖形系統(tǒng)相比,MiniGUI 在對(duì)系統(tǒng)的需求上具有如下幾大優(yōu)勢(shì):可伸縮性強(qiáng)。MiniGUI 豐富的功能和可配置特性,使得它既可運(yùn)行于 CPU 主頻只有 60MHz 的低端產(chǎn)品中,亦可運(yùn)行于高端嵌入式設(shè)備中,并使用 MiniGUI 的高級(jí)控件風(fēng)格及皮膚界面等技術(shù),創(chuàng)建華麗的用戶界面。MiniGUI 的跨操作系統(tǒng)特性,使得 MiniGUI 可運(yùn)行在最簡(jiǎn)單的嵌入式操作系統(tǒng)之上,如 uC/OS-II,也可以運(yùn)行在具有現(xiàn)代操作系統(tǒng)特性的嵌入式操作系統(tǒng)之上,如 Linux,而且 MiniGUI 為嵌入式 Linux 系統(tǒng)提供了完整的多窗口圖形環(huán)境。這些特性,使得 MiniGUI 具有非常強(qiáng)的可伸縮性??缮炜s性是 MiniGUI 從設(shè)計(jì)之初就考慮且不斷完善而來的。這個(gè)特性使得 MiniGUI 可應(yīng)用于簡(jiǎn)單的行業(yè)終端,也可應(yīng)用于復(fù)雜的消費(fèi)類電子產(chǎn)品。輕型、占用資源少。MiniGUI 是一個(gè)定位于輕量級(jí)的嵌入式圖形庫,對(duì)系統(tǒng)資源的需求完全考慮到了嵌入式設(shè)備的硬件情況,如 MiniGUI 庫所占的空間最小可以裁剪到 500K 左右,對(duì)目前的嵌入式設(shè)備來說,滿足這一條件是綽綽有余的。此外,測(cè)試結(jié)果表明,MiniGUI 能夠在 CPU 主頻為 30 MHz,僅有 4M RAM 的系統(tǒng)上正常運(yùn)行(使用 uClinux 操作系統(tǒng)),這是其它針對(duì)嵌入式產(chǎn)品的圖形系統(tǒng)所無法達(dá)到的。高性能、高可靠性。MiniGUI 良好的體系結(jié)構(gòu)及優(yōu)化的圖形接口,可確保最快的圖形繪制速度。在設(shè)計(jì)之初,就充分考慮到了實(shí)時(shí)嵌入式系統(tǒng)的特點(diǎn),針對(duì)多窗口環(huán)境下的圖形繪制開展了大量的研究及開發(fā),優(yōu)化了 MiniGUI 的圖形繪制性能及資源占用。MiniGUI 在大量實(shí)際系統(tǒng)中的應(yīng)用,尤其在工業(yè)控制系統(tǒng)的應(yīng)用,證明 MiniGUI 具有非常好的性能。從 1999 年 MiniGUI 的第一個(gè)版本發(fā)布以來,就有許多產(chǎn)品和項(xiàng)目使用 MiniGUI,MiniGUI 也不斷從這些產(chǎn)品或者項(xiàng)目當(dāng)中獲得發(fā)展動(dòng)力和新的技術(shù)需求,逐漸提高了自身的可靠性和健壯性。有關(guān) MiniGUI 的最新成功案例,您可以訪問飛漫公司網(wǎng)站的典型案例部分。可配置性。為滿足嵌入式系統(tǒng)各種各樣的需求,必須要求 GUI 系統(tǒng)是可配置的。和 Linux 內(nèi)核類似,MiniGUI 也實(shí)現(xiàn)了大量的編譯配置選項(xiàng),通過這些選項(xiàng)可指定 MiniGUI 庫中包括哪些功能而同時(shí)不包括哪些功能。大體說來,可以在如下幾個(gè)方面對(duì) MiniGUI 進(jìn)行定制配置:指定 MiniGUI 要運(yùn)行的硬件平臺(tái)。指定 MiniGUI 要運(yùn)行的操作系統(tǒng)。指定生成基于線程的 MiniGUI-Threads 運(yùn)行模式還是基于進(jìn)程的 MiniGUI-Processes 運(yùn)行模式,或者只是最簡(jiǎn)單的 MiniGUI-Standalone 運(yùn)行模式。指定需要支持的 GAL 引擎和 IAL 引擎,以及引擎相關(guān)選項(xiàng)。指定需要支持的字體類型。指定需要支持的字符集。指定需要支持的圖像文件格式。指定需要支持的控件類。指定控件和窗口的整體風(fēng)格,可以通過指定不同的渲染器完成。這些配置選項(xiàng)大大增強(qiáng)了 MiniGUI 的靈活性,對(duì)用戶來講,可針對(duì)具體的應(yīng)用需求量體裁衣,開發(fā)最適合產(chǎn)品需求的應(yīng)用軟件。總之,將現(xiàn)代窗口和圖形技術(shù)帶入到嵌入式設(shè)備的MiniGUI,是一個(gè)非常適合于實(shí)時(shí)嵌入式設(shè)備的高效、可靠、可定制、小巧靈活的圖形用戶界面支持系統(tǒng),其主要優(yōu)點(diǎn)可以總結(jié)如下:支持多種嵌入式操作系統(tǒng),具備優(yōu)秀的可移植性;可伸縮的系統(tǒng)架構(gòu),易于擴(kuò)展;功能豐富,可靈活剪裁;小體積高性能間的最佳平衡;廣泛的應(yīng)用領(lǐng)域。
MiniGUI V3.0在以前版本的基礎(chǔ)上新增了如下新特性:主窗口雙緩沖區(qū)(Double Buffering Main Window) 當(dāng) MiniGUI 3.0 的主窗口具有雙緩沖區(qū)時(shí),可以在自定義緩沖區(qū)中獲得整個(gè)主窗口的渲染結(jié)果。在此基礎(chǔ)上,可以利用高級(jí) 2D 圖形接口或者 3D 圖形接口獲得主窗口的各種特殊顯示效果,如推拉切換、翻頁切換、卷曲效果等等。外觀渲染器(Look and Feel Renderer)支持。MiniGUI V3.0 改變了以往只支持三種控件風(fēng)格的方式,引入了渲染器(Look and Feel)這一全新的模式。渲染器是定義如何繪制窗口元素的渲染器,是在MiniGUI V2.0.X的基礎(chǔ)上繼續(xù)完善的。窗口元素包括邊框、標(biāo)題欄、標(biāo)題欄按鈕、滾動(dòng)條、選定項(xiàng)目、無效項(xiàng)目、高亮項(xiàng)目、突出項(xiàng)目、三維對(duì)象等;窗口元素的外觀屬性,包括窗口元素的顏色、尺寸、字體等信息;窗口元素渲染器是對(duì)窗口元素進(jìn)行定制大小、顏色、圖形、字體,便于用戶設(shè)計(jì)個(gè)性化的外觀顯示風(fēng)格。用戶可以指定某個(gè)主窗口或某個(gè)控件使用特定的渲染器,也可定制非客戶區(qū)渲染器、窗口元素的尺寸、顏色、字體、圖標(biāo),同時(shí)增強(qiáng)資源管理功能,從而獲得更加華麗的圖形界面。MiniGUI實(shí)現(xiàn)了幾種默認(rèn)整體顯示風(fēng)格:Classic 、Flat、Fashion 和Skin。用戶可以在配置 MiniGUI 時(shí)指定相應(yīng)的選項(xiàng)來將 MiniGUI 編譯成特定的一種顯示風(fēng)格。Classic: 這種風(fēng)格的界面是標(biāo)準(zhǔn)的Window 95風(fēng)格界面,也是最廣泛使用的風(fēng)格了。Fashion: 此種風(fēng)格的界面,采用 MiniGUI 3.0 組件 mGPlus 提供的顏色漸變填充技術(shù),因此,可獲得非常炫麗的界面效果;Flat: 此種風(fēng)格的窗口界面,線條清晰,簡(jiǎn)潔,因此適用于單色或者灰度顯示屏。因?yàn)槔L制簡(jiǎn)單,因此該渲染器占用資源最少,運(yùn)行速度最快;Skin: 上面三種外觀渲染器基本上都是由代碼繪制出來的,具有小巧靈活的特點(diǎn)。但是,在嵌入式應(yīng)用領(lǐng)域,設(shè)備的差別非常大。有些設(shè)備,已經(jīng)具備了非常高的運(yùn)算性能。在這種情況下,可以考慮使用皮膚外觀渲染器來美化界面。皮膚外觀渲染器需要一整套和界面相關(guān)的圖片,因此需要占用一些存儲(chǔ)資源。皮膚外觀渲染器的最大的特點(diǎn)是允許用戶定制界面,用戶可以使用自己設(shè)計(jì)的圖片替換系統(tǒng)原有的圖片,展現(xiàn)在用戶面前的就將是你自己設(shè)計(jì)的界面效果。雙向文本(BIDI Text)的顯示與輸入。大家知道,除了大家熟知的從左向右書寫的文字(如英語、漢語等)之外,還有許多語言采用從右向左的書寫習(xí)慣,如阿拉伯文和希伯來文等。為了支持這些語言,MiniGUI 3.0中增加了對(duì)這兩種語言所屬字符集的處理,并增加了阿拉伯和希伯來鍵盤布局的支持,從而實(shí)現(xiàn)了對(duì)雙向文本的輸入輸出處理。阿拉伯文以及希伯來文的顯示。不規(guī)則窗口。MiniGUI V3.0實(shí)現(xiàn)了不規(guī)則窗口與控件,可滿足用戶對(duì)窗口外觀各種不同的需求。不規(guī)則窗口通過一個(gè)Region數(shù)據(jù)結(jié)構(gòu)來表示可見區(qū)域,或者通過8位MYBITMAP中的透明值形成不可見區(qū)域。字體。在 MiniGUI 3.0 中,飛漫軟件發(fā)明了一種新的 UNICODE 字體文件格式,稱為“UPF”字體。這種字體的最大特點(diǎn),是便于在多進(jìn)程環(huán)境下使用,從而極大地節(jié)約了內(nèi)存的使用。同時(shí),飛漫軟件增強(qiáng)了VBF字體格式,將VBF 字體升級(jí)到了3.0,擴(kuò)大了其能適用的字符集范圍,以便支持阿拉伯文等語言文字的顯示。其他增強(qiáng)。MiniGUI 3.0實(shí)現(xiàn)了桌面的可定制。通過桌面的外部編程接口,用戶可以在桌面放置圖標(biāo)并響應(yīng)桌面事件,實(shí)現(xiàn)類似Windows桌面的界面效果。除此之外,MiniGUI 3.0 還增強(qiáng)了透明控件的實(shí)現(xiàn),使之效率更高,且不依賴于控件的內(nèi)部實(shí)現(xiàn)代碼。MiniGUI 3.0 還提供獨(dú)立的滾動(dòng)條控件,提供統(tǒng)一的虛擬幀緩沖區(qū)程序支持等等。另外最新的MiniGUI V3.0新增加了兩個(gè)新的組件:mGUtils和mGPlus,把字體、位圖、圖標(biāo)、光標(biāo)等資源進(jìn)行統(tǒng)一管理,資源的內(nèi)嵌和非內(nèi)嵌方式并不影響模塊的組成,由此抽象出系統(tǒng)資源管理模塊。
運(yùn)行模式
和 Linux 這樣的類 UNIX 操作系統(tǒng)相比,一般意義上的傳統(tǒng)嵌入式操作系統(tǒng)具有一些特殊性。舉例而言,諸如 uClinux、uC/OS-II、eCos 等操作系統(tǒng),通常運(yùn)行在沒有 MMU(內(nèi)存管理單元,用于提供虛擬內(nèi)存支持)的 CPU 上;這時(shí),往往就沒有進(jìn)程的概念,而只有線程或者任務(wù)的概念,這樣,MiniGUI 的運(yùn)行環(huán)境也就大相徑庭。因此,為了適合不同的操作系統(tǒng)環(huán)境,可將 MiniGUI 配置成三種不同的運(yùn)行模式:
MiniGUI-Threads運(yùn)行在 MiniGUI-Threads 上的程序可以在不同的線程中建立多個(gè)窗口,但所有的窗口在一個(gè)進(jìn)程或者地址空間中運(yùn)行。這種運(yùn)行模式主要用來支持大多數(shù)傳統(tǒng)意義上的嵌入式操作系統(tǒng),比如 VxWorks 、ThreadX、Nucleus、OSE、pSOS、uC/OS-II、eCos等等。當(dāng)然,在 Linux 和 uClinux 上,MiniGUI 也能以 MiniGUI-Threads 的模式運(yùn)行。
MiniGUI-Processes和 MiniGUI-Threads相反,MiniGUI-Processes 上的每個(gè)程序是單獨(dú)的進(jìn)程,每個(gè)進(jìn)程也可以建立多個(gè)窗口,并且實(shí)現(xiàn)了多進(jìn)程窗口系統(tǒng)。MiniGUI-Processes 適合于具有完整 UNIX 特性的嵌入式操作系統(tǒng),比如嵌入式 Linux。該運(yùn)行模式在 MiniGUI V2.0 中提供。
MiniGUI-Standalone這種運(yùn)行模式下,MiniGUI 可以以獨(dú)立任務(wù)的方式運(yùn)行,既不需要多線程也不需要多進(jìn)程的支持,這種運(yùn)行模式適合功能單一的應(yīng)用場(chǎng)合。比如在一些使用 uClinux 的嵌入式產(chǎn)品中,因?yàn)楦鞣N原因而缺少線程支持,這時(shí),就可以使用 MiniGUI-Standalone 來開發(fā)應(yīng)用軟件。一般而言,MiniGUI-Standalone 模式的適應(yīng)面最廣,可以支持幾乎所有的操作系統(tǒng)(目前只用來提供對(duì) Linux/uClinux 操作系統(tǒng)的支持);MiniGUI-Threads 模式的適用面次之,可運(yùn)行在支持多任務(wù)的實(shí)時(shí)嵌入式操作系統(tǒng),或者具備完整 UNIX 特性的普通操作系統(tǒng);MiniGUI-Processes 模式的適用面較小,它僅適合于具備完整 UNIX 特性的嵌入式操作系統(tǒng),比如 Linux。但不論采用哪種運(yùn)行模式,MiniGUI 為上層應(yīng)用軟件提供了最大程度上的一致性;只有少數(shù)幾個(gè)涉及初始化的接口在不同運(yùn)行模式上有所不同。
軟件架構(gòu)
MiniGUI 由如下幾個(gè)模塊組成:MiniGUI軟件架構(gòu)圖
圖形抽象層(Graphics Abstraction Layer,GAL)。圖形抽象層將來自不同操作系統(tǒng)或設(shè)備的圖形接口進(jìn)行抽象,為 MiniGUI 上層提供統(tǒng)一的圖形接口。在圖形抽象層內(nèi),包含有針對(duì) Linux FB 設(shè)備、eCos LCD 設(shè)備等的軟件組成部分。這些軟件組成部分通過調(diào)用底層設(shè)備的接口來實(shí)現(xiàn)具體的圖形抽象層操作,如打開設(shè)備、設(shè)置分辨率及顯示模式、關(guān)閉設(shè)備等。將這些用于適配圖形抽象層接口的軟件組成部分稱為“引擎(engine)”,其概念和操作系統(tǒng)中的設(shè)備驅(qū)動(dòng)程序類似。
輸入抽象層(Input Abstraction Layer,IAL)。和 GAL 類似,輸入抽象層將 MiniGUI 涉及的所有輸入設(shè)備,如鍵盤(keyboard)、小鍵盤(keypad)、鼠標(biāo)(mouse)、觸摸屏(touch screen)等抽象了出來,為上層提供一致的接口。要支持不同的鍵盤、觸摸屏或者鼠標(biāo)接口,則通過為 IAL 編寫不同的輸入引擎實(shí)現(xiàn)。MiniGUI 通過 IAL 及其輸入引擎,提供對(duì) Linux 控制臺(tái)(鍵盤及鼠標(biāo))、觸摸屏、遙控器、小鍵盤等輸入設(shè)備的支持。
圖形設(shè)備接口(Graphics Device Interfaces,GDI)。該模塊基于圖形抽象層為上層應(yīng)用程序提供圖形相關(guān)的接口,如繪制曲線、輸出文本、填充矩形等等。圖形設(shè)備接口中含包含其他比較獨(dú)立的子模塊,如字體字符集(font and charset)支持、圖像(image)支持等。
消息處理模塊(Messaging Module)。該模塊在輸入抽象層基礎(chǔ)上,實(shí)現(xiàn)了 MiniGUI 的消息處理機(jī)制,為上層提供了完備的消息管理接口。眾所周知,幾乎所有的GUI 系統(tǒng)本質(zhì)上都是事件驅(qū)動(dòng)的,系統(tǒng)自身的運(yùn)行,以及GUI 應(yīng)用程序的運(yùn)行,都依賴于消息處理模塊。
多窗口處理模塊和控件(Windowing Module)和(Control 或 Widget)?;趫D形設(shè)備接口和消息處理模塊,MiniGUI 實(shí)現(xiàn)了多窗口處理模塊。該模塊為上層應(yīng)用程序提供了創(chuàng)建主窗口和控件的基本接口,并負(fù)責(zé)維護(hù)控件類。控件類是用來實(shí)現(xiàn)控件代碼重用的重要概念,利用控件類(control class),可以創(chuàng)建屬于某個(gè)控件類的多個(gè)控件實(shí)例(instance),從而讓這些控件實(shí)例使用同一個(gè)控件類的代碼,這樣,就實(shí)現(xiàn)了類似 C++ 那樣的類和實(shí)例概念,從而可以最大程度上重復(fù)利用已有代碼,并提高軟件的可維護(hù)性。MiniGUI 的控件模塊實(shí)現(xiàn)了常見的 GUI 控件,如靜態(tài)框、按鈕、編輯框、列表框、下拉框等等。
外觀支持(Look and Feel)。這個(gè)模塊是 MiniGUI V3.0 提供給上層應(yīng)用程序的接口,可用來定制 MiniGUI 窗口、控件的繪制。在 MiniGUI V3.0 之前的版本中,對(duì)主窗口和控件的定制能力,還沒有被抽離出來形成獨(dú)立的模塊,但仍然可以通過配置選項(xiàng)讓 MiniGUI 的主窗口、控件具有三種顯示風(fēng)格,分別是:類似 PC 的三維風(fēng)格(PC3D )、平板風(fēng)格(FLAT)、流行風(fēng)格(FASHION)。在 MiniGUI 3.0 中,主窗口和控件的外觀可完全由應(yīng)用程序自行定制,在創(chuàng)建主窗口或者控件時(shí),指定外觀渲染器(renderer)的名稱,就可以讓主窗口或者控件具有各自不同的外觀。在 MiniGUI 核心(Core)接口之上,還為應(yīng)用程序提供若干組件,這些組件分別為應(yīng)用程序提供某些特殊的功能特性:mGi是 MiniGUI 的輸入法組件,該組件目前提供了軟鍵盤輸入法和手寫輸入法框架,并提供給用戶管理輸入法的容器,通過這個(gè)容器,用戶還可以添加自定義的輸入法。mGp 是針對(duì) MiniGUI 應(yīng)用程序的一個(gè)打印組件,該組件使用戶的 MiniGUI 程序具有打印輸出功能,可以將 MiniGUI 程序中的位圖或文字輸出到打印機(jī)。mG3d 是一個(gè)為 MiniGUI 的應(yīng)用程序提供 3D 接口的組件,通過這些接口,用戶可以給自己的應(yīng)用程序添加三維圖像、文字渲染、場(chǎng)景渲染等效果,從而可以具有三維效果的人機(jī)界面。mGUtils 組件為用戶提供了一些常用的對(duì)話框模板,有了這些模板,用戶就不用為一些常用的功能編寫重復(fù)代碼了。本組件提供的功能模板有:普通文件對(duì)話框、顏色設(shè)置對(duì)話框、字體設(shè)置對(duì)話框、信息設(shè)置對(duì)話框等。mGPlus 組件是對(duì) MiniGUI 圖形繪制接口的一個(gè)擴(kuò)充和增強(qiáng),主要提供對(duì)二維矢量圖形和高級(jí)圖形算法的支持,如路徑、漸變填充和顏色組合等。mGEff 組件提供常規(guī)的頁面特效支持。
minigui3.0.12之初體驗(yàn)-移植篇
在一年多年前有幸接觸使用到minigui一段時(shí)間,當(dāng)時(shí)使用的應(yīng)該是1.6版本,硬件平臺(tái)使用的是s3c2440+64M內(nèi)存,界面上做了很多功能,但整體運(yùn)行還是十分流暢,我想要是換成QT在上面跑流暢度應(yīng)該是比不上minigui的了;前段時(shí)間從朋友那拿到一塊基于新塘nuc972的板子用來玩玩學(xué)習(xí)下,nuc972也是一顆基于arm926內(nèi)核的soc,我想讓人喜歡它的地方應(yīng)該要是它內(nèi)置了64M的DDR和LQFP的封裝吧,硬件配置總體上和s3c2440相當(dāng),然后還配了一塊800x480的七寸屏,我想用它來跑跑minigui應(yīng)該會(huì)比較合適,也正好看看minigui3.0x更新的新特性。
備料
準(zhǔn)備編譯環(huán)境和交叉編譯器,最好能用它編譯一個(gè)最簡(jiǎn)單打印一句“hello world!”的小程序在板子上正常跑起來確保整個(gè)編譯環(huán)境的正確;
下載minigui源碼,它最基本的組成包括核心庫MiniGUI Core Lib (V3.0.12 )和資源文件MiniGUI Resource (V3.0.12)這些多可以從minigui官方網(wǎng)站上下載到,另我這邊這個(gè)兩個(gè)文件是從nuc972的bsp包里得到的,它和從官網(wǎng)上下載的唯一區(qū)別是,它里面移植好了使用了nuc972的2D硬件加速功能的圖像引擎,也就是說可以配置使用nuc972的硬件2D圖像加速功能,貌似也只使用到了里面的BitBlt功能,畫線這些基本操作還是由minigui來實(shí)現(xiàn)的,然而后面當(dāng)我啟用這個(gè)功能的時(shí)候屏幕顏色顯示不對(duì),還沒去深究就先使用通用的FrameBuffer圖像引擎了。
有了跑minigui的核心資源了,那再跑個(gè)demo看看吧,這里選擇官網(wǎng)提供的iPhoneLikeDemo 后面發(fā)現(xiàn)運(yùn)行它還需要用到j(luò)peg和png庫,這個(gè)兩個(gè)也多可以在官網(wǎng)的下載界面的Tools and Dep. Libraries項(xiàng)里找到。
編譯
一、核心庫的編譯
使用tar命令解壓libminigui-gpl-3.0.12.tar.gz并cd進(jìn)入;
使用configure腳本來配置minigui特性,這里執(zhí)行如下命令:
。/configure --prefix=$PWD/。./build CC=arm-linux-gcc --host=arm-linux --build=i386-linux --with-osname=linux --with-targetname=fbcon
--disable-pcxvfb --enable-videonuc970 --enable-videofbcon --enable-autoial --disable-vbfsupport
--disable-screensaver --enable-tslibial --enable-procs
其中--enable-videonuc970表示加入nuc92的硬件圖形引擎支持,之后可在配置文件中選擇使用;--enable-tslibial表示支持tslib作為IAL輸入引擎;--enable-procs表示使minigui運(yùn)行在procs模式,關(guān)于minigui的三種運(yùn)行模式可參考官方文檔;
配置成功后,執(zhí)行make命令,等待編譯完成無誤后再執(zhí)行make install命令即可由--prefix=xxx指定的路徑下發(fā)現(xiàn)minigui的安裝文件,把它們拷貝到rootfs對(duì)于的目錄下即可。
修改etc目錄下的MiniGUI.cfg配置文件,首先我們要修改指定我們使用的圖像引擎為fbcon然后將其分辨率信息設(shè)置我們板子對(duì)應(yīng)的分辨率如下:
# GAL engine and default options
gal_engine=fbcon
defaultmode=800x480-16bpp
第二個(gè)需要配置的為輸入引擎IAL這里我們使用tslib作為我們的輸入引擎即如下:
# IAL engine
ial_engine=tslib
mdev=/dev/input/event0
mtype=IMPS2
還有要修改的地方就是配置正確的資源文件路徑,如光標(biāo)圖片資源等,如下:
?。踓ursorinfo]
#Edit following line to specify cursor files path
cursorpath=/share/minigui/res/cursor/
[resinfo]
respath=/share/minigui/res/
Tips:
1. 在官方下載的源碼中將不支持--enable-videonuc970選項(xiàng)可去掉;
2. 可通過命令。/configure --help來查看支持的所有選項(xiàng)和含義。
3. 實(shí)際上如果我要跑官網(wǎng)上的demo的話還要打開對(duì)png圖片的支持,配置時(shí)這項(xiàng)默認(rèn)是關(guān)閉的,可加入?yún)?shù)--enable-pngsupport但實(shí)際上我發(fā)現(xiàn)即使添加上這個(gè)也是還沒打開對(duì)png圖片的支持,這一點(diǎn)可以通過打開mgconfig.h文件來確認(rèn)配置是否生效,如果沒有可手工將里面對(duì)于的宏打開即可,如png圖片支持對(duì)于的宏為#define _MGIMAGE_PNG 1
二、編譯資源文件
資源文件的編譯相對(duì)簡(jiǎn)單,里面主要是包含一些圖片資源等,如光標(biāo)樣式,使用tar命令解壓minigui-res-be-3.0.12.tar.gz并cd進(jìn)入,然后使用configure腳本配置安裝路徑執(zhí)行如下命令:
。/configure --prefix=$PWD/。./build
然后執(zhí)行make和make install即可,相關(guān)資源就會(huì)被安裝到了上級(jí)目錄的build目錄下,既對(duì)應(yīng)著在rootfs下的相應(yīng)目錄。
三、編譯依賴的庫文件
1、jpeg庫的編譯
同樣使用configure腳本配置編譯,執(zhí)行命令如下:
。/configure --prefix=$PWD/build CC=arm-linux-gcc --host=arm-linux --build=i386-linux --enable-shared --enable-static
其中--enable-shared是為了配置生成.so即共享庫
然后執(zhí)行make和make install命令后即可在當(dāng)前目錄下的build/lib下找到我們需要的文件了。
Tips:
1、步驟1的配置命令通常適用于大多數(shù)使用Autoconf/Automake來生成的工程;
2、注意使用和minigui核心庫匹配的jpeg庫版本,如果不確定通常程序運(yùn)行時(shí)它會(huì)發(fā)出錯(cuò)誤說找不到對(duì)應(yīng)版本的庫文件;
3、以上配置編譯命令適用于較新的jpeg庫如在jpeg-7上配置編譯是通過的,然而在配置編譯配置jpeg-6b時(shí)卻發(fā)生了錯(cuò)提示如下:
make: 。/libtool: Command not found
原來較老的jpeg庫沒有自帶libtool,這里要先下載交叉編譯libtool-2.2.4配置命令如下:
。/configure --prefix=$PWD/build CC=arm-linux-gcc --host=arm-linux --build=i386-linux
然后make & make install即可;
4、編譯好libtool后將build/bin目錄下的libtool腳本拷貝至jpeg-6b的目錄下,然后先要手動(dòng)創(chuàng)建好接下來要安裝的目錄命令如下:
mkdir -p build/bin build/include build/lib build/man/man1
之后再執(zhí)行make & make install命令即可在build/lib目錄下找到我們需要的共享庫了。
2、png庫的編譯
編譯配置方法同編譯jpeg庫,無特別注意事項(xiàng)。
三、編譯iphone-like-demo
它同樣是使用Autoconf/Automake來配置的工程,所以我們解壓它并cd進(jìn)入使用如下命令來配置它
。/configure --prefix=$PWD/。./build CC=arm-linux-gcc --host=arm-linux --build=i386-linux CFLAGS=-I$PWD/。./build/include
LDFLAGS=“-L$PWD/。./build/lib” LIBS=“-lminigui_procs -lts -ljpeg -lpng -lz -ldl -lm -lpthread”
其中CFLAGS參數(shù)指定了minigui的頭文件路徑,LDFLAGS指定了要鏈接的動(dòng)態(tài)鏈接庫路徑,LIBS指定了要鏈接的動(dòng)態(tài)鏈接庫,盡管我們這樣指定了minigui的頭文件路徑但是編譯過程中它還是有提示報(bào)錯(cuò)說找不到相應(yīng)的minigui的頭文件路徑,這時(shí)我們?yōu)榱撕?jiǎn)單只需將minigui的頭文件手動(dòng)的拷貝到其-I指定的路徑下即可,這里我們將minigui的頭文件拷貝到編譯的當(dāng)前路徑下即可;
編譯中會(huì)遇到很多報(bào)錯(cuò),我們只需依次解決下即可,如
eblistview.c:(.text+0x40): undefined reference to `rindex‘
我們打開eblistview.c這個(gè)文件在文件頭部添加如下代碼
#define rindex strrchr
即用strrchr這個(gè)接口來代替rindex這個(gè)接口;
一般來說不會(huì)有其他很嚴(yán)重的報(bào)錯(cuò),我們多可以依次解決,直到make完成,然后make install后即可在上層build目錄下的bin文件夾下生成我們的執(zhí)行程序;
然后將build目錄下的lib文件夾下的庫文件拷貝至板子上的lib文件夾下,之后想辦法將bin文件夾的東西拷貝至板子上或通過網(wǎng)線掛載的方式,進(jìn)入執(zhí)行。/mginit即可。
你知道嵌入式Linux系統(tǒng)的MiniGUI研究和移植?
隨 著嵌入式系統(tǒng)的廣泛應(yīng)用,PDA、機(jī)頂盒、DVD/VCD播放機(jī)及WAP手機(jī)已經(jīng)迅速普及。圖形用戶界面(GUI)的廣泛流行,是當(dāng)今計(jì)算機(jī)技術(shù)的重大成 就之一。
基于嵌入式Linux系統(tǒng)下Mini GUI的移植方法與過程詳解
近幾年,嵌入式 Linux 系統(tǒng)已得到廣泛的應(yīng)用,相應(yīng)的圖形用戶界面的開發(fā)也日趨重要,MiniGUI正是其中的一個(gè)輕量級(jí)的圖形用戶界面支持系統(tǒng)。本文分析...
MiniGUI與嵌入式系統(tǒng)的關(guān)系 MiniGUI移植的過程
,MiniGUI是分層設(shè)計(jì)的,層次結(jié)構(gòu)如圖2所示。在底層,GAL和IAL為MiniGUI提供了底層的Linux控制臺(tái)或者X Window上的圖形接口以及...
一種基于MiniGUI的GPS導(dǎo)航定位系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
定位系統(tǒng)自問世后便得到了蓬勃發(fā)展,其應(yīng)用已滲入到各行各業(yè)。個(gè)人消費(fèi)領(lǐng)域引領(lǐng)移動(dòng)定位類型科技產(chǎn)品集中涌現(xiàn),其他領(lǐng)域和行業(yè)也有大量技術(shù)更新。目前各領(lǐng)域的定位...
MiniGUI是最負(fù)盛名的開源Linux圖形用戶界面支持系統(tǒng)之一。本文是魏永明老師于公元2017年9月1日最新原創(chuàng)的討論MiniGUI的涅槃重生之路的文章。
類別:電子資料 2023-10-12 標(biāo)簽:arm嵌入式系統(tǒng)MiniGUI
鍺對(duì)氮化硅中紅外集成光子學(xué)的波導(dǎo)
在中紅外波長下,演示了一種具有大纖芯-包層指數(shù)對(duì)比度的鍺基平臺(tái)——氮化硅鍺波導(dǎo)。仿真驗(yàn)證了該結(jié)構(gòu)的可行性。這種結(jié)構(gòu)是通過首先將氮化硅沉積的硅上鍺施主晶片...
盤點(diǎn)嵌入式的那些常見GUI:emWin、TouchGFX、MiniGUI、Qt等
盤點(diǎn)嵌入式那些常見的GUI:emWin、TouchGFX、MiniGUI、Qt等
在嵌入式系統(tǒng)上的MiniGUI應(yīng)用開發(fā)過程詳解
為目標(biāo)嵌入式產(chǎn)品選擇適合的嵌入式圖形支持系統(tǒng)成為與選擇嵌入式操作系統(tǒng)一樣頗具挑戰(zhàn)性。本土公司開發(fā)的MiniGUI是一個(gè)高效、可靠、可定制、小巧靈活的圖形...
2018-12-26 標(biāo)簽:嵌入式系統(tǒng)MiniGUI 3245 0
AllWinner+MiniGUI推進(jìn)物聯(lián)網(wǎng)產(chǎn)品化的發(fā)展浪潮
全志科技與飛漫公司達(dá)成合作,在智能硬件領(lǐng)域共同推動(dòng)Tina Linux+MiniGUI系統(tǒng)的平臺(tái)生態(tài)建設(shè),加速智能家居和智能家電產(chǎn)品的開發(fā)和普及。
2018-01-11 標(biāo)簽:Minigui物聯(lián)網(wǎng)linux 5092 0
怎樣設(shè)計(jì)實(shí)現(xiàn)一個(gè)基于嵌入式Linux和MiniGUI的SIP電話終端的方案?
為了實(shí)現(xiàn)這兩個(gè)條件,在程序?qū)崿F(xiàn)中使用了寫指針和讀指針來判斷緩沖區(qū)是空還是滿。在初始化時(shí)讀指針和寫指針為0;如果讀指針等于寫指針,則緩沖區(qū)是空的;如果(寫...
基于MiniGUI的GPS自動(dòng)定位系統(tǒng)設(shè)計(jì)
基于GPS的衛(wèi)星定位技術(shù),可以將移動(dòng)目標(biāo)的動(dòng)態(tài)位置(包括經(jīng)度和緯度)、時(shí)間、狀態(tài)等信息通過無線通信鏈路實(shí)時(shí)傳送到監(jiān)控中心,從而在電子地圖上顯示出移動(dòng)終端...
基于MiniGUI的數(shù)字加密電話系統(tǒng)GUI設(shè)計(jì)
本文詳細(xì)地描述了基于MiniGUI的嵌入式系統(tǒng)用戶界面關(guān)鍵問題的解決方案,即無抖動(dòng)動(dòng)畫的實(shí)現(xiàn)方案和功能選擇界面閃爍問題的解決方案。
本文講解基于 Linux 和 MiniGUI 的嵌入式系統(tǒng)軟件開發(fā),其內(nèi)容不僅僅限于 MiniGUI 的編程,還會(huì)涉及到一些 Linux 下嵌入式系統(tǒng)軟...
基于ARM-Linux的MiniGUI的仿真與移植 近幾年,隨著嵌入式系統(tǒng)的日益發(fā)展和32位嵌入式處理器以及圖形顯示設(shè)備的廣泛應(yīng)用,目標(biāo)產(chǎn)品對(duì)GUI(...
編輯推薦廠商產(chǎn)品技術(shù)軟件/工具OS/語言教程專題
電機(jī)控制 | DSP | 氮化鎵 | 功率放大器 | ChatGPT | 自動(dòng)駕駛 | TI | 瑞薩電子 |
BLDC | PLC | 碳化硅 | 二極管 | OpenAI | 元宇宙 | 安森美 | ADI |
無刷電機(jī) | FOC | IGBT | 逆變器 | 文心一言 | 5G | 英飛凌 | 羅姆 |
直流電機(jī) | PID | MOSFET | 傳感器 | 人工智能 | 物聯(lián)網(wǎng) | NXP | 賽靈思 |
步進(jìn)電機(jī) | SPWM | 充電樁 | IPM | 機(jī)器視覺 | 無人機(jī) | 三菱電機(jī) | ST |
伺服電機(jī) | SVPWM | 光伏發(fā)電 | UPS | AR | 智能電網(wǎng) | 國民技術(shù) | Microchip |
Arduino | BeagleBone | 樹莓派 | STM32 | MSP430 | EFM32 | ARM mbed | EDA |
示波器 | LPC | imx8 | PSoC | Altium Designer | Allegro | Mentor | Pads |
OrCAD | Cadence | AutoCAD | 華秋DFM | Keil | MATLAB | MPLAB | Quartus |
C++ | Java | Python | JavaScript | node.js | RISC-V | verilog | Tensorflow |
Android | iOS | linux | RTOS | FreeRTOS | LiteOS | RT-THread | uCOS |
DuerOS | Brillo | Windows11 | HarmonyOS |