999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Qt/Embedded在S3C2440平臺上的移植與開發*

2010-03-14 09:04:34代少升
電視技術 2010年10期
關鍵詞:嵌入式

唐 浩,代少升

(重慶郵電大學 信號與信息處理重點實驗室,重慶 400065)

1 引言

21世紀是后計算機時代,人們每天都會接觸很多的嵌入式產品,手機、PDA等手持式信息設備發展迅速。這些設備的關鍵在于人機交互技術的體現,所以一個十分友好的圖形用戶界面(GUI)是必不可少的。

目前嵌入式Linux的主流GUI系統主要有MiniGUI,MicroWindows,OpenGUI,Qt/Embedded 等[1],這些 GUI 在接口定義、體系結構、功能特性等方面存在很大差別。MiniGUI具有良好的軟件架構,通過抽象層將其上層和底層操作系統隔離開來,開發的重點在于窗口系統,但由于支持力量比較薄弱,其維護和再開發成本不可預計。MicroWindows以較小的資源消耗、通用的幀緩沖(FrameBuffer)技術、靈活的分層設計模式和豐富的API支持等特點獲得廣泛的關注,但其圖形引擎無任何硬件加速能力,算法低效,代碼質量較差。OpenGUI基于用匯編語言實現的X86圖形內核,提供了高層的C/C++圖形/窗口接口,它的資源消耗小,但可移植性差,不支持多進程。

Qt/Embedded[2]是一個多平臺的C++圖形用戶界面應用程序框架,易擴展,可移植性好,支持多個GUI平臺的交互開發。從個人消費電子到工業控制設備,Qt/Embedded被廣泛地應用于各種嵌入式產品和設備中。

2 Qt/Embedded的移植與開發

2.1 總體流程

Qt/Embedded是著名的Qt庫開發商Trolletch公司(2008年6月被諾基亞公司收購)開發的圖形化界面開發工具Qt的嵌入式版本。Qt/Embedded采用Server/Client結構,延續了Qt在X上的強大功能,在底層摒棄了Xlib,僅采用FrameBuffer作為底層圖形接口。同時將外部輸入設備抽象為keyboard和mouse輸入事件,底層接口支持鍵盤、鼠標、觸摸屏以及用戶自定義的設備等[3]。

Qt/Embedded的類庫完全采用C++封裝,控件資源豐富,可移植性較好,開放的源碼使得開發人員可以在GPL許可協議下自由地進行嵌入式GUI應用程序的移植與開發。Qt/Embedded移植與開發總體流程如圖1所示。

2.2 系統平臺的介紹

筆者采用廣州友善之臂公司設計的Micro2440開發板作為硬件平臺,該開發板由核心板與底板組成。核心板上集成了三星公司400MHz的微處理器S3C2440,64Mbyte的SDRAM,64Mbyte NAND Flash以及2Mbyte NOR Flash。底板上則集成了一些常規外設接口。在軟件方面,使用Linux-2.6.13穩定內核的操作系統,根文件系統為缺省安裝的文件系統,采用基于arm-linuxgcc-3.4.1的函數庫。

整個系統軟件由引導裝載程序(U-Boot)、設備驅動(包括幀緩沖)、嵌入式 Linux內核、文件系統(YAFFS)以及基于 Qt/Embedded的應用程序組成[4]。系統平臺結構如圖2所示。

3 Qt/Embedded開發環境的搭建及其移植[5-7]

搭建編譯平臺是嵌入式GUI的必要工作。Qt/Embedded的軟件開發環境主要包括嵌入式Linux操作系統、軟件開發工具鏈以及相關源碼包。本文的開發環境是在個人PC上安裝VMware Workstation 6.5.1和Red Hat Linux 9.0操作系統,內核版本是2.6.13,與目標板上運行的版本一致。采用的交叉編譯器為armlinux-gcc-3.4.1,源碼包為qt-embedded-linux-opensource-src-4.5.3和 qt-x11-opensource-src-4.5.3。

3.1 X11虛擬環境搭建

在PC機上編譯好的qt-x11可以生成Qt開發工具,如用戶界面編譯器(UIC)與虛擬幀緩沖服務器(QVFB),作為交叉編譯環境的支持。虛擬環境搭建過程如下:

1)在PC平臺文件系統中建立工具包目錄,將源碼包分別用tar命令解壓并放置其中。

2)進入qt-x11目錄,在終端鍵入./configure命令對qt-x11安裝環境進行配置,根據源碼包配置選項和系統情況生成makefile文件,為make做準備。

3)配置完成以后,鍵入make命令,從makefile中讀取指令進行編譯,用來創建庫文件,編譯例程和指南,需要等待一段比較長的時間。

4)編譯完成之后,進入tools目錄下的qvfb目錄,鍵入make對其進行編譯。最后回到qt-x11目錄,鍵入make install進行安裝。

5)make install完成之后,會在/usr/local目錄下生成一個Trolltech目錄,這就是qt-x11-opensource-src-4.5.3安裝后所在目錄。將/usr/local/qt/qt-x11-opensource-src-4.5.3/tools/qvfb目錄下的qvfb相關文件拷貝到/usr/local/Trolltech/Qt-4.5.3/bin目錄下。至此X11環境就搭建好了。

3.2 交叉編譯環境實現

通過qt-x11提供的庫和開發工具,可以進行Qt應用程序的開發,但是若需要在目標板上運行該程序,則還需使用qt-embedded庫對該程序進行交叉編譯,才能得到在ARM平臺上運行的可執行程序。這就需要搭建qt-embedded交叉編譯環境,其實現過程如下:

1)安裝交叉編譯器。工具包目錄中鍵入tar xvzf arm-linux-gcc-3.4.1.tgz-C/,執行該命令將arm-linuxgcc安裝到/usr/local/arm/3.4.1。然后設置路徑變量,修改/etc/profile文件,在最后一行添加export PATH=/usr/local/arm/3.4.1/bin:$PATH。

2)進入qt-embedded目錄,鍵入./configure-embedded arm-xplatform qws/linux-arm-g++-depths 4,8,16,32,配置參數指定 ARM 平臺,并支持 4,8,16,32 位的顯示顏色深度。

3)使用make命令進行編譯,用來生成qt-embedded庫。

4)使用make install進行安裝。完成后,qt-embe-dded被安裝在/usr/local/Trolltech/QtEmbedded-4.5.3目錄下。

3.3 移植Qt/Embedded到S3C2440

Qt/Embedded應用程序在S3C2440平臺上的運行需要有qt-embedded庫支持。在開發板的根目錄下新建如下目錄:

/usr/local/Trolltech/QtEmbedded-4.5.3/bin//安裝運行庫文件

/usr/local/Trolltech/QtEmbedded-4.5.3/lib/fonts//安裝字體庫文件

把PC上對應目錄下交叉編譯后生成的qtembedded庫文件和字體文件,分別拷貝到上述目錄中。注意,運行庫文件一般只拷貝libQtGui.so.4,libts-0.0.so.0,libQtCore.so.4,libQtNetwork.so.4,如果文件是到共享庫的鏈接文件,則把該共享庫也要拷貝上,字體庫則需拷貝一種就可以了。設置開發板環境變量:

export QTDIR=/usr/local/Trolltech/QtEmbbed-4.5.3

export QPEDIR=/usr/local/Trolltech/QtEmbedded-4.5.3

export PATH=$QTDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTDIR/lib:/usr/local/lib:$LD_LIBRARY_PATH

4 Qt/Embedded應用程序開發實例

Qt是一個創建GUI程序的C++類庫,編寫Qt應用程序的主要工作是基于已有的Qt類去編寫用戶類。筆者以發布一個圖片瀏覽工具(ImgViewer)為例,簡單地介紹Qt/Embedded應用程序的開發過程。

4.1 Qt/Embedded開發工具

強大的工具支持是進行Qt/Embedded圖形用戶開發的優勢所在。除了前面提到的QVFB和UIC工具外,Qt designer(圖形設計器)工具為GUI窗口組建,提供了一種可視化的設計能力,非常方便高效;qmake工具能為不同平臺的開發項目創建makefile配置文件;編程助手assistant能隨時隨地給編程帶來幫助。

筆者采用Qdevelop4.4.3來編寫Qte程序。Qdevelop是一個跨平臺集成開發環境,完全致力于Qt4的開發。

4.2 Qt/Embedded程序文件編寫

Qt/Embedded源程序一般應該包含以下文件:1個主程序文件(main.cpp)、多個源程序文件(source.cpp)與對應的頭文件(source.h)以及用來生成makefile的項目文件(.pro)。在本次開發中,并沒有使用Qt designer來進行可視化窗口設計,完全借助Qdevelop純代碼進行編寫,這樣能更好地體會Qt/Embedded GUI設計的精髓所在。基本操作步驟如下:

1)編寫頭文件imgviewer.h。在Qdevelop中新建工程imgviewer.pro,并添加頭文件imgviewer.h。頭文件定義了實例中需要用到的各種窗體控件,包括菜單(QMenu)、工具條(QtoolBar)、動作(Qaction)以及各種操作的槽函數(slots)。

2)編寫源文件imgviewer.cpp。源文件中設置了字體,規定了窗口屬性,并且創建了動作、菜單和工具條等一系列的實現函數。這里會接觸到Qt最重要的特性:信號與槽機制(signal&slot)。信號與槽機制提供了任意兩個Qt對象之間的通信機制,信號會在某個特定情況或動作下被觸發,槽是用于接收并處理信號的函數。其常用格式為 bool QObject::connect(Object1,SIGNAL(signal1),Object2,SLOT(slot)),以及與這個函數對應的disconnect函數,可以將信號和槽斷開連接。下面介紹一段簡單的程序,該程序設置了打開單個文件這一動作:

openFileAction=new QAction(QIcon(":/images/openfile.png"),tr("Open"),this);//創建一個 Open 動作,并調用openfile.png圖標,圖標位于資源庫images文件夾下。

openFileAction->setStatusTip(tr("Open File"));//設置該圖標的狀態提示為"Open File"。

connect(openFile-Action,SIGNAL(triggered()),this,SLOT(slotOpenFile()));//連接信號與槽,觸發 openFileAction這一動作時,將進行slotOpenFile()這一過程的處理。

3)編寫主函數main.cpp。Qt/Embedded應用程序應該包含一個主函數,該函數是應用程序的入口點。結合imgviewer.h和imgviewer.cpp,可以看到所有應用程序開發主函數main.cpp編寫的框架結構:

#include"imgviewer.h"

#include

//QApplication包含了Qt圖形化應用程序的各種資源、基本設置、控制流以及事件處理等。若是Qt的非圖形化應用程序,則需包含

4)生成makefile文件及編譯鏈接生成可執行文件。借助qmake工具可以生成makefile文件,實現過程為:qmake-o Makefile imgviewer.pro。然后在命令行下輸入make命令對整個工程進行編譯,就能生成X86架構的二進制文件,這便是QVFB能執行的應用程序。如果再用Qt/Embedded的庫對整個工程進行交叉編譯鏈接,就能得到在S3C2440平臺上運行的可執行文件。

4.3 結果發布及測試

將交叉編譯好的可執行程序imgviewer拷貝進開發板/usr/local/Trolltech/QtEmbedded-4.5.3/bin目錄下,在終端下鍵入./imgviewer,即可運行程序。運行結果見圖3。

5 小結

嵌入式技術的關鍵在于人機交互技術的體現,基于Qt/Embedded的GUI為嵌入式Linux系統用戶提供了良好的使用和交互環境。筆者通過一個簡單的應用程序,對Qt/Embedded在S3C2440平臺下的移植與開發進行了詳細介紹,為類似的GUI程序開發提供了一個參考。

[1]AHN S H,SUL D M,CHOI S C,et al.Implementation of lightweight graphic library builder for embedded system[C]//Proc.The 8th International Conference on Advanced Communication Technology.Phoenix,USA: IEEE Press,2006:166-168.

[2]Trolltech.Online reference documentation[EB/OL].[2010-05-05].http://doc.trolltech.com/.

[3]梅寬勤.基于Qt/Embedded的圖像用戶界面移植[D].上海:復旦大學,2007.

[4]趙拯宇,張雪英,金剛.Qt/Embedded和Qtopia在OMAP5912平臺上的移植及應用[J]. 儀器儀表用戶,2009,16(2):108-110.

[5]孫瓊.嵌入式Linux應用程序開發詳解[M].北京:人民郵電出版社,2006.

[6]成潔,盧紫.Linux窗口程序設計[M].北京:清華大學出版社,2008.

[7]BLANCHETTE J,SUMMERFIELD M.C++GUIQt 4編程[M].2版.閆鋒欣,曾泉人,張志強,譯.北京:電子工業出版社,2008.

猜你喜歡
嵌入式
Focal&Naim同框發布1000系列嵌入式揚聲器及全新Uniti Atmos流媒體一體機
TS系列紅外傳感器在嵌入式控制系統中的應用
電子制作(2019年7期)2019-04-25 13:17:14
基于嵌入式Linux內核的自恢復設計
嵌入式系統通信技術的應用
電子制作(2018年18期)2018-11-14 01:48:16
嵌入式PLC的設計與研究
電子制作(2018年16期)2018-09-26 03:27:18
搭建基于Qt的嵌入式開發平臺
基于嵌入式系統Windows CE的應用程序開發
嵌入式單片機在電機控制系統中的應用探討
電子制作(2017年8期)2017-06-05 09:36:15
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
Altera加入嵌入式視覺聯盟
主站蜘蛛池模板: 国产福利不卡视频| 97青草最新免费精品视频| 欧美日韩亚洲国产主播第一区| 午夜福利网址| 国产凹凸视频在线观看| 黄色网站不卡无码| 最新午夜男女福利片视频| 亚洲 欧美 中文 AⅤ在线视频| 无码一区中文字幕| 日韩中文欧美| 日韩AV无码一区| www.国产福利| 不卡无码h在线观看| 一级毛片视频免费| 国产精品无码一二三视频| 国产区成人精品视频| 五月激情综合网| 一本大道香蕉高清久久| 无码网站免费观看| 拍国产真实乱人偷精品| 国产成人精品综合| 亚洲国产天堂久久九九九| 国产精品理论片| 日本在线亚洲| 国产白浆在线| 成人自拍视频在线观看| 日韩黄色大片免费看| 欧美三级不卡在线观看视频| 国产美女主播一级成人毛片| 小说区 亚洲 自拍 另类| 亚洲欧美成人网| AV天堂资源福利在线观看| 亚洲综合国产一区二区三区| 美女免费精品高清毛片在线视| 人妻精品久久无码区| 亚洲国产日韩在线成人蜜芽| 999国内精品久久免费视频| 久久精品亚洲中文字幕乱码| 老熟妇喷水一区二区三区| 新SSS无码手机在线观看| 欧美精品影院| 久久综合婷婷| 色爽网免费视频| 亚洲国产精品一区二区高清无码久久| 亚洲视频在线青青| 中文成人无码国产亚洲| 无码人中文字幕| 波多野结衣久久高清免费| 国产精品高清国产三级囯产AV| 国产精品夜夜嗨视频免费视频| 丝袜亚洲综合| 国产成人综合日韩精品无码首页 | a级毛片免费播放| 99re在线免费视频| 2021国产乱人伦在线播放 | 九九热精品免费视频| 国产情侣一区二区三区| 国产黄网站在线观看| 在线免费观看a视频| 成人av手机在线观看| 又猛又黄又爽无遮挡的视频网站| 亚洲 成人国产| 亚洲色图另类| 不卡视频国产| 国产成人凹凸视频在线| 日本影院一区| 中国黄色一级视频| 久久一级电影| 一级爆乳无码av| a级毛片免费网站| 亚洲中文字幕日产无码2021| 亚洲国产成人无码AV在线影院L| 国产成人高清精品免费5388| 久久久黄色片| 国产欧美亚洲精品第3页在线| 国产精品毛片在线直播完整版 | 亚洲第一视频网站| av在线手机播放| 被公侵犯人妻少妇一区二区三区| 亚洲一区二区三区国产精品| 国模视频一区二区| 成人国产一区二区三区|