无码视频在线观看,99人妻,国产午夜视频,久久久久国产一级毛片高清版新婚

  • 始創(chuàng)于2000年 股票代碼:831685
    咨詢熱線:0371-60135900 注冊(cè)有禮 登錄
    • 掛牌上市企業(yè)
    • 60秒人工響應(yīng)
    • 99.99%連通率
    • 7*24h人工
    • 故障100倍補(bǔ)償
    全部產(chǎn)品
    您的位置: 網(wǎng)站首頁(yè) > 幫助中心>文章內(nèi)容

    嵌入式Linux中Qt/Embedded的應(yīng)用

    發(fā)布時(shí)間:  2012/9/8 16:29:58

    隨著嵌入式Linux應(yīng)用的不斷發(fā)展,嵌入式處理器運(yùn)算能力的不斷增強(qiáng),越來(lái)越多的嵌入式設(shè)備開(kāi)始采用較為復(fù)雜的GUI系統(tǒng),手持設(shè)備中的GUI系統(tǒng)發(fā)展得非常迅速。傳統(tǒng)的GUI系統(tǒng),如Microwindows等,由于項(xiàng)目規(guī)模較小、功能較為薄弱,缺乏等三方軟件開(kāi)發(fā)的支持等諸多原因,在比較高級(jí)的手持或移動(dòng)終端設(shè)備(如PDA、Smart-Phone、車載導(dǎo)航系統(tǒng))中應(yīng)用較少。-
     


      Qt/Embedded是著名的Qt庫(kù)開(kāi)發(fā)商Trolltech公司開(kāi)發(fā)的面向嵌入式系統(tǒng)的Qt版本,開(kāi)發(fā)人員多為KDE項(xiàng)目的核心開(kāi)發(fā)人員。許多基于Qt的X Window程序可以非常方便地移植到Qt/Embedded上,與X11版本的Qt在最大程度上接口兼容,延續(xù)了在X上的強(qiáng)大功能,在底層徹底摒棄了X lib,僅采用framebuffer作為底層圖形接口。Qt/Embedded類庫(kù)完全采用C++封裝。豐富的控件資源和較好的可移植性是Qt/Embedded最為優(yōu)秀的一方面,使用X下的開(kāi)發(fā)工具Qt Designer可以直接開(kāi)發(fā)基于Qt/Embedded的UI(用戶操作接口)界面。越來(lái)越多的第三方軟件公司也開(kāi)始采用Qt/Embedded開(kāi)發(fā)嵌入式Linux下的應(yīng)用軟件。其中非常著名的Qt Palmtop Environment(Qtopia)早期是一個(gè)第三方的開(kāi)源項(xiàng)目,并已經(jīng)成功應(yīng)用于多款高檔PDA。Trolltech公司針對(duì)Smart-Phone中的應(yīng)用需求,于2004年5月底發(fā)布了Qtopia的Phone版本。

      1 Qt/Embedded的實(shí)現(xiàn)技術(shù)基礎(chǔ)分析

      橫向來(lái)看,由于發(fā)布的版權(quán)問(wèn)題,Qt/Embedded采用兩種方式進(jìn)行發(fā)布:在GPL協(xié)議下發(fā)布的free版與專門針對(duì)商業(yè)應(yīng)用的commercial版本。二者除了發(fā)布方式外,在源碼上沒(méi)有任何區(qū)別。縱向看來(lái),當(dāng)前主流的版本為Qtopia的2.x系列與最新的3.0x系列。其中2.0版本系統(tǒng)較多地應(yīng)用于采用Qtopia作為高檔PDA主界面的應(yīng)用中;3.x版本系列則應(yīng)用于功能相對(duì)單一,但需要高級(jí)GUI圖形支持的場(chǎng)合,如Volvo公司的遠(yuǎn)程公交信息系統(tǒng)。圖1為Qt/Embedded的實(shí)現(xiàn)結(jié)構(gòu)。

      3.x版本系列的Qt/Embedded相對(duì)于2.x版本系統(tǒng)增加了許多新的模塊,如SQL數(shù)據(jù)庫(kù)查詢模塊等。幾乎所有2.x版本中原有的類庫(kù),在3.x版本中都得到極大程度的增強(qiáng)。這就極大地縮短了應(yīng)用軟件的開(kāi)發(fā)時(shí)間,擴(kuò)大了Qt/Embedded的應(yīng)用范圍。

      在代碼設(shè)計(jì)上,Qt/Embedded巧妙地利用了C++獨(dú)有的機(jī)制,如繼承、多態(tài)、模板等,具體實(shí)現(xiàn)非常靈活。但其底層代碼由于追求與多種系統(tǒng)、多種硬件的兼容,代碼補(bǔ)丁較多,風(fēng)格稍顯混亂。

      1.1 Qt/Embedded的圖形引擎實(shí)現(xiàn)基礎(chǔ)

      Qt/Embedded的底層圖形引擎基于framebuffer。Framebuffer是在Linux內(nèi)核架構(gòu)版本2.2以后推出的標(biāo)準(zhǔn)顯示設(shè)備驅(qū)動(dòng)接口。采用mmap系統(tǒng)調(diào)用,可以將framebuffer的顯示緩存映射為可連續(xù)訪問(wèn)的一段內(nèi)存儲(chǔ)針。由于目前比較高級(jí)的ARM體系的嵌入式CPU中大多集成了LCD控制模塊,LCD控制模塊一般采用雙DMA控制器組成的專用DMA通道。其中一個(gè)DMA可以自動(dòng)從一個(gè)數(shù)據(jù)結(jié)構(gòu)隊(duì)列中取出并裝入新的參數(shù),直到整個(gè)隊(duì)列中的DMA操作都已完成為止。另外一個(gè)DMA與畫面緩沖區(qū)相關(guān),這部分由兩個(gè)DMA控制器交替執(zhí)行,并每次都自動(dòng)按照預(yù)定的規(guī)則改變參數(shù)。雖然使用了雙DMA,但這兩個(gè)DMA控制器的交替使用對(duì)于CPU來(lái)說(shuō)是不可見(jiàn)的。CPU所獲得的只是由兩個(gè)DMA組成的一個(gè)“通道”而已。

      Framebuffer驅(qū)動(dòng)程序的實(shí)現(xiàn)分為兩個(gè)方面:一方面是對(duì)LCD及其相關(guān)部分的初始化,包括畫在緩沖區(qū)的創(chuàng)建和對(duì)DMA通道的設(shè)置;另外一方面是對(duì)畫面緩沖區(qū)的讀寫,具體到代碼為read、write、lseek等系統(tǒng)調(diào)用接口。至于將畫面緩沖區(qū)的內(nèi)容輸出到LCD顯示屏上,則由硬件自動(dòng)完成。對(duì)于軟件來(lái)說(shuō)是透明的。當(dāng)對(duì)于DMA通道和畫面緩沖區(qū)設(shè)置完成后,DMA開(kāi)始正常工作,并將緩沖區(qū)中的內(nèi)容不斷發(fā)送到LCD上。這個(gè)過(guò)程是基于DMA對(duì)于LCD的不斷刷新的;谠撎匦,framebuffer驅(qū)動(dòng)程序必須將畫面緩沖區(qū)的存儲(chǔ)空間(物理空間)重新映射到一個(gè)不加高緩存和寫緩存的虛擬地址區(qū)間中,這樣能才保證應(yīng)用程序通過(guò)mmap將該緩存映射到用戶空間后,對(duì)于該畫面緩存的寫操作能夠?qū)崟r(shí)的體現(xiàn)在LCD上。

      在Qt/Embedded中,Qscreen類為抽象出的底層顯示設(shè)備基類,其中聲明了對(duì)于顯示設(shè)備的基本描述和操作方式,如打開(kāi)、關(guān)閉、獲得顯示能力、創(chuàng)建GFX操作對(duì)象等。另外一個(gè)重要的基類是QGfx類。該類抽象出對(duì)于顯示設(shè)備的具體操作接口(圖形設(shè)備環(huán)境),如選擇畫刷、畫線、畫矩形、alpha操作等。以上兩個(gè)基類是Qt/Embedded圖形引擎的底層抽象。其中所有具體函數(shù)基本都是虛函數(shù),Qt/Embedded對(duì)于具體的顯示設(shè)備,如Linux的framebuffer、Qt Virtual Framebuffer做的抽象接口類全都由此繼承并重載基類中的虛函數(shù)實(shí)現(xiàn)。圖2為Qt/Embedded中底層圖形引擎實(shí)現(xiàn)結(jié)構(gòu)。

      對(duì)于基本的framebuffer設(shè)備,Qt/Embedded用QlinuxFbScreen來(lái)處理。針對(duì)具體顯示硬件(如Mach卡、Voodoo卡)的加速特性,Qt/Embedded從QlinuxFbScreen和圖形設(shè)備環(huán)境模板類QgfxRaster繼承出相應(yīng)子類,并針對(duì)相應(yīng)硬件重載相關(guān)虛函數(shù)。

      Qt/Embedded在體系上為C/S結(jié)構(gòu),任何一個(gè)Qt/Embedded程序都可以作為系統(tǒng)中唯一的一個(gè)GUI Server存在。當(dāng)應(yīng)用程序首次以系統(tǒng)GUI Server的方式加載時(shí),將建立QWSServer實(shí)體。此時(shí)調(diào)用QWSServer::openDisplay()函數(shù)創(chuàng)建窗體,在QWSServer::openDisplay()中對(duì)QWSDisplay::Data中的init()加以調(diào)用;根據(jù)QgfxDriverFactory實(shí)體中的定義(QLinuxFbScreen)設(shè)置關(guān)鍵的Qscreen指針qt_screen并調(diào)用connect()打開(kāi)顯示設(shè)備(dev/fb0)。在QWSServer中所有對(duì)于顯示設(shè)備的調(diào)用都由qt_screen發(fā)起。至此完成了Qt/Embedded中QWSServer的圖形發(fā)生引擎的創(chuàng)建。當(dāng)系統(tǒng)中建立好GUI Server后,其它需要運(yùn)行的Qt/Embedded程序在加載后采用共享內(nèi)存及有名管道的進(jìn)程通信方式,以同步訪問(wèn)模式獲得對(duì)共享資源framebuffer設(shè)備的訪問(wèn)權(quán)。


     


    本文出自:億恩科技【mszdt.com】

    服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經(jīng)營(yíng)性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經(jīng)營(yíng)性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經(jīng)營(yíng)性ICP/ISP證:贛B2-20080012
  • 服務(wù)器/云主機(jī) 24小時(shí)售后服務(wù)電話:0371-60135900
  • 虛擬主機(jī)/智能建站 24小時(shí)售后服務(wù)電話:0371-60135900
  • 專注服務(wù)器托管17年
    掃掃關(guān)注-微信公眾號(hào)
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權(quán)所有  地址:鄭州市高新區(qū)翠竹街1號(hào)總部企業(yè)基地億恩大廈  法律顧問(wèn):河南亞太人律師事務(wù)所郝建鋒、杜慧月律師   京公網(wǎng)安備41019702002023號(hào)
      1
     
     
     
     

    0371-60135900
    7*24小時(shí)客服服務(wù)熱線