新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 嵌入式Linux下Qt/Embedded應用關鍵技術研究

        嵌入式Linux下Qt/Embedded應用關鍵技術研究

        作者: 時間:2012-03-26 來源:網絡 收藏

        隨著后PC時代的到來,的性能有了大幅度的提高,應用范圍也越來越廣,當初的一些簡單的人機交互接口已經無法滿足人們的要求,在中也逐漸出現了圖形用戶界面(Graphic User Interface,GUI),特別是在一些消費類產品中。中的GUI就是在嵌入式系統中為特定的硬件設備或環境而設計的圖形用戶界面系統,由于受到目前嵌入式系統本身特點的影響,并受其發展限制,所以嵌入式系統中的GUI應該有如下特點[1]:

        1)占用的存儲空間以及運行時占用資源少。

        2)運行速度以及響應速度快。

        3)可靠性高。

        4)便于移植和定制。

        有開放的源碼、高效穩定的內核、良好的開發環境以及支持多種硬件平臺等特點,而且由于的可配置性和模塊化,一個內核經過配置和裁減可以只占用幾百K左右的存儲空間,使其在嵌入式系統中也得到廣泛應用[2]。

        QT/是一個用于嵌入式系統的圖形用戶界面系統,能夠高效、穩定地運行于嵌入式 Linux系統下,能為用戶提供可靠的交互功能。

        本文就旨在于對這樣的嵌入式GUI QT/應用中的一些關鍵問題進行研究。

        1 嵌入式Linux操作系統

        嵌入式操作系統目前主要有Vxwork、pSOS、Palm OS、Neculeus 和 Windows CE。但這些專用操作系統都是商業化產品,其價格昂貴,不適合低端嵌入式產品開發。而且,源代碼的封閉性在很大程度上限制了開發者的開發。嵌入式 Linux操作系統彌補了這些不足,Linux操作系統是遵循GPL公約,并且有運行穩定、源碼開放的特點,被認為是未來嵌入式操作系統的最佳選擇。

        2 QT/的特點和結構

        QT/Embedded是著名的QT庫開發商Trolltech公司開發的面向嵌入式系統的版本[3]。許多基于的 X Window程序可以非常方便地移植到/Embedded上,僅采用Framebuffer作為底層圖形接口。Qt/Embedded類庫完全采用 C++封裝。豐富的控件資源和較好的可移植性是Qt/Embedded最為優秀的一方面,使用X下的開發工具Qt Designer可以直接開發基于Qt/Embedded的UI(用戶操作接口)界面。下圖為Qt/Embedded的實現結構。

        圖1 Qt/Embedded的實現結構

        Qt/Embedded在代碼設計上,巧妙地利用了C++的面向對象機制,如繼承、多態、模板等,具體實現非常靈活。

        3 關鍵技術

        3.1 Qt/Embedded的圖形引擎實現

        Qt/Embedded的底層圖形引擎基于Framebuffer。Framebuffer是在Linux內核架構版本2.2以后新推出的標準顯示設備驅動接口。采用mmap系統調用,可以將Framebuffer的顯示緩存映射為可連續訪問的一段內存空間。由于目前比較高級的ARM體系的嵌入式 CPU中大多集成了LCD控制模塊,LCD控制模塊一般采用雙DMA控制器組成的專用DMA通道。其中一個DMA可以自動從一個數據結構隊列中取出并裝入新的參數,直到整個隊列中的DMA操作都已完成為止。另外一個DMA與畫面緩沖區相關。雖然使用了雙DMA,但這兩個DMA控制器的交替使用對于CPU來說是不可見的,CPU所獲得只是由兩個DMA組成的一個通道而已。

        Framebuffer驅動程序的實現分為兩個方面:一方面是對LCD及其相關部分的初始化,包括緩沖區的創建和對DMA通道的設置;另外一方面是對畫面緩沖區的讀寫,有read、write、lseek等系統調用接口。對于將畫面緩沖區的內容輸出到LCD顯示屏上,由硬件自動完成,對于軟件來說是透明的。當對于DMA通道和畫面緩沖區設置完成后,DMA開始正常工作,并將緩沖區中的內容不斷發送到LCD上。這個過程是基于DMA對于LCD的不斷刷新。

        在Qt/Embedded中,Qscreen類是抽象出的底層顯示設備基類,它聲明了對于顯示設備的基本描述和操作方式,如打開、關閉、獲得顯示能力等。另外還有一個重要的基類是QGfx類,此類抽象出對于顯示設備的具體操作接口,如選擇畫刷、畫線、畫矩形等。這兩個基類是Qt/Embedded圖形引擎的底層抽象,其中所有具體函數基本上都是虛函數,Qt/Embedded對于具體的顯示設備,如Linux的Framebuffer、Qt Virtual Framebuffer做的抽象接口類全都由此繼承并重載虛函數實現。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 宁国市| 迭部县| 芦溪县| 清远市| 鄢陵县| 双江| 黄冈市| 克拉玛依市| 华阴市| 栾城县| 汕尾市| 定安县| 轮台县| 奎屯市| 西贡区| 韩城市| 惠州市| 益阳市| 晋江市| 农安县| 红桥区| 遵义县| 望谟县| 长沙县| 海林市| 扎囊县| 盐源县| 上杭县| 方山县| 尼木县| 定陶县| 江华| 信阳市| 长宁区| 弥渡县| 东台市| 玉溪市| 科技| 鄂托克前旗| 南江县| 得荣县|