<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于ARM LINUX的嵌入式GUI的研究和移植

          基于ARM LINUX的嵌入式GUI的研究和移植

          作者: 時(shí)間:2012-04-23 來(lái)源:網(wǎng)絡(luò) 收藏

          QT/Embedded和Qtopia

          QT/Embedded是著名的QT庫(kù)開(kāi)發(fā)商TrollTech開(kāi)發(fā)的framebuffer、面向系統(tǒng)的QT版本。它的特點(diǎn)主要有界面美觀、色彩配比好,使用與QT/Windows和QT/X11完全一致的API接口,許多QT的程序可以非常方便地系統(tǒng);同時(shí)它具有豐富的模塊,用戶(hù)可以根據(jù)需要選擇QT/Embedded的特性集合。Qtopia是TrollTech專(zhuān)門(mén)為Linux設(shè)備所定制終端用戶(hù)平臺(tái),它包括了Qtopia庫(kù)和Qtopia的服務(wù)器及客戶(hù)端應(yīng)用程序。

          QT/Embedded和Qtopia的結(jié)構(gòu)如圖2所示。QT/Embed2ded實(shí)現(xiàn)了對(duì)下層輸入設(shè)備的驅(qū)動(dòng)和底層圖形接口以及各基類(lèi)和API。Qtopia也是以客戶(hù)/服務(wù)器的方式,通過(guò)消息機(jī)制來(lái)管理各種應(yīng)用程序。QT的資源相當(dāng)豐富,QTAPI開(kāi)發(fā)的應(yīng)用程序相當(dāng)多,像KDE這種應(yīng)用范圍極廣的也是使用QTAPI開(kāi)發(fā)出來(lái)的;而且OPIE組織也開(kāi)發(fā)了并改進(jìn)了許多專(zhuān)門(mén)基于QT/Embedded上的Qtopia應(yīng)用程序及函數(shù)庫(kù)。

          不過(guò)QT/Embedded對(duì)于系統(tǒng)的資源要求非常高,需要在較大的存儲(chǔ)空間和運(yùn)行空間上才可以運(yùn)行;而且它是基于C++來(lái)實(shí)現(xiàn)的,而這種C++接口對(duì)于嵌入式系統(tǒng)中的某些應(yīng)用來(lái)說(shuō)就顯得比較臃腫;另外如若需要修改QT/Embedded并在商業(yè)產(chǎn)品中發(fā)布,則需要分別購(gòu)買(mǎi)開(kāi)發(fā)授權(quán)及運(yùn)行時(shí)授權(quán),所需費(fèi)用太昂貴。

          基于Linux平臺(tái)的

          編譯環(huán)境的建立

          的編譯通常都是在PC機(jī)上執(zhí)行的,也就是說(shuō),編譯器本身能夠在PC機(jī)上執(zhí)行,同時(shí)編譯源代碼生成的二進(jìn)制文件必須能在目標(biāo)機(jī)上執(zhí)行,這類(lèi)編譯器通常稱(chēng)為交叉編譯器。對(duì)于平臺(tái),我們安裝了cross-arm-binutils-*.i386.rpm、cross-arm-gcc-*.i386.rpm、cross-arm-glibc-*.i386.rpm這三個(gè)包。這些包都可以從網(wǎng)上免費(fèi)獲取,“*”通常代表版本號(hào)。arm-binutils這個(gè)包一般包含了一些針對(duì)平臺(tái)的二進(jìn)制工具,比如arm-STrip、arm-ar等命令;arm-glibc這個(gè)包包含的是標(biāo)準(zhǔn)C的函數(shù)庫(kù)的ARM的版本以及對(duì)應(yīng)的頭文件;arm-gcc中包含的則是生成ARM平臺(tái)代碼的x86上的交叉編譯器。執(zhí)行rpm命令將這些包安裝到PC機(jī)上,若不在系統(tǒng)默認(rèn)搜索目錄下,比如安裝在/opt/cross目錄下,則必須將/opt/cross/bin目錄加到系統(tǒng)的PATH環(huán)境變量中,這樣在每次編譯時(shí)系統(tǒng)才能找得到編譯器。另外需要注意的是,編譯時(shí)所用的函數(shù)庫(kù)版本要與目標(biāo)版上運(yùn)行時(shí)所用的函數(shù)庫(kù)版本一致。經(jīng)過(guò)上述步驟,就已經(jīng)建立了交叉編譯環(huán)境,接下來(lái)的就是選擇或修改的編譯選項(xiàng),從而生成所需要的GUI系統(tǒng)。

          Microwindows的

          Microwindows的定制和編譯主要是通過(guò)修改它源程序根目錄下的cONfig這個(gè)文件中的選項(xiàng)來(lái)實(shí)現(xiàn),而在configs這個(gè)目錄下已經(jīng)有一些針對(duì)不同平臺(tái)的config文件,若目標(biāo)平臺(tái)與之定義的相符,可直接將其拷貝到根目錄下覆蓋掉原有的config文件,然后輸入命令make來(lái)開(kāi)始編譯。另外還可以執(zhí)行根目錄下的xconfigure文件,它提供了一個(gè)可視化的窗口來(lái)方便用戶(hù)進(jìn)行編譯選項(xiàng)配置。下面介紹一下其中主要的一些選項(xiàng):

          目標(biāo)平臺(tái)選項(xiàng)。ARCH表示目標(biāo)機(jī)的平臺(tái),比如ARCH=-ARM,BIGENDIAN表示目標(biāo)平臺(tái)是否為大數(shù)端;

          圖像支持選項(xiàng)。HAVE-BMP-SUPPORT=Y、HAVEJPEG-SUPPORT=Y兩項(xiàng)表示對(duì)BMP和JPEG格式圖像的支持(還有其它格式選項(xiàng))。設(shè)置JPEG圖像選項(xiàng)時(shí)必須給出外部jpeg解壓縮庫(kù)的位置,例如LIBJPEG=/usr/lib/libjpeg.a;

          字體支持選項(xiàng)。HAVE-FREETYPE-SUPPORT=Y、HAVE-T1LIB-SUPPORT=Y表示支持TrueType和AdobeType1字體,這些庫(kù)也必須預(yù)先編譯并在配置文件中指定其位置,Microwindows的網(wǎng)站上提供了許多字庫(kù)函數(shù)的下載。另外,Microwindows還提供了中文BIG5、GB2312以及日文和韓文的支持;

          輸出顯示選項(xiàng)。FRAMEBUFFER=Y表示使用Linux上的framebuffer來(lái)實(shí)現(xiàn)顯示,當(dāng)然Microwindows也支持X11顯示;

          輸入設(shè)備選項(xiàng)。Microwindows提供了一系列的鼠標(biāo)(包括觸摸屏)和鍵盤(pán)的支持,可以根據(jù)不同的系統(tǒng)選擇適當(dāng)?shù)倪x項(xiàng)。

          配置完成后,執(zhí)行make命令開(kāi)始編譯。編譯完成后,將生成的庫(kù)以及可執(zhí)行文件打包下載到目標(biāo)板上。如果庫(kù)文件沒(méi)有放在目標(biāo)系統(tǒng)的默認(rèn)搜索庫(kù)的路徑中,那么還需將此目錄加到LD-LIBRARY-PATH環(huán)境變量中,然后即可以運(yùn)行nano-X服務(wù)器及各應(yīng)用程序。

          MiniGUI的移植

          下載MiniGUI的庫(kù)文件源代碼包libminigui-3.tar.gz和資源文件包minigui-res-3.tar.gz以及演示程序包mde-3.tar.gz后,將它們分別解壓到各自的目錄下。首先介紹庫(kù)文件的編譯,它的編譯配置主要通過(guò)執(zhí)行源程序根目錄下configure這個(gè)文件,并給它傳遞相關(guān)的參數(shù)來(lái)實(shí)現(xiàn)。比如:CC=arm-linux-gcc./configure———host=i386-linux———target=arm-linux。其中,CC參數(shù)表示所使用的編譯器名,host表示編譯環(huán)境所在的主機(jī)類(lèi)型,target表示編譯生成后目標(biāo)系統(tǒng)的主機(jī)類(lèi)型,當(dāng)前默認(rèn)編譯生成的是MiniGUIThread版本,如果要生成MiniGUILite版本需再加上參數(shù)———enable-lite,更多參數(shù)可以通過(guò)執(zhí)行。/configure-help來(lái)查詢(xún)。在執(zhí)行configure之前,根據(jù)硬件特性可以修改根目錄下的etc目錄下的Minigui-3d.cfg和Minigui-flat.cfg兩個(gè)文件中的選項(xiàng)。比如,如果目標(biāo)系統(tǒng)的framebuffer大小是320X240,每像素占12bits,則將上述兩個(gè)文件中[fbcon]組中的defaultmode的值就應(yīng)設(shè)置為320X240-12bpp。配置完成以后執(zhí)行make命令開(kāi)始編譯,編譯結(jié)束后執(zhí)行makeinstall命令,在/usr/local/lib下面會(huì)生成交叉編譯出來(lái)的動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)文件。其次,資源文件的安裝比較簡(jiǎn)單,解壓以后在其根目錄下有一個(gè)名叫config.linux的文件,修改其中的TOPDIR一項(xiàng),這樣執(zhí)行makeinstall安裝命令以后,所有資源文件會(huì)被安裝到TOPDIR所定義的目錄下的usr/local/lib/minigui下。最后演示程序包的編譯與庫(kù)文件編譯類(lèi)似,也是執(zhí)行其根目錄下的configure文件并傳遞相關(guān)參數(shù),然后執(zhí)行make命令來(lái)編譯。若編譯庫(kù)文件時(shí)選擇———enable-lite參數(shù),由于MiniGUI-Lite采用的是微客戶(hù)端/服務(wù)器架構(gòu),要運(yùn)行應(yīng)用程序必須先啟動(dòng)服務(wù)器程序mginit,然后才能運(yùn)行其它的應(yīng)用程序;若編譯庫(kù)文件時(shí)沒(méi)有添———enable-lite參數(shù),則mginit目錄根本不會(huì)編譯進(jìn)去,演示程序可以直接執(zhí)行。

          17.jpg


          linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂)

          linux相關(guān)文章:linux教程




          關(guān)鍵詞: 研究 移植 GUI 嵌入式 ARM LINUX 基于

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();