版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 課 程 設(shè) 計 報 告</p><p> 課程名稱 嵌入式系統(tǒng) </p><p> 課題名稱 QTOPIA移植 </p><p> 專 業(yè) 計算機(jī)科學(xué)與技術(shù) </p><p> 班
2、 級 </p><p> 學(xué) 號 </p><p> 姓 名 </p><p> 指導(dǎo)教師 </p><p> 年 月 日</p&
3、gt;<p> 嵌入式系統(tǒng)課程設(shè)計任務(wù)書</p><p> 設(shè)計課題5:Qtopia移植實(shí)驗(yàn)</p><p><b> 問題描述:</b></p><p> 良好的GUI界面是嵌入式產(chǎn)品設(shè)計中不可或缺的部分,Qt/Embedded是一個多平臺的C++圖形用戶界面應(yīng)用程序框架,其對象容易擴(kuò)展,可移植性好,支持多個GUI平臺的
4、交互開發(fā),而基于Qt/Embedded框架的Qtopia 是Trolltech 公司為采用嵌入式Linux 操作系統(tǒng)的消費(fèi)電子設(shè)備而開發(fā)的綜合應(yīng)用平臺。</p><p><b> 功能設(shè)計要求:</b></p><p> 1)本系統(tǒng)針對xbase270實(shí)驗(yàn)箱,運(yùn)用Redhat9搭建交叉開發(fā)環(huán)境,涉及Qt程序的設(shè)計,Qtopia平臺的移植。</p>&
5、lt;p> 2)Tslib和Qt/E模塊:</p><p><b> 交叉編譯環(huán)境搭建</b></p><p> 編譯Tslib源碼:Tslib是一個開源的程序,能夠?yàn)橛|摸屏驅(qū)動獲得的采樣提供諸如濾波、去抖、校準(zhǔn)等功能,通常作為觸摸屏驅(qū)動的適配層,為上層的應(yīng)用提供了一個統(tǒng)一的接口。</p><p> 編譯帶Tslib庫的Qt/E源
6、碼:Qt/E庫文件是Qtopia移植所必備的庫文件。</p><p> 3)Qtopia模塊:</p><p><b> 交叉編譯環(huán)境搭建</b></p><p> Qtopia源碼分析及交叉編譯 </p><p> 運(yùn)用串口或網(wǎng)絡(luò)的程序下載。</p><p><b> 4)
7、Qt程序配置</b></p><p> 用Qt的designer工具設(shè)計一個Qt界面程序</p><p> 將此程序配置到Qtopia平臺中</p><p><b> 3、要求:</b></p><p> 1)用VMware搭建Redhat9的交叉編譯環(huán)境;</p><p>
8、 2)對Qtopia源碼的核心部分加必要注釋和說明;</p><p> 3)運(yùn)用正確的方法進(jìn)行程序下載;</p><p><b> 目錄</b></p><p><b> 一、系統(tǒng)介紹1</b></p><p><b> 二、總體設(shè)計2</b></p>
9、<p> 三.主要模塊的實(shí)現(xiàn)3</p><p><b> 四.程序調(diào)試6</b></p><p><b> 五.總結(jié)與體會6</b></p><p><b> 六.源程序清單6</b></p><p><b> 系統(tǒng)介紹</b>
10、;</p><p> 目前嵌入式Linux的主流GUI系統(tǒng)主要有MiniGUI、Microwindows、OpenGUI、Qt/Embedded,這些GUI在接口定義、體系結(jié)構(gòu)、功能特性存在很大差別,采取的技術(shù)路線也有所不同。MiniGUI是建立在比較成熟的圖形引擎之上,開發(fā)的重點(diǎn)在于窗口系統(tǒng),其小巧精致并且盡量與Win32兼容。MicroWindows目前開發(fā)的重點(diǎn)在底層的圖形引擎,窗口系統(tǒng)和圖形接口方面功能
11、比較欠缺,與Win32和X Windows窗口系統(tǒng)保持兼容,提供了相對完善的圖形功能。OpenGUI基于一個用匯編實(shí)現(xiàn)的x86圖形內(nèi)核,提供了一個高層的C/C++圖形/窗口接口,它的資源消耗小,可移植性差,不支持多進(jìn)程。</p><p> 我們這次的實(shí)驗(yàn)用的就是基于Qt/Embedded,它具有良好的擴(kuò)展性和眾多優(yōu)秀的配套工具。</p><p> 實(shí)驗(yàn)過程中,一共用到4個源代碼包,下面
12、是它們的介紹說明:</p><p> Qt/Embedded:Qt/Embedded是一個多平臺的C++圖形用戶界面應(yīng)用程序框架,其對象容易擴(kuò)展,可移植性好,支持多個GUI平臺的交互開發(fā)。現(xiàn)在,Qt/Embedded被廣泛地應(yīng)用于各種嵌入式產(chǎn)品和設(shè)備中,從消費(fèi)電器(如智能手機(jī)、機(jī)頂盒)到工業(yè)控制設(shè)備(如醫(yī)學(xué)成像設(shè)備、移動信息系統(tǒng)等)。因此本實(shí)訓(xùn)項(xiàng)目選擇Qt/Embedded為系統(tǒng)的GUI。</p>
13、<p> Qtopia :Qtopia 是Trolltech 公司為采用嵌入式Linux 操作系統(tǒng)的消費(fèi)電子設(shè)備而開發(fā)的綜合應(yīng)用平臺, 它基于Qt/Embedded框架,所以在編譯Qtopia之前先要搭建好Qt/Embedded框架。另外Qtopia包含完整的應(yīng)用層、靈活的用戶界面、窗口操作系統(tǒng)、應(yīng)用程序啟動程序以及開發(fā)框架。</p><p> Tslib:在采用觸摸屏的移動終端中,觸摸屏性能的調(diào)
14、試是個重要問題之一,因?yàn)殡姶旁肼暤木壒?,觸摸屏容易存在點(diǎn)擊不準(zhǔn)確、有抖動等問題。Tslib是一個開源的程序,能夠?yàn)橛|摸屏驅(qū)動獲得的采樣提供諸如濾波、去抖、校準(zhǔn)等功能,通常作為觸摸屏驅(qū)動的適配層,為上層的應(yīng)用提供了一個統(tǒng)一的接口。</p><p> Tmake:tmake是一個很好用的生成和管理makefile的工具,他是由Trolltech這家公司開發(fā)的,用perl寫成。</p><p>
15、;<b> 總體設(shè)計</b></p><p><b> 移植流程圖</b></p><p><b> 圖1 流程示意圖</b></p><p> 1、QT/E的跨平臺的移植方法與步驟:</p><p> 1. 從光盤的QT目錄下獲得以下文件并解壓到 /work目錄,如
16、下圖:</p><p> 2. 編譯Qt/Embedded的環(huán)境參數(shù)的設(shè)置</p><p> 在編譯Qt/Embedded時,用戶在PC機(jī)上應(yīng)對編譯時所需的環(huán)境變量進(jìn)行設(shè)置(假設(shè)Qt解壓后目錄為/work/qt-2.3.7),主要參數(shù)包括:</p><p> ?。?)、QTDIR-Qt解壓后的所在的目錄</p><p> ?。?)、LD_
17、LIBRARY_PATH-Qt共享庫存放的目錄。</p><p> ?。?)、QPEDIR-qtopia解壓后的所在的目錄</p><p> ?。?)、TMAKEPATH-tmake編譯工具的路徑(假設(shè)tmake-1.1所在的目錄為/work)</p><p> (5)TMAKEDIR-tmake編譯工具的目錄</p><p> ?。?)、
18、PATH-交叉編譯工具arm-linux-gcc的路徑</p><p> 3. Qt/Embedded的編譯配置</p><p> 4. 針對ARM開發(fā)平臺的Qt/Embedded的編譯</p><p><b> 三.主要模塊的實(shí)現(xiàn)</b></p><p><b> 1、tslib移植</b>
19、;</p><p> 第一步:解壓tslib-1.4.tar.gz</p><p> tar -zxvf tslib-1.4.tar.gz</p><p> 第二步:進(jìn)入解壓過的目錄</p><p> cd tslib-1.4</p><p> 第三步:執(zhí)行tslib-1.4目錄下的autogen.sh<
20、;/p><p> ./autogen.sh</p><p> 這一步需要安裝一些工具:sudo apt-get install automake</p><p> 第四步:執(zhí)行autogen.sh腳本所生成的Makefile文件</p><p><b> 請打入以下命令:</b></p><p&g
21、t; echo "ac_cv_func_malloc_0_nonnull=yes" >$ARCH-linux.cache</p><p> ./configure --host=arm-softfloat-linux-gnu --prefix=/home/linux/tslib --cache-file=$ARCH-linux.cache</p><p>
22、 --host是指你的交叉編譯器的前最;例如:你的交叉編譯器是arm-linux-gcc,則--host=arm-linux.如果是arm-softfloat-linux-gnu-gcc</p><p> 則--host=arm-softfloat-linux-gnu</p><p> --prefix 是你執(zhí)行make install 的時候編譯后生成的可執(zhí)行文件和庫文件以及配置文所
23、安裝的目錄;</p><p> configure文件下還有好多選項(xiàng);你可以執(zhí)行./configure --help 來進(jìn)行選擇其他項(xiàng),不過在這里這些選項(xiàng)就夠了。</p><p> 第五步:執(zhí)行make</p><p> 第六步:執(zhí)行make install</p><p> 第七步:把指定安裝目錄下的tslib的文件都copy到你所
24、掛載的根文件下</p><p> sudo cp -rf /home/linux/tslib/* /rootfs/tslib</p><p> 第八步:修改/rootfs/tslib下的etc目錄中ts.cong文件</p><p> vi ts.conf 將第二行的#module_raw input修改成module_raw input 注意一定要頂
25、格寫否則程序執(zhí)行時會發(fā)生讀取ts.conf錯誤</p><p> 交叉編譯tslib.tar.bz2,其中截圖如下:</p><p> 2.ARM開發(fā)平臺的Qt/Embedded的編譯步驟:</p><p> ?。?)根據(jù)編譯Qt/Embedded的環(huán)境變量的設(shè)置方法設(shè)置環(huán)境變量,實(shí)驗(yàn)截圖如下:</p><p> ?。?)觸摸屏共享庫的編
26、譯和Qt/Embedded源代碼的修改</p><p> Qt/Embedded只支持鼠標(biāo)和鍵盤的操作,但在大部分嵌入式系統(tǒng)中利用觸摸屏,所以用戶必須對觸摸屏的相關(guān)操作編譯成共享庫或靜態(tài)庫。編譯觸摸屏庫, 將觸摸屏相關(guān)的頭文件復(fù)制到qt-2.3.7/include文件夾中;將編譯好的觸摸屏庫文件復(fù)制qt-2.3.7/lib文件夾中;</p><p> 將patch底下的文件覆蓋當(dāng)前文件
27、。執(zhí)行configure命令生成編譯時所需的Makefile。</p><p> ?。?)拷貝QT所需文件,并配置環(huán)境</p><p> ?。?)編譯完成后, 在 $QTDIR/lib生成 ibqte.so*, 所有的應(yīng)用程序在 $QPEDIR/bin</p><p> ?。?)建立qpe文件夾,將QT所需文件拷貝到qpe文件夾底下。</p><
28、p> (7). 覆蓋腳本/qpe/qpe.sh(如用USB鼠標(biāo)覆蓋/qpe/qpe_moush.sh),覆蓋腳本/etc/inittab。</p><p> ?。?)用修改好的qpe文件夾替換文件系統(tǒng)中的qpe文件夾,制作文件系統(tǒng),燒寫完成后重啟。因?yàn)樽煮w文件比較大,請刪除/qpe/lib/fonts底下的沒用的字體。注意保留*.qpf文件和fontdir文件。</p><p>
29、 3、啟動Qtopia</p><p><b> (1)目標(biāo)板開機(jī)</b></p><p> ?。?)運(yùn)行腳本qtopia.sh</p><p> ./qtopia.sh</p><p><b> (3)運(yùn)行qpe</b></p><p> /Qtopia/bin/q
30、pe</p><p><b> 四.程序調(diào)試</b></p><p> 在程序過程中,Qt/Embedded只支持鼠標(biāo)和鍵盤的操作,但在大部分嵌入式系統(tǒng)中利用觸摸屏,所以用戶必須對觸摸屏的相關(guān)操作編譯成共享庫或靜態(tài)庫。個人感覺這個過程最有難度。</p><p><b> 五.總結(jié)與體會</b></p>
31、<p> 在課程設(shè)計過程中,我們了解到課程設(shè)計不光光是埋頭做設(shè)計,也是同學(xué)之間互相學(xué)習(xí)和互相交流經(jīng)驗(yàn)和知識的機(jī)會。也是我們大家向老師提出疑問和學(xué)以致用的機(jī)會,這讓我們不會成為只知道理論而不會將理論化為實(shí)踐中去的書呆子。我覺得課程設(shè)計就是一個復(fù)習(xí)課堂上學(xué)到知識的機(jī)會,也是一個加強(qiáng)學(xué)生動手能力設(shè)計的機(jī)會。更是一個讓學(xué)習(xí)得到升華的過程。</p><p><b> 六.源程序清單</b>
32、;</p><p><b> Qt界面程序:</b></p><p> //textfinder.h</p><p> #ifndef TEXTFINDER_H</p><p> #define TEXTFINDER_H</p><p> #include <QWidget>
33、</p><p> namespace Ui {</p><p> class TextFinder;</p><p><b> }</b></p><p> class TextFinder : public QWidget</p><p><b> {</b&
34、gt;</p><p><b> Q_OBJECT</b></p><p><b> public:</b></p><p> explicit TextFinder(QWidget *parent = 0);</p><p> ~TextFinder();</p><p
35、> private slots:</p><p> void on_findButtom_clicked();</p><p><b> private:</b></p><p> Ui::TextFinder *ui;</p><p> void loadTextFile();</p>&
36、lt;p><b> };</b></p><p> #endif // TEXTFINDER_H</p><p> //main.cpp</p><p> #include <QtGui/QApplication></p><p> #include "textfinder.h&qu
37、ot;</p><p> int main(int argc, char *argv[])</p><p><b> {</b></p><p> QApplication a(argc, argv);</p><p> TextFinder w;</p><p><b> w
38、.show();</b></p><p> return a.exec();</p><p><b> }</b></p><p> //textfinder.cpp</p><p> #include "textfinder.h"</p><p> #i
39、nclude "ui_textfinder.h"</p><p> #include <QtCore/QFile></p><p> #include <QtCore/QTextStream></p><p> TextFinder::TextFinder(QWidget *parent) :</p>
40、<p> QWidget(parent),</p><p> ui(new Ui::TextFinder)</p><p><b> {</b></p><p> ui->setupUi(this);</p><p> loadTextFile();</p><p>&l
41、t;b> }</b></p><p> TextFinder::~TextFinder()</p><p><b> {</b></p><p> delete ui;</p><p><b> }</b></p><p> void TextF
42、inder::on_findButtom_clicked()</p><p><b> {</b></p><p> QString searchString = ui->lineEdit->text();</p><p> ui->textEdit->find(searchString, QTextDocumen
43、t::FindWholeWords);</p><p><b> }</b></p><p> void TextFinder::loadTextFile()</p><p><b> {</b></p><p> QFile inputFile(":/input.txt"
44、;);</p><p> inputFile.open(QIODevice::ReadOnly);</p><p> QTextStream in(&inputFile);</p><p> QString line = in.readAll();</p><p> inputFile.close();</p>
45、<p> ui->textEdit->setPlainText(line);</p><p> QTextCursor cursor = ui->textEdit->textCursor();</p><p> cursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor, 1);&l
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 嵌入式課程設(shè)計報告2
- 嵌入式課程設(shè)計報告---嵌入式文件鎖應(yīng)用
- 嵌入式課程設(shè)計報告 (2)
- 嵌入式課程設(shè)計報告91452
- 《嵌入式系統(tǒng)設(shè)計》課程設(shè)計報告
- 嵌入式課程設(shè)計
- 嵌入式課程設(shè)計
- linux課程設(shè)計--嵌入式bootloader的移植分析
- 嵌入式課程設(shè)計報告--數(shù)字相框
- 嵌入式課程設(shè)計
- 嵌入式課程設(shè)計
- 嵌入式課程設(shè)計
- 嵌入式課程設(shè)計
- 嵌入式課程設(shè)計--linux系統(tǒng)的裁剪與移植
- 嵌入式課程設(shè)計報告畢業(yè)論文
- 嵌入式課程設(shè)計報告畢業(yè)論文
- 嵌入式硬件課程設(shè)計報告---電梯系統(tǒng)
- 嵌入式課程設(shè)計---嵌入式網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)
- 基于arm7的uclinux移植嵌入式課程設(shè)計
- 嵌入式課程設(shè)計--串口通信
評論
0/150
提交評論