闡述了Linux在嵌入式系統(tǒng)上的實現(xiàn)方法,針對嵌入式圈形用戶界面QtE進行了簡要介紹,并簡單描述了Linux操作平臺的建立,著重分析了qtopia移植到S3C2410的過程。
1、Qt/Embedded簡介
??? Qt/Embedded(簡稱QtE)是一個專門為嵌入式系統(tǒng)設計的圖形用戶界面(Graphical Uset Interface簡稱Gin)的工具包。Qt是挪成Trolltech軟件公司的產(chǎn)品,它為各種系統(tǒng)提供圖形用戶界面的工具包,QtE是嵌入式版本。
??? QtE擁有同Qt一樣的API,開發(fā)者只需了解Qt的API,不用關心程序所用到的系統(tǒng)和平臺。QtE是模塊化和可剪裁的,它的結構很好的優(yōu)化了內(nèi)存和資源的利用。同時它擁有自己的窗口系統(tǒng),可以直接對底層的圖形驅動進行操作。QtE可以應用在所有主流平臺和CPU上,支持所有主流的嵌入式Linux,對于在Linux上的QtE的基本要求只不過是Frame Buffer設備和一個C++編譯器。而且QtE還提供壓縮字體俄格式,即使在很小的內(nèi)存中,也可以提供一流的字體支持,支持多種的硬件和軟件的輸入,支持Unicode、反鋸齒文本和Alpha混合的圖片。
2 Qtopia簡介
??? Qtopia是Trolltech公司在QtE的基礎上開發(fā)的一個應用環(huán)境,這個應用環(huán)境特為移動和手持設備開發(fā),其特點就是擁有完全的、美觀的GUI,同時它也提供可上百個應用程序用于管理用戶信息、辦公、娛樂、Internet交流等。
??? Qtopia是一種全方位的應用開發(fā)平臺,它可用于基于嵌入式linux的PDA,移動電話,web pads,以及其他移動計算設備。Qtopia構建于Qt/Embedded之上,是專為基于linux的消費電子產(chǎn)品提供和創(chuàng)建圖形用戶界面而設計的。常見的有兩種版本:
?? Qtopia Phone版:專為基于linux的智能電話和多功能電話設計。
???Qtopia PDA版:專為基于linux的PDA設計 ;
?? Qtopia的特點是,視窗操作系統(tǒng);同l步窗口;開發(fā)環(huán)境;本地化支持;游戲和多媒體.PIM應用程輸入法;個性化選項;intemet應用程序;java集成;無線支持。
3、Ot/Embedded開發(fā)
?? QT/Embedded通過Qt API與LinuxI/O設施直接交互,成為嵌入式linux端口。同Qt/Xl 1相比,QT/Embedded很節(jié)省內(nèi)存,其不需要一個X服務器或是Xlib庫,它在底層擯棄了xⅡb,采用framebuffer(幀緩存)作為底層圖形接口。
??? 同時, 將外部輸入設備抽象為keyboard和mouse輸入事件。 QT/Embedded的應用程序可以直接寫內(nèi)核緩沖幀,這可避免開發(fā)者使用繁瑣的Xlib/Server系統(tǒng)。
??? 嵌入式軟件開發(fā)通常都采用交叉編譯的方式進行,基于Qt/Embedded;fIJ Qtopia的GUI應用開發(fā)也采用這樣的模式。先在宿主機上調試應用程序,調試通過后,經(jīng)過j交叉編譯移植到目標板上。
Qt/Embedded直接寫入幀緩存,在宿主機上則是通過q v f b (v i r t u a 1 .framebuffer)來模擬幀緩存。qvfb是x窗J口用來運行和測試Qtopia應用程序的系統(tǒng)程序。qvfb使用了共享內(nèi)存存儲區(qū)域(虛擬的幀緩存)來模擬幀緩存并且在一個窗口中模擬一個應用程序來顯示幀緩存,顯f示的區(qū)域被周期性的改變和更新。
4、建立Linux操作平臺
4.1安裝交叉編譯器
??? 由于Linux內(nèi)核對交叉編譯器有很大的依賴,所以不同版本的Linux需要相應的編譯器,在這里所用的是Redhat 9,內(nèi)核是2.4的,用cross一2.95.3是可以的。利用SSH工具~gWindows下的交叉編譯器的安裝包拷到Linux的/usr/local/arm下,如果沒有則需要新逢目錄。進入該目錄輸入以下命令進行加壓安裝:
# tar jxvf croSS 2.95.3.tar.bz2
解壓完后新建路徑,輸入:
# export PATH=$PATH :/usr/
local/arm/2.95.3/bin
因為編譯QT需要更高版本的編譯器,所以這里再安裝cross一3.3.2方法同上。
4.2編譯內(nèi)核
??? 在根目錄下新建$3C2410,把內(nèi)核源碼拷到該目錄下,解壓,生成目錄2。4.18一rmk7,進入該目錄,配置內(nèi)核,一般用的較多的是菜單配置,輸入:
# make menuconfig
配置完以后選擇默認保存,輸入以下命令進行編譯:
# make dep (建立依賴關系,如果要重新編譯,則需用make clean命令)
# make zImage
編譯完后在2.4.18-rmk7/arch/arm/boot下生成zlmage鏡像文件,燒寫到板子Flash的1分區(qū)中。
4.3 Bootloader
Bootloader簡單的說就是在操作系統(tǒng)內(nèi)核運行之前運行的一小段程序,通過這小段程序我們可以初始化硬件設備,建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),其主要任務是將內(nèi)核映像從硬盤讀到ARM中,然后跳轉到內(nèi)核的入口點去運行,即開始啟動操作系統(tǒng)。在這里所用的Bootloader是U—boot-1.1.4。
把U boot—1.1.4.tar.bz2拷到根目錄的S3C2410中,解壓后生成u—boot一1.1.4目錄,進入該目錄,進行編譯。輸入:
# make smdk2410 config
# make cross—C0MPILE=armlinux一(由于已經(jīng)能夠生成路徑,如果編譯不通則輸入完整路徑:m a k ecross COMPILE=/usr/local/arm/bin/arm—linux )
生成U boot.bin文件燒制到ARM板子里。
5、移植qtopia
5.I所用資源
硬件:恒豐HFRK 24i 0B,三星$3C2410 ARM 920t
軟件:cross-2.95.3.tar.bz2
cross-3.3.2.切r.bz2
Linux 2.4.18.tar.gz
qt—xl1—2.3.2.tar.gz
qt—embedded一2.3.7.tar.gz
qtopia free一1.7.0.tar.gz
tmake一1.11.tar.gz
jpegsrc.v6b.tar.gz
e2fsprogs 1.35.tar.gz
5.2移植qtopia
以上創(chuàng)建了Linux操作平臺,可以移植QT了,首先在根目錄下新建一個目錄這里假設為Q T,可以利用S S H 遠實現(xiàn)windows和Linux下的文件按共享,上傳和下載資料和文件,假設所用源文件已經(jīng)下載flwindows中,從SSH拷貝fIJLinux/Qt下,在Qt下建立兩個新目錄。
mkdir qt——x86
mkdir qt—am
qt—x86存放宿主機上虛擬Qt環(huán)境,qt—arm存放目標板Qt環(huán)境。
5.2.1宿主機移植所需工具及環(huán)境變量聲明
①Tmake一1.1l 生成Makefile文件環(huán)境變量:T M A K E D I R /TMAKEPATH/PATH
②Qt—xl1—2.3.2 Qvfb一虛擬幀緩存工具器
Uic一用戶界面編輯器
Designer Qt圖形設計器
環(huán)境變量:LD— LIBRARY— PATH一/PATH
③Qt—embedded一2.3.7 Qt庫支持libqte.so
環(huán)境變量:Q T E D I R /LD— — LIBRARY— — PATH— — /PATH
④Qtopia free一1.7.0 應用程序開發(fā)包、桌面環(huán)境
環(huán)境變量:Q P E D I R /LD— LIBRARY— PATH/PATH
5.2.2建立宿主機上Qt虛擬環(huán)境
(1)解壓qt—xl1 2.3.2.tar.gZ并將生成的qt一2.3.2一xll文件改名為qt
cd /Qt/qt——x86
tar zxvf../qt—xl 1-2.3.2.tar.gz
mv qt-2.3.2 qt
解壓qt-embedded 2.3.7.tar.gz并將生成的文件改名為qte
tar zxvf ../ qt-embedded 2.3.7.tar.gz
mv qt-embedded一2.3.7 qte
解壓qtopia—fre 1.7.0.tar.gz,并改名為qpe
tar zxvf ../qtopia free—1.7.0.切r.gz
mv qtopia—free一1.7.0 qtp
解壓tmake-1.11.tar.gz,并改名為tmake
tar zxvf../tmake-1.11.切r.gz
mv tmake 1.I1 tmake
交叉編譯jpegsrc.v6b.tar.gz得到libuuid
tar zxvf../jpegsrc.v6b.tar.gz. /configure
m ake
make install
交叉編譯e2fsprogs一1.35.tar.gz,生成libjpeg.8o
. /configure
make
得到libtools程序
. /configure
修改生成的Makefle文件:
prefix = /arm——target/qte
C C /usr/local/arm/2.95.3/bin/arm—linux-gcc
AR= /usr/local/arm/2.95.3/bin/arm—linux -ar rc
AR2= /usr/local/arm/2.95.3/bin/arm—linux-ranlib
cp jconfig.doc jconfig.h
mkdir -p /arm——targetqte/man/man1
make
cpⅡbjpeg.so/usr/local/arm /2.95.3/arm linux/lib
(2)設置環(huán)境變量
cd /Qt/qt——x86
export QTDIR=$PWD/qt
export QTEDIR=$PWD/qte
export QPEDIR--$PWD/qpe
export PATH=$QPEDIR/bin:$QTEDIR/bin:$QTDIR/bin:$PATH
expert PATH=$QTEDIR/tmake/bin:$PATH
export TMAKEPATH=QTEDIR/tmake/lib/qws/linux-generic-g++
e x P o r tLD LIBRARY—PATH=$QPEDIR/lib:$QTEDIR/lib:
$QTDIR/lib:$LD—LIBRARY—PATH
(3)編譯
① qt
cd$QTDIR
ls
運行configure文件,中間提示,輸入yes即可,可用以下命令跳過echo yes I./configure(后面可以加一些參數(shù))
make
生成運行qvfb的tools
make—C tools/qvfb
mv tools/qvfb/qvfb bin
cp bin/uic$QTEDIR/bin
cd ..
② qte
export QTDIR=$QTEDIR
export QTEDIR=$QTEDIR
export QPEDIR=$QPEDIR
cd $QTEDIR
cp $QPEDIR/src/qt/qconfig—qpe.h
src/tools/
echo yes I./configure-qconfig qpe
— — system——jpeg ——gif——qvfb ——thread
depths\ 4,8,16,32
make sub-src
③ qpe
expo rt QTDIR=$REAL—QTEDIR
expo rt QTEDIR=$REAL—QTEDIR
expo rt QPEDIR=$REAL—QPEDIR
cd $QPEDIR/sre
./configure
make
以上就完成宿主機上的虛擬環(huán)境構建,啟動一下虛擬幀緩存,在sheH里運行:
cd QTDIR/bin
. /qvfb depth 32 width 640一height 480
就可以調出xl l下虛擬鎮(zhèn)緩沖的設備。其中一depth32參數(shù)表示顏色深度為32位,一width 640一height 480參數(shù)表示鎮(zhèn)緩沖分辨率為640(寬) 480(高)。
. /qpe
5.2.3移植
cd/Qt/qt-arm
tar zxvf../qt-embedded一2.3.7.tar.gz
mv qt-2.3.7 qt
tar zxvf ../qtopia—free 1.7.0.tar.gz
mv qtopia-fre-1.7.0 qpe
tar zxvf ../tmake-1.11.tar.gz
mv tmake-1.11 tmake
export QTDIR=$PWD/at
export QPEDIR=$PW D/qpe
expo rt TMAKEDIR=$PW D/tmake
e x P o r t TM AKEPATH=$TMAKEDIR/lib/aws/linux arm—g++
export PATH=SQTDIR/bin:$QPEDIR/bin:$TMAKEDIR/bin:$PATH
e x P o r t? LD LIBRARY— PATH=$QPEDIR/lib:$QEDIR/lib:$LD LIBRARY—PATH
cD bin/uic $REAL—QTEDIR/bin
cd SQTDIR
cp$QPEDIR/src/qt/qconfig qpe.hsrc/tools/
make sub-src
移植QT中的相關設備接El、鼠標、觸摸屏、移植qtopia相關設備接口。
編譯Qtopia
cd/Qt/qt——arm
expo rt QTDIR=$PWD/qte
expo rt QPEDIR二$PWD/(Ⅱ)e
expo rt
PATH=$QPEDIR/bin:$QTDIR/bin:/home/mic/control—project/daq—roodule/tools/bin:$PATH
export PATH $QTDIR/tmake/bin:$PATH
export TMAKEPATH=$QTDIR/tmake/lib/qws/linux—arm—g++
e x P o r tLD— LIBRARY PATH:$QPEDIR/lib:$QTDIR/lib:$LD—LIBRARY—PATH
cd$QPEDIR/src
. /configure
make
進人qtopia—free一1.7.0目錄下,將目錄apps,bin,etc,il8n,lib,pics,plugin拷貝到根文件系統(tǒng)的/qtdemo下,增加環(huán)境變量
export QTDIR-/qtdemo
將qt embedded和qtopia的庫拷貝到/qtdemo/lib目錄下,將字體目錄fonts拷貝到/qtdemo/lib目錄下,就可以運行/qtdemo/bin目錄下的qpe。
6 結束語
??? 嵌入式系統(tǒng)已經(jīng),一泛的應用到電子產(chǎn)業(yè)中,它的開源、模塊化和可剪裁極大的節(jié)l省了資源,QtE作為嵌入式GUI也倍受青!睞,它不但延續(xù)了Qt桌面系統(tǒng)的所有功能,而且節(jié)省空間和內(nèi)存。qtopia專為linux的消費電子產(chǎn)品提供和創(chuàng)建圖形用戶界面而設計的,具有美觀的GUI。本文主要介紹了它移植到S3C2410-ARM9開發(fā)板的過程,利用宿主機搭建的虛擬環(huán)境,再對qtopia進行編譯,完成到三星HFRK2410 j的移植。Qtopia良好的圖形用戶界面和它緊湊的模塊化結構在電子產(chǎn)品界一定會得到迅速的發(fā)展。
評論
查看更多