版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、 PAGE25 / NUMPAGES26 HefeiUniversity 畢業(yè)論文(設(shè)計)BACHELOR DISSERTATION論文題目: 基于S3C2440的QT移植與編程實現(xiàn)學(xué)位類別: 工 學(xué) 學(xué) 士 學(xué)科專業(yè): 自 動 化 完成時間: 2012年5月 基于S3C2440的QT移植與編程實現(xiàn)中 文 摘 要隨著計算機技術(shù)和信息網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,嵌入式系統(tǒng)的應(yīng)用越來越廣泛,而嵌入式產(chǎn)品以其小巧、使用方便、實用等特點越來越受到人們的青睞。特別是近幾年來,嵌入式產(chǎn)品越來越多的被應(yīng)用于各個領(lǐng)域,如國防、工業(yè)控制、通信、辦公自動化和消費電子領(lǐng)域等。圖形用戶界面是嵌入式系統(tǒng)軟件開發(fā)的重要容,基于L
2、inux核開發(fā)實用、高效、美觀的GUI是目前研究的一個重要課題。本課題研究了基于Linux的典型嵌入式圖形界面支持系統(tǒng)Qt,基于嵌入式Linux操作系統(tǒng)和S3C2440硬件平臺,完成Qt開發(fā)環(huán)境搭建和Qt相關(guān)平臺移植,最后完成應(yīng)用程序編程實例實現(xiàn),并將應(yīng)用程序成功移植到GT2440開發(fā)板上,測試結(jié)果證實該程序運行穩(wěn)定,性能良好。關(guān)鍵詞:嵌入式系統(tǒng);QT;嵌入式linux;S3C2440Transplantation and programming of QT based on S3C2440AbstractThis paper introduces the QT / Embedded linu
3、x embedded system development environment to establish and transplant. Through a lot of source code analysis, build Qt / development environment in the linux host and s3c2410 transplant, and then on the QT / E programs. Qt / Embedded is Trolltech launched Linux-based embedded platform development to
4、ols, embedded version of Qt. It inherits the Qts standard APIs, provide a more compact than Xlib and XWindows window generation system FrameBuffer direct operations (see Figure 1). The fully modular design and efficient build system to reduce memory consumption, these Qt / Embedded as the embedded e
5、nvironment, powerful and comprehensive GUI development tools. KDE and other projects using Qt as the support library, so many Qt-based X-Windows program can be easily ported to Qt / Embedded version. Qt / Embedded with the advantages of object-oriented, cross-platform and interface design, convenien
6、t and aesthetic, have been widely used.KEY WORD: Embedded ;Transplant And Program; Qt/Embedded; linux;S3C2440 TOC o 1-3 h z u HYPERLINK l _Toc325976306第一章前言 PAGEREF _Toc325976306 h 4HYPERLINK l _Toc3259763071.1 嵌入式系統(tǒng)概述 PAGEREF _Toc325976307 h 4HYPERLINK l _Toc3259763081.2 圖形開發(fā) PAGEREF _Toc325976308
7、h 7HYPERLINK l _Toc3259763091.3 本文章節(jié)安排 PAGEREF _Toc325976309 h 8HYPERLINK l _Toc325976310第二章 QT編程環(huán)境 PAGEREF _Toc325976310 h 9HYPERLINK l _Toc3259763112.1 Qt概述 PAGEREF _Toc325976311 h 9HYPERLINK l _Toc3259763122.2 Qt開發(fā)環(huán)境搭建 PAGEREF _Toc325976312 h 9HYPERLINK l _Toc3259763132.2.1 安裝Qt對系統(tǒng)的要求 PAGEREF _To
8、c325976313 h 10HYPERLINK l _Toc3259763142.2.2 Qt開發(fā)環(huán)境與工具 PAGEREF _Toc325976314 h 10HYPERLINK l _Toc3259763152.2.3 Qt-Embedded-Linux安裝 PAGEREF _Toc325976315 h 10HYPERLINK l _Toc3259763162.2.4 嵌入式Linux中Qt環(huán)境變量 PAGEREF _Toc325976316 h 11HYPERLINK l _Toc3259763172.2.5 Qt/X11安裝 PAGEREF _Toc325976317 h 12HY
9、PERLINK l _Toc3259763182.2.6 Qt/Embedded安裝 PAGEREF _Toc325976318 h 12HYPERLINK l _Toc3259763192.3 Qt在嵌入式Linux的應(yīng)用 PAGEREF _Toc325976319 h 13HYPERLINK l _Toc3259763202.3.1 在嵌入式Linux上運行Qt程序 PAGEREF _Toc325976320 h 13HYPERLINK l _Toc3259763212.3.2 嵌入式Linux Qt顯示管理 PAGEREF _Toc325976321 h 14HYPERLINK l _T
10、oc3259763222.3.3 輸入設(shè)備鍵盤和鼠標(biāo)的設(shè)置于管理 PAGEREF _Toc325976322 h 15HYPERLINK l _Toc325976323第三章 Qt應(yīng)用程序開發(fā)實例 PAGEREF _Toc325976323 h 17HYPERLINK l _Toc3259763243.1 軟硬件平臺 PAGEREF _Toc325976324 h 17HYPERLINK l _Toc3259763253.1.1 硬件平臺 PAGEREF _Toc325976325 h 17HYPERLINK l _Toc3259763263.1.2 軟件平臺 PAGEREF _Toc3259
11、76326 h 18HYPERLINK l _Toc3259763273.2 Qt開發(fā)流程 PAGEREF _Toc325976327 h 19HYPERLINK l _Toc3259763283.3 應(yīng)用程序?qū)崿F(xiàn) PAGEREF _Toc325976328 h 20HYPERLINK l _Toc325976329第四章總結(jié) PAGEREF _Toc325976329 h 25HYPERLINK l _Toc325976330參考文獻 PAGEREF _Toc325976330 h 26HYPERLINK l _Toc325976331致 PAGEREF _Toc325976331 h 27
12、前言1.1 嵌入式系統(tǒng)概述嵌入式系統(tǒng)的出現(xiàn)最初是基于單片機的。70年代單片機的出現(xiàn),使得汽車、家電、工業(yè)機器、通信裝置以與成千上萬種產(chǎn)品可以通過嵌電子裝置來獲得更佳的使用性能:更容易使用、更快、更便宜。這些裝置已經(jīng)初步具備了嵌入式的應(yīng)用特點,但是這時的應(yīng)用只是使用8位的芯片,執(zhí)行一些單線程的程序,還談不上“系統(tǒng)”的概念。從80年代早期開始,嵌入式系統(tǒng)的程序員開始用商業(yè)級的“操作系統(tǒng)”編寫嵌入式應(yīng)用軟件,這使得可以獲取更短的開發(fā)周期,更低的開發(fā)資金和更高的開發(fā)效率,“嵌入式系統(tǒng)”真正出現(xiàn)了。確切點說,這個時候的操作系統(tǒng)是一個實時核,這個實時核包含了許多傳統(tǒng)操作系統(tǒng)的特征,包括任務(wù)管理、任務(wù)間通訊
13、、同步與相互排斥、中斷支持、存管理等功能。嵌入式系統(tǒng)的分類如下:(1) 嵌入式系統(tǒng)的硬件從硬件方面來講,嵌入式系統(tǒng)的核心部件是嵌入式處理器。據(jù)不完全統(tǒng)計,全世界嵌入式處理器的品種數(shù)量已經(jīng)超過1000多種,流行體系結(jié)構(gòu)有30多個,其中8051體系占大多數(shù)。生產(chǎn)8051單片機的半導(dǎo)體廠家有20多個,共350多種衍生產(chǎn)品,僅Philips就有近100種。目前嵌入式處理器的尋址空間可以從64KB到256MB,處理速度從0.1MIPS到2000MIPS。近年來嵌入式微處理器的主要發(fā)展方向是小體積、高性能、低功耗。專業(yè)分工也越來越明顯,出現(xiàn)了專業(yè)的IP(Intellectual Property Core
14、,知識產(chǎn)權(quán)核)供應(yīng)商,如ARM、MIPS等,他們通過提供優(yōu)質(zhì)、高性能的嵌入式微處理器核,由各個半導(dǎo)體廠商生產(chǎn)面向各個應(yīng)用領(lǐng)域的芯片。一般可以將嵌入式處理器分成4類,即嵌入式微處理器(Micro Processor Unit,MPU)、嵌入式微控制器(Micro Controller Unit,MCU單片機)、嵌入式DSP處理器(Digital Signal Processor,DSP)和嵌入式片上系統(tǒng)(System On Chip,SOC)。 (2) 嵌入式系統(tǒng)的軟件嵌入式系統(tǒng)的軟件一般由嵌入式操作系統(tǒng)和應(yīng)用軟件組成。操作系統(tǒng)是連接計算機硬件與應(yīng)用程序的系統(tǒng)程序。嵌入式系統(tǒng)的特點:1) 系統(tǒng)核
15、小由于嵌入式系統(tǒng)一般是應(yīng)用于小型電子裝置,系統(tǒng)資源相對有限,所以核較之傳統(tǒng)的操作系統(tǒng)要小得多。比如ENEA公司的OSE分布式系統(tǒng),核只有5KB而Windows的核則要大得多。 2) 專用性強嵌入式系統(tǒng)的個性化很強,其中的軟件系統(tǒng)和硬件的結(jié)合非常緊密,一般要針對硬件進行系統(tǒng)的移植,即使在同一品牌、同一系列的產(chǎn)品中也需要根據(jù)系統(tǒng)硬件的變化和增減不斷進行修改。同時,針對不同的任務(wù),往往需要對系統(tǒng)進行較大更改;程序的編譯下載要和系統(tǒng)相結(jié)合,這種修改和通用軟件的“升級”是完全不同的概念。3) 系統(tǒng)精簡嵌入式系統(tǒng)一般沒有系統(tǒng)軟件和應(yīng)用軟件的明顯區(qū)分,不要求其功能的 設(shè)計與實現(xiàn)過于復(fù)雜,這樣一方面利于控制系
16、統(tǒng)成本,同時也利于實現(xiàn)系統(tǒng)安全。4) 高實時性高實時性的操作系統(tǒng)軟件是嵌入式軟件的基本要求。而且軟件要求固化存儲,以提高速度。軟件代碼要求高質(zhì)量和高可靠性。 5)多任務(wù)的操作系統(tǒng)嵌入式軟件開發(fā)要想走向標(biāo)準(zhǔn)化,就必須使用多任務(wù)的操作系統(tǒng)。嵌入式系統(tǒng)的應(yīng)用程序可以沒有操作系統(tǒng)而直接在芯片上運行;但是為了合理地調(diào)度多任務(wù),利用系統(tǒng)資源、系統(tǒng)函數(shù)以與專家?guī)旌瘮?shù)接口,用戶必須自行選配RTOS(Real Time Operating System)開發(fā)平臺,這樣才能保證程序執(zhí)行的實時性、可靠性,并減少開發(fā)時間,保障軟件質(zhì)量。 6)專門的開發(fā)工具和環(huán)境嵌入式系統(tǒng)開發(fā)需要專門的開發(fā)工具和環(huán)境。由于嵌入式系統(tǒng)本
17、身不具備自主開發(fā)能力,即使設(shè)計完成以后,用戶通常也不能對其中的程序功能進行修改,因此必須有一套開發(fā)工具和環(huán)境才能進行開發(fā),這些工具和環(huán)境一般是基于通用計算機上的軟硬件設(shè)備以與各種邏輯分析儀、混合信號示波器等。開發(fā)時往往有主機和目標(biāo)機的概念,主機用于程序的開發(fā),目標(biāo)機作為最后的執(zhí)行機,開發(fā)時需要交替結(jié)合進行。1.2嵌入式系統(tǒng)圖形用戶界面現(xiàn)狀由于受到硬件條件等的限制,現(xiàn)在許多嵌入式設(shè)備的用戶界面仍然非常簡單??戳?xí)慣了PC機上華麗美觀的用戶界面,總希望在這些設(shè)備上也能得到同樣美的享受。隨著嵌入式設(shè)備的硬件條件提高,對于嵌入式系統(tǒng)中輕量級圖形用戶界面的需求也越來越迫切。這些系統(tǒng)一般不希望建立在龐大累贅
18、的、非常消耗資源的操作系統(tǒng)和圖形用戶界面之上,比如Windows。同時,嵌入式系統(tǒng)對圖形用戶界面輕量型和可定制方面有較高的要求,它們希望圖形用戶界面占用資源少、性能高、可靠性高、易移植、可配置。本論文的選題正是結(jié)合Linux操作系統(tǒng)和嵌入式系統(tǒng)研究這兩個熱點領(lǐng)域,選擇適合于嵌入式特點的圖形用戶界面QT來進行應(yīng)用程序開發(fā)。1.3 本文章節(jié)安排論文的結(jié)構(gòu)安排如下:第一章,前沿,分析并闡述了本課題研究背景與意義。第二章,QT編程環(huán)境,首先介紹了QT的概述, QT環(huán)境的搭建以與要求。第三,QT應(yīng)用程序開發(fā)實例,介紹了QT應(yīng)用程序開發(fā)所涉與的軟、硬件平臺,完成應(yīng)用程序?qū)嵗⒁浦驳紾T2440開發(fā)板。第
19、四章,總結(jié),對已完成的工作進行了簡要總結(jié),并指出了其中的不足,并對今后的做了展望。第二章 QT編程環(huán)境2.1 Qt概述Qt是一個跨平臺的 C+ 圖形用戶界面庫,由挪威 TrollTech 公司于1995年底出品。Trolltech 公司在 1994 年成立,但是在 1992 年,成立 Trolltech 公司的那批程序員 就已經(jīng)開始設(shè)計 Qt 了,Qt 的第一個商業(yè)版本于 1995 年推出。2008年1月31日,Nokia公司宣布通過公開競購的方式收購TrollTech公司,旗下包括Qt在的技術(shù)都?xì)w入Nokia旗下。并且Nokia針對自己的移動設(shè)備平臺規(guī)劃的需要,將Qt按不同的版本發(fā)行。Qt
20、的良好封裝機制使得 Qt 的模塊化程度非常高,可重用性較好,對于用戶開發(fā)來說是非常 方便的。 Qt 提供了一種稱為 signals/slots 的安全類型來替代 callback,這使得各個元件之間的協(xié)同工作變得十分簡單。Qt包括多達250個以上的 C+ 類,還提供基于模板的 collections, serialization, file, I/O device, directory management, date/time 類。還包括下列功能:(1)支持 2D/3D 圖形渲染,支持 OpenGL 大量的開發(fā)文檔;(2)XML 支持;(3)Webkit 引擎的集成,可以實現(xiàn)本地界面與Web
21、容的無縫集成。2.2 Qt開發(fā)環(huán)境搭建Qt/Embedded是基于Qt的嵌入式GUI和應(yīng)用程序開發(fā)的工具包,它可運行多種嵌入式設(shè)備上,主要運行在嵌入式Linux系統(tǒng)上,并且需要C編譯器的支持,并為嵌入式應(yīng)用程序提供Qt的標(biāo)準(zhǔn)API。 Qt/Embedded 的API是基于面向?qū)ο蠹夹g(shù)的。在應(yīng)用程序開發(fā)上使用與Qt一樣的工具包,只需在目標(biāo)嵌入式平臺上重新編譯即可。使用所熟悉的桌面開發(fā)工具,來編寫和保存一個嵌入式應(yīng)用程序的源代碼樹,在移植到多種嵌入式平臺時,只需要重新編譯代碼。 Qt/Embedded提供自身的輕量級窗口系統(tǒng),比使用Xlib和X Window更加緊湊; Qt/Embedded 的設(shè)
22、計原則是不依賴于X server或者Xlib,而是直接訪問幀緩存,同其他解決方案如Qt/X11相比這樣做最顯著的效果是減少了存消耗。只需要一個Qt/Embedded動態(tài)庫就足以替代X server、Xlib庫和其他嵌入式解決方案的圖形工具包2.2.1安裝Qt對系統(tǒng)的要求安裝qt的過程在不同的平臺上會有所不同,主要在嵌入式linux平臺上安裝。若需要提供對OpenSSL的支持,需要通過單獨安裝OpenSSL Toolkit,來獲得Secure Sockets Layer (SSL)。對于不同的平臺上,會有不同的要求。如果要在qt上對QtWebKit模塊的支持,必須使用uClibc 0.9.29或
23、者更高的版本,以對pthread的支持。在存方面的要求主要取決于體系架構(gòu)以與在編譯過程中使能的QT選項。2.2.2 Qt開發(fā)環(huán)境與工具Qt/Embedded的應(yīng)用程序也可以使用標(biāo)準(zhǔn)工具在用戶熟悉的環(huán)境下的工具開發(fā),如Window平臺下的Visual C和Borland C Builder,Unix平臺下的KDevelop等。在Unix平臺下編譯Qt/Embedded應(yīng)用程序,可以在獨立的控制臺模式,也可以用X11應(yīng) 用程序虛擬的幀緩存。通過指定目標(biāo)設(shè)備的長、寬和色深,虛擬幀緩存可以點對點的模擬物理設(shè)備,免除了調(diào)試過程中反復(fù)擦寫閃存,加快了編譯、運行的環(huán)節(jié)。Qt/Embedded提供許多支持嵌入
24、式開發(fā)的工具,其中兩個非常重要的Qt工具qmake和Qt Designer。Qmake可以為Qt/Embedded庫和應(yīng)用程序生成makefile文件。Qmake可以從項目文件(.pro)為多種平臺 生成makefile文件,通過不同設(shè)置可以使應(yīng)用程序方便的在多種平臺間移植。Qt Designer可以使用可視化的方式設(shè)計對話框、窗口的,替代了設(shè)計代碼手工編寫。在Qt Designer中還可以使用布局管理器來平滑的設(shè)置窗口部件的布局,使用代碼編寫器編寫代碼,并且整合了qmake。2.2.3Qt-Embedded-Linux安裝(1)下載源碼包,解壓;download.qtsoftware./qt
25、/source/常用官網(wǎng)qt news:.qtsoftware./about/newsqt downloads:.qtsoftware./downloadsqt Quarterly:doc.trolltech./ /qt bugs:.qtsoftware./developer/task-trackerqt Supported Platforms:doc.trolltech./supported-platforms.htmlqt Version Changes :.qtsoftware./developer/changesqt books: .qtsoftware./developer/book
26、s(2)建立支持庫 通過./configure來設(shè)置,主要配置可以通過-help來獲得幫助;之后用make命令,然后用make install 命令。將庫安裝到指定的路徑下面。其中的設(shè)置包括指定安裝的路徑;未配置的話,默認(rèn)的路徑是/usr/local/Trolltech/QtEmbedded-4.5.0;(3)設(shè)置環(huán)境變量 為了能夠使用Qt for Embedded Linux, 必須導(dǎo)出的PATH變量有qmake, moc 以與其他Qt for Embedded Linux 的工具, 以與LD_LIBRARY_PAT。 執(zhí)行:PATH=/usr/local/Trolltech/QtEmbed
27、ded-4.5.0/bin:$PATH export PATH(4)建立虛擬的frambuffer。 建立虛擬的frambuffer,需要安裝X11 Platforms。2.2.4嵌入式Linux中Qt環(huán)境變量QT環(huán)境變量如下:POINTERCAL_FILE:指定文件包含的數(shù)據(jù),用來校準(zhǔn)觸摸筆設(shè)備。同時可以參考QWSCalibratedMouseHandler and Qt for Embedded Linux Pointer Handling.QT_ONSCREEN_PAINT:如果定義了的話,可以用來將控件顯示在屏幕上。如果沒有其他控件在同一個區(qū)域的話,該設(shè)備響應(yīng)的區(qū)域?qū)⒉粫S著屏幕設(shè)備驅(qū)
28、動的改變而改變。設(shè)置這個環(huán)境變量相當(dāng)于在控件中應(yīng)用程序中設(shè)置Qt:WA_PaintOnScreen。QWS_SW_CURSOR:如果定義了的話,軟件鼠標(biāo)的光標(biāo)將一直是可用的。(即使使用硬件加速驅(qū)動器來支持硬件光標(biāo))QWS_DISPLAY:指定顯示形式和framebuffer.例如:export QWS_DISPLAY=:.:QWS_SIZE:指定嵌入式linux qt窗口在屏幕上的大小。export QWS_SIZE=xQWS_MOUSE_PROTO: xport QWS_MOUSE_PROTO=:,參數(shù)可以是MouseMan, IntelliMouse, Microsoft, VR41xx,
29、 LinuxTP, Yopy. Tslib and keys。/dev/mouse 指的是鼠標(biāo)設(shè)備, /dev/ts for touch panels。QWS_KEYBOARD為輸入設(shè)備指定輸入設(shè)備和驅(qū)動。比如:export QWS_KEYBOARD=:。參數(shù)可以是SL5000, Yopy, VR41xx, TTY, USB and keys,指定的是一個標(biāo)準(zhǔn)設(shè)備。2.2.5 Qt/X11安裝 QT/X11安裝步驟如下:#cd /usr/local#tar xvfz qt-x11-free-3.3.4.tar.gz#mv qt-x11-free-3.3.4 qtx#cd qtx#export
30、QTDIR=$PWD /設(shè)置環(huán)境變量,在編譯的時候要用到#export PATH=$QTDIR/bin:$PATH#export LD_LIBRARY_PATH =$QTDIR/lib#./configure -depths 4,8,16 -no-ipv6 -no-cups -no-pch qvfb -depths 4,8,16,32 /配置,可以通過./configure -help來獲得幫助信息#make /編譯#make install2.2.6 Qt/Embedded安裝編譯并安裝Qt/Embedded主要是為了生成基于ARM核的Qt/E庫文件,將這些庫文件移植到ARM平臺中就可以運行
31、通過QT開發(fā)出來的GUI程序了,下面列出其安裝步驟:#cd /usr/local#tar xvzf qt-embedded-free-3.3.5.tar.gz#mv qt-embedded-free-3.3.5 qte#cd qte#export QTDIR=$PWD /設(shè)置環(huán)境變量#export PATH=$QTDIR/bin:$PATH#export LD_LIBRARY_PATH =$QTDIR/lib:$LD_LIBRARY_PATH接著拷貝jpeg庫頭文件到Qt/E的include中,因為在編譯的時候要用到。#cp /usr/include/jpeglib.h $QTDIR/incl
32、ude/#cp /usr/include/jconfig.h $QTDIR/include/#cp /usr/include/jerror.h $QTDIR/include/#cp /usr/include/jmorecfg.h $QTDIR/include/#cp /usr/local/qtx/bin/uic $QTDIR/bin/#./configure -shared -embedded arm -qt-gif -no-exceptions -thread -no-nis -no-cups -no-stl -qt-imgfmt-mng -qt-imgfmt-png -qt-imgfmt-
33、jpeg -qt-sql-sqlite -qvfb -depths 4,8,16,32#make /編譯,最終生成基于ARM平臺的Qt/E庫文件:libqte-mt.so、libqte-mt.so.3、libqte-mt.so.3.3、libqte-mt.so.3.3.5到此,整個Qt/Embedded的開發(fā)環(huán)境全部建立起來了2.3 Qt在嵌入式Linux的應(yīng)用QT在嵌入式Linux中應(yīng)用需要完成這幾個方面:字體庫移植,設(shè)置環(huán)境變量以與Framebuffer的支持。字體庫的支持:是在qt的/lib/fonts目錄下。由于程序運行的時候是到這個文件夾下面來調(diào)用,因此需要將字體庫復(fù)制到這個目錄下。
34、 環(huán)境變量的設(shè)置:通常情況下,與默認(rèn)的環(huán)境變量不同,因此需要設(shè)置的有QWS_MOUSE_PROTO, QWS_KEYBOARD 以與 QWS_DISPLAY,用來指定鼠標(biāo)、鍵盤以與顯示設(shè)備管理。在./configure 的時候需要加入的選項是-qt-kbd- and -qt-mouse- ,這樣才能使能這些設(shè)備驅(qū)動。但是還需要指定一個具體的設(shè)備,因此需要通過設(shè)置環(huán)境變量來完成。framebuffer的支持:沒有特殊需求的情況下,要求在目標(biāo)設(shè)備上使能framebuffer。Linux framebuffer在標(biāo)準(zhǔn)設(shè)置情況下是使能的。2.3.1 在嵌入式Linux上運行Qt程序任何嵌入式linux
35、應(yīng)用程序可以通過構(gòu)建QApplication 對象QApplication:GuiServer的格式,被構(gòu)建為服務(wù)server application?;蛘咄ㄟ^qws命令行選項的方式。本文當(dāng)假設(shè)用The Virtual Framebuffer 或者嵌入式linux的VNC協(xié)議,或者正確配置的Linux framebuffer。而且沒有服務(wù)進程在運行??梢允褂玫娘@示方式有:Using a Single Display 單顯示,運行這種顯示方式,改變Linux console,而且選擇一個應(yīng)用來運行。它要求在安裝過程中,環(huán)境變量是可用的。它要求指定的硬件設(shè)備驅(qū)動必須工作正常。比如: cd path
36、/to/QtEmbedded/demos/textedit ./textedit -qws * Using Multiple Displays linux同時也是支持多設(shè)備顯示。有兩種方式可以完成。當(dāng)在運行多服務(wù)程序的時候,顯示屏的驅(qū)動(以與數(shù)量)必須為每一個程序進行指定。用display命令行或者QWS_DISPLAY 來指定。比如: ./myfirstserverapplication -qws -display transformed:rot90:1 ./mysecondserverapplication -qws -display QVFb:2需要注意的是,必須指定一個顯示設(shè)備,在開始
37、客戶端程序的時候。比如:./myclientapplication -display QVFb:2。在程序運行的時候,沒有辦法將一個客戶端程序從一個顯示移動到另一個顯示。用多顯示屏驅(qū)動,另一方面,應(yīng)用程序可以方便的在兩個不同類型的顯示屏之間切換。多屏幕顯示可以用-display命令行參數(shù)來指定或者通過設(shè)置QWS_DISPLAY環(huán)境變量比如: ./myserverapplication -qws -display Multi: QVFb:0 QVFb:1:offset=0,0 VNC:offset=640,0 :2 * Command Line Options 命令行選項2.3.2 嵌入式Lin
38、ux Qt顯示管理當(dāng)需要顯示的時候,默認(rèn)的動作是每一個嵌入式linux的客戶端將需要的顯示的色調(diào)存放在存中,然后服務(wù)端將相關(guān)的數(shù)據(jù)從存在中送到顯示屏上。服務(wù)端用顯示屏驅(qū)動copy存中的容到顯示屏上顯示。顯示屏的驅(qū)動是在服務(wù)端應(yīng)用加載的時候運行的,用的是qt的插件系統(tǒng)。常用的方式有:可用的驅(qū)動;指定一個驅(qū)動;子驅(qū)動和多驅(qū)動。 Available Drivers可用的驅(qū)動嵌入式linux的qt提供的驅(qū)動有Linux framebuffer, the virtual framebuffer, transformed screens, VNC servers and multi screens.通過運
39、行./configure 選項來列出可用的驅(qū)動。默認(rèn)的配置是不加速的Linux framebuffer driver (/dev/fb0) 被打開。其他的設(shè)備驅(qū)動也可以使能或者禁止,通過以下命令行。例如:./configure -qt-gfx-transformed Specifying a Driver指定一個驅(qū)動 通過設(shè)置環(huán)境變量QWS_DISPLAY來指定一個設(shè)備。比如:格式如下的: export QWS_DISPLAY=:. : 可以用的參數(shù)有:LinuxFb, QVFb, VNC, Transformed, Multi and keys identifying custom driv
40、ers。參數(shù)的被用來分辨用一樣驅(qū)動的屏幕,而且使能多顯示。如下的表格用來指定驅(qū)動。環(huán)境變量的QWS_DISPLAY也可以通過-display來設(shè)置。比如: myApplication -display :. : Subdrivers and Multiple Drivers子驅(qū)動和多驅(qū)動 VNC, Transformed 和Multi screen drivers取決于子驅(qū)動。通用的語法是: export QWS_DISPLAY=:. :至于子驅(qū)動,在每個子驅(qū)動之間加上空間是很重要的,在顯示設(shè)備前加上用來分開各個驅(qū)動和顯示設(shè)備。注意的是多屏幕驅(qū)動可以擁有多個子設(shè)備驅(qū)動,比如: export Q
41、WS_DISPLAY=Multi: QVFb:0 QVFb:offset=640,0:1 :2注意的是:VNC screen driver在沒有指定屏幕驅(qū)動的情況下,默認(rèn)的是虛擬屏幕驅(qū)動。在這種情況下,VNC driver有一些額外的參數(shù)來指定大小的位寬,參數(shù)有: * size= * depth= * mmHeight=* mmWidth= 。例如:export QWS_DISPLAY=VNC:size=720 x480:depth=32。例如運行VNC屏幕驅(qū)動在Linux framebuffer driver的情況下,則export QWS_DISPLAY=VNC:LinuxFb2.3.3
42、輸入設(shè)備鍵盤和鼠標(biāo)的設(shè)置于管理當(dāng)運行一個Qt for Embedded Linux應(yīng)用程序的時候,不管是作為一個服務(wù)還是連接到另一個服務(wù),當(dāng)它開始運行的時候,鼠標(biāo)驅(qū)動被服務(wù)的應(yīng)用加載,用qt的plugin system。 在配置qt的時候通過選項來選擇支持的鼠標(biāo)以與鍵盤設(shè)備,同時測試可用的設(shè)備。通過 ./configure -help 查看可用的設(shè)備,配置時候默認(rèn)的是PC的鼠標(biāo)驅(qū)動。如果是自己添加一個設(shè)備,比如觸摸屏,則需要創(chuàng)建一個QWSCalibratedMouseHandler subclass來完成校驗功能。若提供的pc的鼠標(biāo)被使能,Qt for Embedded Linux將會自動探測
43、所支持的一種鼠標(biāo)設(shè)備,這個設(shè)備是在/dev/psaux 或者 /dev/ttyS的一種。如果多種類型的都檢測到的話,則多種同時支持。需要注意的是,Qt for Embedded Linux 不支持自動檢測觸摸屏設(shè)備,因此需要指定使用的是哪一種。要設(shè)置環(huán)境變量QWS_MOUSE_PROTOexport QWS_MOUSE_PROTO=:,其中的參數(shù)可以是MouseMan, IntelliMouse, Microsoft, VR41xx, LinuxTP, Yopy, Tslib and keys,driver specific options是一個標(biāo)準(zhǔn)設(shè)備,比如:dev/mouse,觸摸屏的是/
44、dev/ts。多鼠標(biāo)可以用下列方式來指定。export QWS_MOUSE_PROTO=:需要注意的是:Vr41xx 驅(qū)動有兩個可選的參數(shù):press=來定義單擊的時間(默認(rèn)值是750);filter= 指定的是濾波長度。用于慮掉噪聲。比如: export QWS_MOUSE_PROTO=Vr41xx:press=500:/dev/misc/ts對于The Tslib Mouse Driver是一個繼承QWSCalibratedMouseHandler的類,在產(chǎn)生鼠標(biāo)事件的時候,提供校驗和濾波的功能,用于使用同一的觸摸屏的庫。為了使用鼠標(biāo),必須編譯的選項是-qt-mouse-tslib。此外,
45、tslib的頭文件和庫也要在build的環(huán)境變量中指出來。tslib 的源碼可以在tslib.berlios.de. 下載。通過L 和I 來指定庫和頭文件的位置。比如: ./configure -L -I 。 為了保證能夠使用鼠標(biāo),tslib必須正確的安裝在目標(biāo)機上。包括提供一個ts.conf 配置文件和設(shè)置必要的環(huán)境變量。ts.conf包括兩行:容是: module_raw inputmodule linear在make Qt for Embedded Linux 時候特別指定tslib 鼠句柄,設(shè)置環(huán)境變量QWS_MOUSE_PROTO ??赡艹霈F(xiàn)問題的地方是設(shè)備文件和文件權(quán)限兩個方面。為
46、了保證能夠正確的使用設(shè)備文件,第一步,先測試一下設(shè)備文件是否有輸出。比如:如果指定的鼠標(biāo)設(shè)備驅(qū)動是:QWS_MOUSE_PROTO=IntelliMouse:/dev/input/mouse0,然后檢查設(shè)備的輸出,通過在控制臺上敲: cat /dev/input/mouse0 | hexdump,移動鼠標(biāo)后,如果可以在控制臺上看見輸出,表示能夠正確的使用設(shè)備,否則要重新連接設(shè)備。對于設(shè)備的讀寫權(quán)限,一般要求對設(shè)備至少有讀權(quán)限。比如:QWS_MOUSE_PROTO=IntelliMouse:/dev/input/mouse0,那么應(yīng)該將該設(shè)備的權(quán)限設(shè)置為chmod a+rw /dev/input
47、/mouse0。如果設(shè)備文件符號連接到另一個文件的話,必須改變相關(guān)文件的屬性。第三章 Qt應(yīng)用程序開發(fā)實例3.1 軟硬件平臺3.1.1 硬件平臺三星公司推出的16、32為RISC微處理器S3C2440A,為手持設(shè)備和一般類型應(yīng)用提供了低價格、低功耗、高性能小型微控制器的解決方案。S3C2440A采用了ARM920t的核,0.13um的CMOS標(biāo)準(zhǔn)宏單元和存儲器單元。其低功耗,簡單,優(yōu)雅,且全靜態(tài)設(shè)計特別適合于成本和功率敏感型的應(yīng)用。它采用了新的總線架構(gòu)Advanced Micro controller Bus .1.2V核供電,1.8V/2.5V/3.3V存儲器供電,具備16KB的I-Cach
48、e和16KB DCache/MMU微處理器外部存儲控制器(SDRAM)控制和片選邏輯LCD控制器提供1通道LCD專用DMA4通道DMA并有外部請求引腳3通道UART2通道SPI1通道IIS-BUS接口1通道IIS-BUS音頻編解碼器接口AC97解碼器接口兼容SD主接口協(xié)議1.0版和MMC卡協(xié)議2.11兼容版2端口USB主機、1端口USB設(shè)備4通道PWM定時器和1通道部定時器/看門狗定時器8通道10比特ADC和觸摸屏接門具有日歷功能的RTC相機接口130個通用I/O口和24通道外部中斷源具有普通,慢速,空閑和掉電模式具有PLL片上時鐘發(fā)生器3.1.2 軟件平臺嵌入式軟件開發(fā)不同于一般的軟件開發(fā),
49、絕大多數(shù)的Linux軟件開發(fā)都是以本機方式進行的,即本機開發(fā)、調(diào)試,本機運行的方式。這種方式通常不適合嵌入式系統(tǒng)的軟件開發(fā),因為對于嵌入式系統(tǒng)的開發(fā),沒有足夠的資源在本機中運行開發(fā)工具盒調(diào)試工具。通常的嵌入式系統(tǒng)的軟件開發(fā)采用一種交叉編譯調(diào)試的方式。交叉編譯的開發(fā)和調(diào)試環(huán)境建立在宿主機上,對應(yīng)的開發(fā)板叫做目標(biāo)板。開發(fā)時使用宿主機上的交叉編譯、匯編與工具形成可執(zhí)行的二進制代碼,然后把可執(zhí)行文件下載到目標(biāo)板上運行。1Bootloader引導(dǎo)程序移植Bootloader引導(dǎo)程序是嵌入式開發(fā)很重要的組成部分,它是嵌入式系統(tǒng)上電后執(zhí)行的第一個程序,并由它最終將操作系統(tǒng)啟動起來并將控制權(quán)交給操作系統(tǒng)。Bo
50、otloader引導(dǎo)程序最基本的功能有對硬件系統(tǒng)的初始化、核啟動參數(shù)設(shè)置和啟動核。Bootloader的主要功能有:(1)初始化CPU運行的時鐘頻率。(2)初始化Flash和存的數(shù)據(jù)寬度、讀/寫訪問周期和刷新周期。(3)初始化中斷系統(tǒng)。(4)初始化系統(tǒng)中各種運行模式下的寄存器和堆棧。(5)初始化系統(tǒng)各種片外設(shè)備和I/O端口。(6)加載和引導(dǎo)操作系統(tǒng),為用戶提供一個命令接。2.根文件系統(tǒng)根文件系統(tǒng)是Linux系統(tǒng)引導(dǎo)啟動時默認(rèn)使用的文件系統(tǒng)。文件系統(tǒng)是Linux操作系統(tǒng)的核心組成部分之一,用于文件盒目錄的組織,其中包括了Linux程序、函數(shù)庫、用戶文件盒設(shè)備文件等,同時作為存儲數(shù)據(jù)讀寫結(jié)果的區(qū)域
51、。在嵌入式系統(tǒng)中,硬件初始化和核啟動完成之后將執(zhí)行掛載文件系統(tǒng)的操作。3.2 Qt開發(fā)流程嵌入式硬件平臺的確定PC上搭建Qt/Embedded開發(fā)環(huán)境交叉編譯Qt/Embedded庫并進行目標(biāo)版的移植PC上進行QTE應(yīng)用程序的開發(fā)交叉編譯應(yīng)用程序在目標(biāo)平臺上進行調(diào)試程序運行是否正常發(fā)布應(yīng)用程序過程中我們采取了宿主機和目標(biāo)板的開發(fā)模式。宿主機是一臺運行Linux 的PC 機,目標(biāo)板即hybus開發(fā)板。先在宿主機上調(diào)試通過后,再移植到目標(biāo)板上。Qt/Embedded直接寫入幀緩沖,在宿主機上則是通過qvfb(vitural framebuffer)來模擬幀緩沖。qvfb是X窗口用來運行和測試Qto
52、pia應(yīng)用程序的系統(tǒng)程序,允許我們在桌面與其上開發(fā)Qt嵌入式程序,而不需要在命令臺和X11之間來回切換。qvfb使用了共享存儲區(qū)域(虛擬的幀緩沖)來模擬幀緩沖并且在一個窗口中(qvfb)模擬一個應(yīng)用來顯示幀緩沖,顯示的區(qū)域被周期性的改變和更新。通過指定顯示設(shè)備的寬度和顏色深度,虛擬出來的緩沖幀和物理的顯示設(shè)備在每個像素上保持一致。這樣我們在每次調(diào)試應(yīng)用時不需要總是刷新嵌入式設(shè)備的FLASH存儲空間,從而加速了應(yīng)用的編譯、連接和運行周期。應(yīng)用程序的移植將編譯好的可執(zhí)行文件下載到目標(biāo)板上,目前有四種方式:通過網(wǎng)絡(luò)傳送文件到開發(fā)板復(fù)制到介質(zhì)(如U盤)通過串口傳送文件到開發(fā)板通過NFS(網(wǎng)絡(luò)文件系統(tǒng))
53、直接運行3.3 應(yīng)用程序?qū)崿F(xiàn)針對目標(biāo)板編譯應(yīng)用程序與編譯可在宿主機上執(zhí)行的應(yīng)用程序類似,只需將編譯參數(shù)作一定的修改,就可讓程序在開發(fā)板上運行。安裝Qt/Embedded時,配置參數(shù)-xplatform linux-arm-g+表示在ARM平臺上進行交叉編譯。設(shè)置環(huán)境變量在根文件系統(tǒng)中已經(jīng)加入了Qt的安裝包和Qt程序需要的庫文件,環(huán)境變量的設(shè)置命令如下:Export QTDIR=/opt/qt/使鼠標(biāo)、鍵盤工作鼠標(biāo)設(shè)備接口這一基類QWSMouseHandler 的實現(xiàn)位于/src/kernel/qmouse文件中;鍵盤的驅(qū)動程序位于/src/kernel/qkeyboard-qws.cpp中,鍵
54、盤類設(shè)備接口的基類為QWSMouseHandler.為了鼠標(biāo)、鍵盤正常工作,使用如下的命令配置:Export QWS-KEYBOARD=USB:/dev/input/event1Export QWS-MOUSE-PORT =USB:/dev/input/mouse0程序執(zhí)行結(jié)果分析分別右擊三個按鈕,點擊 go to slot,在 mainwindow 中產(chǎn)生三個槽函數(shù): void MainWindow:on_start_clicked() void MainWindow:on_stop_clicked() void MainWindow:on_clear_clicked() 根據(jù)設(shè)計任務(wù),每秒
55、在 Text Edit 中顯示自己設(shè)置的一組數(shù),所以需要用到定時器。在 mainwindow.h 中添加: 在 private:中加入成員 QTimer m_timer; 定義一個定時器。 根據(jù)要求,當(dāng)點擊啟動按鈕時,開始計數(shù)并顯示在void MainWindow:on_start_clicked() 中添加void MainWindow:on_start_clicked() on_Start_b_clicked(); 進入 on_Start_b_clicked()中, 繼續(xù)添加代碼:void MainWindow:on_Start_b_clicked() /這是我定義的一個按鈕當(dāng)按下這個按鈕
56、時執(zhí)行下面的操作 /如果定時器沒啟動 if (!m_timer.isActive() m_timer.start(1000); /開啟定時器 1s this-connect(&m_timer,SIGNAL(timeout(),this,SLOT(timeOut(); /計時到達,進入 timeOut(), timeOut()容: void MainWindow:timeOut() ui-view-setText(tr(retArry()容:int MainWindow:retArry()int a70= 0,1,2,3,4,5,6,7,8,9,%1 ).arg(retArry();/在 vie
57、w 中顯示retArry()值 10,11,12,13,14,15,16,17,18,19, 20,21,22,23,24,25,26,27,28,29, 30,31,32,33,34,35,36,37,38,39, 40,41,42,43,44,45,46,47,48,49, 50,51,52,53,54,55,56,57,58,59, 60,61,62,63,64,65,66,67,67,69, ; i+; if(i=70) i=0;return ai; /定義 70 個數(shù),每次返回一個值 其中,i 在最上面定義:int i; 由于使用到上面的一些函數(shù),需要先聲明。在 mainwindow
58、.h 中添加: protected: void on_Start_b_clicked(); int retArry(); private slots: void timeOut(); 到這里可以完成點擊啟動:在 view 中顯示不同的數(shù),下面添加停止和清除功能。 void MainWindow:on_stop_clicked() if (m_timer.isActive() m_timer.stop();void MainWindow:on_pushButton_clicked()ui-view-clear();注意此時的程序只能在 X-11 平臺下運行,要想移植到 ARM 平臺,將上述 選擇分別改成 qt4.3.6-embedded-arm, qt4.3.6-embedded-arm Release
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個人電子煙零售店加盟合同(2024年度)3篇
- 二零二五年度城市綠化用地承包合同范本4篇
- 2025年度個人房產(chǎn)抵押借款合同修訂版8篇
- 二零二四年二手挖掘機交易安全保障合同2篇
- 2025年度專業(yè)烘焙廚師勞務(wù)輸出合同4篇
- 二零二四年度巖棉巖棉板隔熱保溫材料供應(yīng)合同6篇
- 2025年度高空作業(yè)爬架租賃與勞務(wù)提供綜合服務(wù)合同4篇
- 2025年中國液力緩速器行業(yè)發(fā)展趨勢預(yù)測及投資戰(zhàn)略咨詢報告
- 2025年度旅游度假村開發(fā)管理合同示范文本4篇
- 二零二四年度新能源車租賃及購買貸款一攬子服務(wù)合同3篇
- 2024年全國甲卷高考化學(xué)試卷(真題+答案)
- 汽車修理廠管理方案
- 人教版小學(xué)數(shù)學(xué)一年級上冊小學(xué)生口算天天練
- 三年級數(shù)學(xué)添括號去括號加減簡便計算練習(xí)400道及答案
- 蘇教版五年級上冊數(shù)學(xué)簡便計算300題及答案
- 澳洲牛肉行業(yè)分析
- 老客戶的開發(fā)與技巧課件
- 計算機江蘇對口單招文化綜合理論試卷
- 成人學(xué)士學(xué)位英語單詞(史上全面)
- KAPPA-實施方法課件
- GB/T 13813-2023煤礦用金屬材料摩擦火花安全性試驗方法和判定規(guī)則
評論
0/150
提交評論