新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于ARM LINUX的嵌入式GUI的研究和移植

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

        作者: 時間:2012-04-23 來源:網絡 收藏

        QT/Embedded和Qtopia

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

        QT/Embedded和Qtopia的結構如圖2所示。QT/Embed2ded實現了對下層輸入設備的驅動和底層圖形接口以及各基類和API。Qtopia也是以客戶/服務器的方式,通過消息機制來管理各種應用程序。QT的資源相當豐富,QTAPI開發的應用程序相當多,像KDE這種應用范圍極廣的也是使用QTAPI開發出來的;而且OPIE組織也開發了并改進了許多專門基于QT/Embedded上的Qtopia應用程序及函數庫。

        不過QT/Embedded對于系統的資源要求非常高,需要在較大的存儲空間和運行空間上才可以運行;而且它是基于C++來實現的,而這種C++接口對于嵌入式系統中的某些應用來說就顯得比較臃腫;另外如若需要修改QT/Embedded并在商業產品中發布,則需要分別購買開發授權及運行時授權,所需費用太昂貴。

        基于Linux平臺的

        編譯環境的建立

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

        Microwindows的

        Microwindows的定制和編譯主要是通過修改它源程序根目錄下的cONfig這個文件中的選項來實現,而在configs這個目錄下已經有一些針對不同平臺的config文件,若目標平臺與之定義的相符,可直接將其拷貝到根目錄下覆蓋掉原有的config文件,然后輸入命令make來開始編譯。另外還可以執行根目錄下的xconfigure文件,它提供了一個可視化的窗口來方便用戶進行編譯選項配置。下面介紹一下其中主要的一些選項:

        目標平臺選項。ARCH表示目標機的平臺,比如ARCH=-ARM,BIGENDIAN表示目標平臺是否為大數端;

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

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

        輸出顯示選項。FRAMEBUFFER=Y表示使用Linux上的framebuffer來實現顯示,當然Microwindows也支持X11顯示;

        輸入設備選項。Microwindows提供了一系列的鼠標(包括觸摸屏)和鍵盤的支持,可以根據不同的系統選擇適當的選項。

        配置完成后,執行make命令開始編譯。編譯完成后,將生成的庫以及可執行文件打包下載到目標板上。如果庫文件沒有放在目標系統的默認搜索庫的路徑中,那么還需將此目錄加到LD-LIBRARY-PATH環境變量中,然后即可以運行nano-X服務器及各應用程序。

        MiniGUI的移植

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

        17.jpg


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

        linux相關文章:linux教程




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 穆棱市| 灌南县| 区。| 珠海市| 宜阳县| 定边县| 克拉玛依市| 寿光市| 库车县| 阜平县| 若羌县| 吴堡县| 延川县| 海口市| 永吉县| 同仁县| 永嘉县| 白水县| 友谊县| 平利县| 阳城县| 从江县| 泾川县| 秀山| 静安区| 郑州市| 胶州市| 西畴县| 民勤县| 白水县| 聂拉木县| 大兴区| 林西县| 英超| 抚顺县| 乾安县| 墨江| 重庆市| 苍山县| 闽清县| 榆林市|