亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Qt的嵌入式GUI開發(fā)平臺的搭建

        2010-07-25 08:43:54彭均鍵史步海劉洋
        微型電腦應(yīng)用 2010年2期
        關(guān)鍵詞:環(huán)境變量開發(fā)板觸摸屏

        彭均鍵,史步海,劉洋

        0 引言

        GUI的廣泛應(yīng)用是當今計算機發(fā)展的重大成就之一,它極大地方便了非專業(yè)用戶的使用。而嵌入式 GUI本身具有著輕型、占用資源少、高性能、高可靠性、便于移植、可配置等特點,具有強大的發(fā)展?jié)摿ΑW鳛橹髁髦坏腖inux嵌入式系統(tǒng),主要的 GUI開發(fā)應(yīng)用軟件包括 GTK(GIMP Toolkit)、Qt和wxWidgets這3大GUI框架。其中Qt是挪威的 Trolltech公司的旗艦產(chǎn)品,作為跨平臺的應(yīng)用程序框架,是開源左面系統(tǒng)KDE的基石。因此,本文將介紹以此為基礎(chǔ)的嵌入式 GUI開發(fā)平臺的搭建,并且結(jié)合深圳優(yōu)龍公司所提供的FS2410DEV開發(fā)套件進行詳細講解。

        1 開發(fā)平臺的搭建

        1.1 基于Qt的嵌入式GUI開發(fā)平臺搭建的主要流程

        首先在進行開發(fā)的PC機上建立Linux編譯環(huán)境,然后根據(jù)目標機的硬件總類對Qt應(yīng)用程序源碼包進行定制,進而交叉編譯,生成相關(guān)的函數(shù)庫。接著就是制作根文件系統(tǒng),下載到目標板中。至此,平臺的搭建工作就算完成。

        1.2 操作系統(tǒng)的選擇與安裝

        為了在用于開發(fā)的PC主機上得到Linux的開發(fā)環(huán)境,我們選擇在Windows操作系統(tǒng)中安裝VMware虛擬機軟件,再在其中安裝我們需要的Linux操作系統(tǒng)。使用虛擬機的一大好處是,當在Linux因為不熟悉而遇到問題的時候,可以很容易的回到 Windows中尋求解決方案,避免了在雙系統(tǒng)中來回重啟切換的麻煩。虛擬機的版本盡量選擇當前的最新版,因為Linux系統(tǒng)的發(fā)展迅速,如果安裝在舊版的虛擬機當中,不能保證有很好的兼容性,有關(guān)VMware虛擬機軟件的信息,可以登陸 http://www.vmware.com/進行了解。虛擬機安裝完成之后,就可以開始安裝Linux操作系統(tǒng)了,比較常見的版本有Red Hat Linux、Fedora Core、Ubuntu、SUSE Linux等等,這里我們采用的是Fedora Core 7。

        1.3 Qt應(yīng)用開發(fā)軟件的編譯

        要進行Qt應(yīng)用程序的開發(fā),需要qt-x11-free-3.3.8.tar.gz和qt-embdedded-free-3.3.8.tar.gz,這兩個源碼包,可以登陸http://www.qtopia.org.cn/下載。版本可以自己選擇,但兩者最好保持一致。此外,還需要一個交叉編譯器,這里選用的是arm-linux-gcc-3.4.1.tar.gz編譯器。

        在下載完上述3個源碼包后,把它們放在同一個目錄下面就可以開始編譯了。

        第一步,首先是解壓安裝包并設(shè)置環(huán)境變量,用到的命令如下:

        對于交叉編譯器arm-linux-gcc-3.4.1來說,只需要解壓并設(shè)置環(huán)境變量即可使用,不需要對其進行編譯,而上述命令中把解壓出來的 Qt/Embedded目錄改名成"qt-embedded-host",是為了區(qū)分下面要講到的交叉編譯。上述環(huán)境變量的設(shè)置是非常重要的,因為它關(guān)系到能否正確的安裝及編譯這些安裝包。

        第二步,下面開始編譯qt-x11安裝包,命令如下:

        配置參數(shù)-no-xft是指本次編譯不支持xft,xft主要是為X程序提供了一個客戶端的API,如果不把這一項支持去掉,make的過程中會因為找不到相關(guān)的頭文件而出錯。在這里,我們編譯qt-x11的原因就是為了接下來得到里面的qvfb工具。

        第三步,編譯qvfb,命令如下:

        cd $QTEDIR/tools/qvfb

        make clean

        qmake -o Makefile qvfb.pro

        make

        cp qvfb $QTEDIR/bin/

        這里提到的qvfb是為Qt做的一個虛擬frambuffer的應(yīng)用程序,它的最終目的就是把Qt應(yīng)用程序運行的結(jié)果顯示在qvfb上(實際中是要通過linux的frambuffer驅(qū)動顯示在目標板的 lcd屏上的),并提供鍵盤、鼠標的外設(shè)仿真從而提高研發(fā)時的工作效率。

        第三步,編譯qt-embedded-host,命令如下:

        對于這里的配置選項,可以通過./configure –h命令來查看,根據(jù)自己的需要定制。如果用這一步編譯出來的相關(guān)函數(shù)庫去編譯自己開發(fā)的程序,最后生成的可執(zhí)行文件只能在PC上的 qvfb上運行。這就是為什么要在配置中加上 qvfb的支持,以及在第二步里面拷貝qvfb過來的原因了。

        第四步,交叉編譯Qt/Embedded,這一步就是要根據(jù)開發(fā)板的硬件配置來定制編譯參數(shù),最終生成合適的函數(shù)庫,再對開發(fā)程序進行編譯。下面先退出到一開始存放3個源碼包的目錄,重新解壓qt-embedded-free-3.3.8.tar.gz代碼包并且改名為qt-embedded-target,這個名字表示這個步驟編譯是按照目標板定制的,在這里我們需要用到第三步編譯后生成的兩個工具,分別是 moc和 uic,把它們復(fù)制到qt-embedded-target的bin目錄下。

        如果缺少這兩個工具將會導致編譯出錯,不能生成我們需要的庫文件。另外,由于我們的優(yōu)龍FS2410DEV開發(fā)套件選配的是一個 8寸的液晶觸摸屏,因此在使用 configure命令對makefile進行定制的時候要添加觸摸屏支持。但是在開始定制之前,我們需要根據(jù)觸摸屏的種類,對源碼包里面相關(guān)的源文件進行修改,這樣才能讓我們編譯出來庫文件支持該觸摸屏。否則,觸摸屏就無法使用了。

        需要修改的文件有兩個分別是 qmouselinuxtp_qws.cpp和 qmouselinuxtp_qws.h,這兩個文件所在的目錄是"qt-embedded-target/src/embedded/"。在qmouselinuxtp_qws.cpp文件中查找"/dev/h3600_tsraw"字段并且替換成"/dev/touchscreen/0",這個是開發(fā)板/dev目錄下對應(yīng)的名字;然后在 qmouselinuxtp_qws.h中增加兩個宏定義"#define QT_QWS_IPAQ"和"#define QT_QWS_IPAQ_RAW"。修改完成后,我們就可以開始編譯庫文件了:

        定制時的一個embedded參數(shù)表明了我們的目標板采用的是arm核心處理器,而最后一個參數(shù)則是添加觸摸屏的支持。在定制的時候可以盡可能的把不需要的支持去掉,因為這樣可以縮減庫文件的大小,節(jié)省開發(fā)板上的存儲空間。編譯順利通過以后,就可以得到 lib目錄下的四個庫文件libqte-mt.so、 libqte-mt.so.3、 libqte-mt.so.3.3、libqte-mt.so.3.3.8,其實前 3個都是指向最后一個文件的連接,我們可以通過file命令來查看libqte-mt.so.3.3.8這個庫文件是否是我們需要的在開發(fā)板上跑的庫。另外,在lib目錄下還有一個fonts文件夾,里面包含Qt程序運行時所需要的字體,因此該文件夾也需要添加到根文件系統(tǒng)中。

        1.4 燒寫內(nèi)核和根文件系統(tǒng)

        要開發(fā)板運行起來,需要把內(nèi)核和根文件系統(tǒng)燒寫進去。內(nèi)核,可以使用開發(fā)板自帶的,也可以登陸http://download.chinaunix.net/download/0007000/6156.shtml/下載,然后根據(jù)硬件的實際情況來定制,重新編譯該內(nèi)核,再燒寫到開發(fā)板上。采用新版本的內(nèi)核,可以得到一些新的支持,實現(xiàn)更多的功能。對于根文件系統(tǒng),可以開發(fā)板自帶的作為模板,根據(jù)實際情況裁減,增加自己的庫文件與程序,就可以燒寫到開發(fā)板上,并最終運行了。

        2 基于Qt的嵌入式GUI程序開發(fā)

        2.1 開發(fā)Qt程序的一般流程

        在所有的千其準備工作都順利完成以后,就可以開始根據(jù)用戶的需求來開發(fā)各種各樣的嵌入式 GUI程序了,開發(fā)的主要流程如圖1所示。

        圖1 Qt程序一般開發(fā)流程

        在開發(fā)過程中,其實可以省掉用qvfb工具測試的步驟,因為最終的程序需要交叉編譯才能放到開發(fā)板上運行,但對于界面的設(shè)計,通過qvfb工具進行調(diào)試更為直觀、方便,避免了因為一些小的調(diào)整而來回燒寫根文件系統(tǒng)。在界面的設(shè)計敲定以后,對于一些關(guān)系到其它硬件資源部分的程序的調(diào)試,qvfb工具也就不能滿足了,這時候就需要真正把交叉編譯好的程序下載到開發(fā)板上進行運行調(diào)試了。

        最后值得注意的是,在利用之前的qt-embedded-host和qt-embedded-target里面的函數(shù)庫,對應(yīng)用程序代碼進行編譯之前,必須先設(shè)置好PATH、QTDIR、LD_LIBRARY_PATH等相應(yīng)的環(huán)境變量。

        2.2 "hello world"實例

        下面通過Qt/Embedded本身自帶的"hello world"例子,演示一個Qt界面程序分別在qvfb和開發(fā)板上運行的情況。首先是在qvfb上運行,先把編譯host程序的環(huán)境變量設(shè)置好,然后進入qt-embedded-host中的example目錄,再進入hello文件夾,該例子的源程序和可執(zhí)行文件都在這個文件夾中。接著先啟動 qvfb,再運行可執(zhí)行文件hello。運行后的結(jié)果如圖2所示:

        圖2 "hello"在qvfb上運行

        接下來就是把文件放到跟文件系統(tǒng),燒寫在板上運行,這里用到的是qt-embedded-target的可執(zhí)行文件。假設(shè)Qt的交叉編譯庫放在根文件系統(tǒng)的/usr/lib目錄下,程序的可執(zhí)行文件放在了根目錄下,然后就可以用開發(fā)板自帶的DNW工具用命令行登陸到板上,設(shè)置一下環(huán)境變量:

        然后就可以運行根目錄下的可執(zhí)行文件"hello"了,運行結(jié)果如圖3所示。

        圖3 "hello"在開發(fā)板上運行

        3 結(jié)束語

        本文講述了如何利用Qt這款GUI開發(fā)軟件,在PC機上搭建一個嵌入式的 GUI開發(fā)平臺,并且結(jié)合優(yōu)龍公司的FS2410DEV(v6.0)開發(fā)套件給出了實際例子。對于嵌入式GUI開發(fā)來說,雖然應(yīng)用程序的代碼編寫直接關(guān)系到一個工程的成功與否,但在編寫代碼之前,開發(fā)環(huán)境的搭建往往更為重要,只有在有了一個完好的開發(fā)平臺以后,才可以真正開始應(yīng)用程序的開發(fā)。

        另外,以上所采用的Qt/Embedded版本是3.3.8,在實際的開發(fā)過程中,會遇到有極為少數(shù)的類,例如"QTextEdit",能夠編譯生成可執(zhí)行文件,并且在qvfb上成功運行,但下載到開發(fā)板上卻不能顯示,同時也沒有任何的錯誤信息。通過試驗可以發(fā)現(xiàn),如果采用 Qt/Embedded4.0以上的版本,這些在3.3.8里面不能使用的類,也可以在開發(fā)板上正確顯示。因此,在開發(fā)板的性能允許的情況下,應(yīng)該使用版本較新的Qt軟件來進行開發(fā)平臺的搭建,以獲得最好的效果。

        本文作者創(chuàng)新點:文中以Qt/Embedded這種國內(nèi)外比較流行的嵌入式 GUI軟件作為研究對象,結(jié)合優(yōu)龍公司的FS2410DEV(v6.0)開發(fā)套件,講述了如何搭建一個完整的Qt嵌入式GUI開發(fā)環(huán)境,并列舉了一個具體的運行例子。在開發(fā)平臺搭建完成以后,就可以十分便利的讓廣大用戶在此基礎(chǔ)上進行各種各樣的嵌入式GUI開發(fā)。

        [1] 段鵬,金敏.嵌入式Linux組態(tài)軟件圖形界面設(shè)計實現(xiàn)[J] .微計算機信息,2008,(5): 50,54-55.

        [2] 孫瓊.嵌入式Linux應(yīng)用開發(fā)詳解[M] .北京:人民郵電出版社,2006:107-124.

        [3] 尤盈盈,孟利民. 構(gòu)建嵌入式Linux交叉編譯環(huán)境[J] .計算機與數(shù)字工程,2006,34(6):31-33.

        [4] 何劍鋒,鄔文彪等.嵌入式Linux系統(tǒng)的Qt/Embedded圖形界面開發(fā)[J] .電子工程師,2007,33(7):46-48.

        [5] 張方輝,王建群.Qt/Embedded在嵌入式Linux上的移植[J] .計算機技術(shù)與發(fā)展,2006,16(7):65-67.

        [6] 陳文星,張輝宜.嵌入式 Linux操作系統(tǒng)的特性[J] .計算機技術(shù)與發(fā)展,2006,16(3):21-24.

        猜你喜歡
        環(huán)境變量開發(fā)板觸摸屏
        基于最大熵模型的云南思茅松潛在分布區(qū)
        從桌面右鍵菜單調(diào)用環(huán)境變量選項
        PLC和觸摸屏在衛(wèi)生間控制系統(tǒng)的應(yīng)用
        徹底弄懂Windows 10環(huán)境變量
        皮膚“長”出觸摸屏
        Microchip最新推出兩款PIC32 Curiosity開發(fā)板
        淺析單片機開發(fā)板的設(shè)計與制作
        電子制作(2017年22期)2017-02-02 07:10:14
        基于三階段DEA—Malmquist模型的中國省域城鎮(zhèn)化效率測度及其收斂分析
        Mouser為您呈上開發(fā)關(guān)鍵之STMicroelectronics Nucleo開發(fā)板
        Arduino和Atmel發(fā)布Arduino Zero開發(fā)板
        欧美黑人群一交| 亚洲中文字幕亚洲中文| 国产自拍91精品视频| 内射干少妇亚洲69xxx| 色婷婷久久综合中文久久蜜桃av | 熟妇熟女乱妇乱女网站| 久久不见久久见免费视频7| 在线观看av国产自拍| 亚洲一区二区三区精彩视频| 国产精品亚洲专区无码不卡| 一区二区三区在线 | 欧| 久久99国产伦精品免费| 国产精品女人一区二区三区 | 好看的国内自拍三级网站| 最新中文字幕一区二区| 亚洲女初尝黑人巨高清| 亚洲天堂免费视频| 国产精品不卡免费版在线观看| 亚洲最大免费福利视频网| 中文字幕在线亚洲日韩6页| 亚洲av日韩av综合aⅴxxx| 手机在线观看成年人视频| 女人无遮挡裸交性做爰| 国产熟妇人妻精品一区二区动漫| 欧美高清视频一区| 国产超碰在线91观看| 亚洲色精品三区二区一区| 精品成人乱色一区二区| 久久久久亚洲AV无码专区一区| 三上悠亚亚洲精品一区| 一二三四日本中文在线| 日韩高清毛片| 一本色道久久88综合亚精品| 欧美大片va欧美在线播放| 午夜dj在线观看免费视频 | 完整版免费av片| 越南女子杂交内射bbwbbw| 四虎成人精品国产永久免费| 亚洲国产av一区二区三区天堂| 超级碰碰色偷偷免费视频| 成年女人A级毛片免|