色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于Qt的嵌入式GUI系統的特點及實現方法

電子設計 ? 來源:郭婷 ? 作者:電子設計 ? 2019-04-02 08:34 ? 次閱讀

1 引言

圖形用戶界面系統(GUI)是系統級的底層軟件, 它可以和文件系統、操作系統內核等一起構成一個完整的操作系統。GUI為用戶提供了與應用系統交互的可視化通道, 同時GUI 為程序員提供了一種編程模式, 即GUI 負責系統的可視化界面的生成、管理以及系統與用戶之間的信息交互, 而程序員只需專注于對實際應用的分析。

嵌入式GUI 除了以上特點, 還要求簡單、直觀、可靠、占用資源小且反應快速, 以適應嵌入式系統硬件資源有限的條件。

另外, 由于嵌入式硬件本身的特殊性, 嵌入式GUI 應具備高度可移植性和可裁剪性, 以適應不同硬件平臺的需求。

2 國內外幾種嵌入式GUI 系統實現方式與特點

為了適應日益擴大的嵌入式Linux 市場的需求, 國內外的相關研究機構和開發商已經或者正在開發一大批嵌入式圖形系統項目和原型產品。其中較為著名的開放源碼項目有Tiny X(小型的X 窗口系統)、Microwindows、MiniGUI、Qt/Embedded 等。

Tiny X:是標準X- windows 在嵌入式系統的小巧實現, 作為一個圖形環境, X- window 是成功的, 但由于在體系接口上的原因, 限制了它對游戲、多媒體的支持能力。

Microwindows: 典型的基于Server/Clinent 體系結構的GUI系統, 提供了相對完善的圖形功能和一些高級的特性, 如Alpha混合、三維支持等。該系統為了提高運行速度, 也改進了基于Socket 套接字的X 實現模式, 采用了基于消息機制的Server/Client 傳輸機制。

MiniGUI:由國內自由軟件開發人員設計開發, 是一種面向嵌入式系統或者實時系統的圖形界面支持系統。MiniGUI 具有資源消耗小、速度快、效率高的特點, 但目前還不是很成熟, 主要表現在:體系結構不完善, 自有圖形引擎的功能較弱, 控件的可定制性不好, 基于線程機制的系統脆弱性在復雜應用中更為突出, 尤其是缺少一個方便的圖形開發環境。

Qt/Embedded: 縮寫為Qt/E, Qt 是Trolltech 公司的產品, 是一個多平臺的C++圖形用戶界面應用程序框架, 它注重于給用戶提供精美的圖形用戶界面所需要的所有元素。而且它是基于一種面向對象的思想, 所以用戶對其對象的擴展是相當容易的, 并且他還支持真正的組件編程。這也是本文將要重點介紹的內容。

3 Qt /E 的介紹及開發環境的建立

3.1 Qt/E 體系結構

3.1.1 交叉開發平臺

Qt 是用于本地化跨平臺應用開發的領先性框架。Qt 所有平臺的API 是一致的。這就意味著在一種平臺上寫的應用程序, 在新的平臺上經過重新編譯和連接便能運行于該新平臺上。因此, 軟件開發者通過開發和維護一種平臺的應用源碼來用于多種平臺的開發。同樣, 嵌入式Qt 也可以移植基于Qt 的軟件到嵌入式Linux 中。Qt 可提供的平臺, 如圖1:

基于Qt的嵌入式GUI系統的特點及實現方法

Qt/Windows: 用于Microsoft Windows xp、2000、NT4、Me/98.

Qt 庫使用Windows 的GDI API 來實現, 并且使用微軟的窗口系統; Qt/X11:包括Linux、HP- UX、Sun Solaris、Digital UNIX、SGI Irix、IBMAIX 等。Qt 庫使用X11 庫來實現, 并且使用X 窗口系統; Qt/E:包括一個完整的窗口系統, 并允許設計者輕易地加入各種顯示設備和硬件輸入設備(如鼠標、鍵盤、觸摸屏等); Qt/Mac:

用于Mac OS X 平臺。Qt 對不同平臺的專門API 進行了封裝, 如文件處理、網絡(操作, 協議)、進程處理、線程、數據庫訪問等。

3.1.2 Qt/E 的窗口系統

Qt/E 的窗口系統采用一種客戶/服務器體系結構, 如圖2所示。一個典型的嵌入式Qt 窗口系統一般包括一個服務器進程、一個或多個客戶進程(簡稱服務器和客戶)。服務器負責為客戶和其本身分配顯示區域、生成鼠標和鍵盤事件。而客戶則通過與服務器通信來申請顯示區域, 接收鼠標和鍵盤事件??蛻艨梢灾苯釉L問所分配的顯示區域, 以便為用戶提供GUI 服務。服務器和客戶通過共享內存的方式來傳遞所有分配顯示區域上的信息。

基于Qt的嵌入式GUI系統的特點及實現方法

服務器:服務器維護著一組區域, 當窗口被創建、移動、改變大小和破壞時, 通過這組區域來改變每個客戶的申請。該區域存放在共享內存中, 在執行繪圖操作時, 客戶可以從中讀取信息; 客戶:嵌入式Qt 為客戶提供的API 與標準的Qt API 是一致的。當Qt/E 客戶使用Qt API 畫線時, Qt/E 庫直接訪問顯存, 完成畫線工作。嵌入式Qt 客戶庫還負責處理所有的繪畫操作, 另外, 他還處理那些定制的窗口裝飾(如標題條等)。

3.1.3 Qt/E 圖形引擎的實現

Qt/E 的底層圖形引擎基于幀緩沖(frame buffer)。幀緩沖是標準顯示設備驅動接口, 使用MMAP 系統將幀緩存映射到應用程序虛擬內存空間, 這樣應用程序可以訪問它。

幀緩沖驅動程序的實現分為兩個方面, 一方面是LCD 等相關硬件及緩存的初始化, 包括圖形在緩沖區的創建和設置DMA 通道; 另外一方面是對畫面緩沖區的讀寫, read、write 及lseek 等系統調用接口可以調用驅動程序的讀寫函數。至于將畫面緩沖區的內容輸出到LCD 顯示屏上, 則由硬件自動完成。

當設置DMA 通道和畫面緩沖區后, DMA 開始正常工作并將緩沖區中的內容不斷發送到LCD 上, 這個過程基于DMA 對于LCD 的不斷刷新。幀緩沖驅動程序則將數據寫入幀緩存中, 這通過映射MMAP 來實現。

在Qt/E 中, QScreen 類為抽象出的底層顯示設備基類, 其中聲明了對于顯示設備的基本描述和操作方式, 如打開、關閉、獲得顯示能力、創建GFX 操作對象等。另外一個重要的基類是QGFX 類。該類抽象出對于顯示設備的具體操作接口(圖形設備環境), 如選擇畫刷、畫線、畫矩形、alpha 操作等。以上兩個基類是Qt/E 圖形引擎的底層抽象, 其中許多函數是虛函數。當具體的顯示設備(如具體的幀緩沖設備和虛擬幀緩沖設備)從其派生類時, 這些派生類會繼承并重載基類中的虛函數來實現。

3.2 Qt 系統的信號與槽(Signal and Slot)機制

信號/槽是一種高級接口, 應用于對象之間的通信, 是Qt 的核心特性, 也是Qt 區別于其他工具包的重要地方。信號/槽是Qt 自行定義的一種通信機制, 獨立與標準的C/C++語言, 因此要正確的處理信號和槽, 必須借助于一個稱為MOC(Meta ObjectCompiler)的Qt 工具, 該工具是一個C++預處理程序, 它為高層次的事件處理自動生成所需要的附加代碼。

Qt 中使用信號/槽機制替代原始回調和消息映射機制。當一個特定事件發生的時候, 一個信號被發射。Qt 的窗口部件有很多預定義的信號, 但是程序員總是可以通過繼承來加入自定義的信號。槽就是一個可以被調用處理特定信號的函數。Qt 的窗口部件有很多預定義的槽, 但是通常的習慣是加入程序員自己的槽, 這樣就可以處理自己所感興趣的信號。

所有從QObject 或其子類派生的類都能夠包含信號和槽。

當對象改變其狀態時, 信號就由該對象發射出去, 這就是對象所要做的全部事情。它不知道另一端是誰在接收這個信號, 這就是真正的信息封裝, 它確保對象被當作一個真正的軟件組件來使用。槽用于接收信號, 但它們是普通的對象成員函數。

一個槽并不知道是否有任何信號與自己相連接。而且, 對象并不了解具體的通信機制, 這樣就可以相對容易地開發出代碼可高重用的類。

多個信號可以連接一個槽, 一個信號也可以連接多個槽,甚至一個信號與另外一個信號相連接也是可能的, 這時無論第一個信號什么時候發射系統都將立刻發射第二個信號, 如圖3所示??傊?信號與槽構造了一個強大的部件編程機制。

基于Qt的嵌入式GUI系統的特點及實現方法

4 Qt /E 的移植

在PC 上基于Qt/X11 和qvfb 的應用程序調試通過以后就可以將應用程序軟件移植到目標平臺上, 但前提是要保證framebuffer、觸摸屏等驅動程序的正常運行。Qt/E 移植過程如下:

1) 交叉工具鏈的安裝。

本文選用的交叉工具鏈是arm- linux- gcc 系列。安裝包為:

cross- 2.95.3.tar.bz2 將其拷貝到某個目錄下, 依次執行如下命令:

tar - jxvf cross- 2.95.3.tar.bz2這個工具鏈應該安裝的路徑是:/usr/local/arm/2.95.3(或者可以通過查看GCC 版本號, 可以得到一些信息, 從版本信息中可以看到"- prefix=…… ", 這就是GCC 安裝的路徑, 它是在GCC編譯前通過prefix 選項配置的)。

¥ mkdir - p /usr/local/arm

¥mv ./2.95.3 /usr/local/arm

然后, 在環境變量PATH 中添加路徑, 就可以直接使用arm- linux- gcc 命令了。

¥export PATH=/usr/local/arm/2.95.3/bin:$PATH

2) 交叉編譯Qt/E 庫安裝完交叉工具鏈之后, 需要對Qt/E 軟件包進行交叉編譯。將Qt/E 的源代碼拷貝到另外一個目錄下, 依次執行如下命令序列:

tar xfz qt- embedded- free- 3.2.1.tar.gz

cd qt- embedded- free- 3.2.1

export QTDIR=¥PWD

export QTEDIR=¥QTDIR

export PATH=¥QTDIR/bin:¥PATH

export LD_LIBRARY_PATH = ¥QTDIR/lib: ¥LD_LIBRARY_

PATH

export PATH=/usr/local/arm/2.95.3/bin:¥PATH

./configure - embedded arm - thread

Qt/E 的配置選項可以參考。/configure –help.其中比較關鍵的是- embeddded arm 表示配置為目標板為ARM 的嵌入式用途, 在編譯過程中會進行多級優化以減小體積, 提高效率。

3) 交叉編譯Qt/E 應用程序。

有了交叉工具鏈以及經過交叉編譯的Qt/E 庫之后, 就可以將驅動程序或應用程序進行編譯, 然后發布到ARM平臺上。

首先, 編寫項目工程文件。pro, 然后用qmake 工具生成Makefile 文件, 最后調用Make 指令編譯、鏈接即可。這個過程中, 在生成Makefile 文件之前, 需要修改環境變量使其指向交叉編譯后的Qt/E 庫所在目錄。最終生成ARM平臺目標代碼,即可在目標平臺上運行測試。

5 總結

嵌入式產品的廣泛應用帶動了圖形用戶界面(GUI)的迅速發展, 嵌入式系統需要一個高性能、高可靠的GUI 支持。Qt/E 延續了Qt 在桌面系統的所有功能, 豐富的API 接口和基于組件的編程模型使得嵌入式Linux 系統中的應用程序開發更加便捷。由于Qt/E 本身面向高端的手持設備和移動設備, 將成為未來嵌入式系統的主流GUI.

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5086

    文章

    19140

    瀏覽量

    305865
  • Linux
    +關注

    關注

    87

    文章

    11313

    瀏覽量

    209748
  • WINDOWS
    +關注

    關注

    4

    文章

    3552

    瀏覽量

    88824
收藏 人收藏

    評論

    相關推薦

    七大嵌入式GUI盤點

    嵌入式圖形用戶界面(GUI)是一種為嵌入式系統設計的用戶界面,它可以讓用戶通過圖形化的方式與設備進行交互。以下是對七種嵌入式
    發表于 09-02 10:58

    嵌入式GUI系統特點是什么?

    的GU I因嵌入式設備對資源的嚴格要求顯得過于龐大,而不適合嵌入式系統[6]。與普通環境下的GUI 系統相比較.
    發表于 08-14 07:52

    嵌入式linux系統GUI實現方法是什么?

    嵌入式linux操作系統的快速發展,迫切需求一種簡潔的人機交互界面,為此,本文介紹了如何在FrameBuffer基礎上設計自己的嵌入式GUI的簡單
    發表于 03-09 07:16

    一種嵌入式GUI軟件結構實現方案

    綜合比較了嵌入式GUI的幾種實現方式,結合嵌入式系統特點,研究了
    發表于 02-21 11:36 ?24次下載

    嵌入式Linux系統的移植研究

    介紹嵌入式系統嵌入式系統中的GUI , 詳細說明三種常見的嵌入式
    發表于 04-24 10:43 ?23次下載

    嵌入式Linux系統GUI系統的研究與移植1

    針對嵌入式Linux 系統中幾種常見的GUI(Graphic User Interface) 系統, 討論嵌入式
    發表于 05-16 14:34 ?6次下載

    嵌入式單窗口GUI系統的設計與實現

    將圖形用戶界面(GUI)系統和操作系統(OS)進行類比,提出了一種新的嵌入式GUI 系統設計
    發表于 07-30 10:00 ?21次下載

    基于Linux的嵌入式GUI研究與應用

    本文簡要闡述了Linux 在嵌入式系統上的實現方法,結合對嵌入式GUI
    發表于 08-05 08:24 ?34次下載

    基于Linux的輕量級嵌入式GUI系統實現

    本文介紹了嵌入式圖形用戶界面(GUI)的特點、發展概況以及嵌入式圖形用戶界的實現方法。針對開發自
    發表于 08-31 11:52 ?23次下載

    基于Qt4的嵌入式點菜系統的設計與實現

    現代信息化產品越來越智能化,越來越多的嵌入式產品需要具有完美的操作界面和對數據的存儲功能。本文介紹了嵌入式電子點菜系統系統結構;敘述了嵌入式
    發表于 12-23 16:13 ?90次下載

    基于嵌入式Qt的樓宇對講系統GUI平臺設計

    提出了嵌入式樓宇對講的GUI實現和流程。文章還對嵌入式Linux的移植做了論述,對樓宇對講系統涉及底層事件和軟件構架進行分析,完成了樓宇對講
    發表于 01-13 15:33 ?95次下載
    基于<b class='flag-5'>嵌入式</b><b class='flag-5'>Qt</b>的樓宇對講<b class='flag-5'>系統</b><b class='flag-5'>GUI</b>平臺設計

    基于Qt嵌入式Linux通訊簿程序設計

      摘 要: 隨著嵌入式系統的發展,在Linux 下使用Qt 開發嵌入式應用程序是嵌入式圖形用戶界面(
    發表于 11-23 11:31 ?3612次閱讀

    Qt圖形編程基礎之嵌入式GUI

    分享到:標簽:Qt圖形編程 嵌入式GUI Linux 操作系統 12.1 嵌入式GUI簡介 目前
    發表于 10-18 14:45 ?0次下載

    嵌入式linux GUI-Qt解析

    隨著linux系統及基于linux系統嵌入式產品的蓬勃發展,QtQt/Embedded、Qtopia的字樣越來頻繁的出現在我們面前。在華
    發表于 11-01 16:53 ?1次下載

    盤點嵌入式的那些常見GUI:emWin、TouchGFX、MiniGUI、Qt

    盤點嵌入式那些常見的GUI:emWin、TouchGFX、MiniGUI、Qt
    的頭像 發表于 02-05 12:38 ?9644次閱讀
    主站蜘蛛池模板: 亚洲精品免播放器在线观看| 亚洲AV无码乱码A片无码蜜桃| 国产精品亚欧美一区二区三区| tube69hdxxxx日本| 19十主播福利视频| 在线观看国产亚洲| 约艺术院校96年清纯白嫩| 一二三四中文字幕在线看| 亚洲一区乱码电影在线| 亚洲一区免费观看| 这里只有精品在线视频| 自慰弄湿白丝袜| 97免费人妻在线观看| 99精品国产电影| xxx日本免费| 俄罗斯xxxxxbbbbb| 国产精品99久久久久久宅男AV| 国产精品99| 国产亚洲人成网站在线观看播放 | 寂寞少妇直播| 娇小老少配xxxxx| 久久亚洲欧美国产综合| 乱码AV午夜噜噜噜噜| 欧美高跟镣铐bdsm视频| 日本久久中文字幕| 忘忧草在线| 亚洲天堂视频网站| 2017最新伦理伦理片67| FREECHINESE东北女人真爽| 大香伊蕉在人线国产97| 国产剧果冻传媒星空在线观看| 黄页网站免费视频大全9| 久久婷婷久久一区二区三区 | 在线观看日本污污ww网站| 总攻催眠受的高h巨肉np| mxgs-877痉挛媚药按摩| 国产高清视频免费最新在线| 含羞草免费完整视频在线观看 | 日韩AV无码一区二区三区不卡毛片| 四虎国产精品高清在线观看| 亚洲国产成人在线视频|