舒明蕾,華驚宇,賴尚校(浙江工業(yè)大學(xué) 浙江省通信網(wǎng)技術(shù)應(yīng)用研究重點(diǎn)實(shí)驗(yàn)室,浙江 杭州 310023)
基于DM365平臺(tái)的Qt/Embedded移植
舒明蕾,華驚宇,賴尚校
(浙江工業(yè)大學(xué)浙江省通信網(wǎng)技術(shù)應(yīng)用研究重點(diǎn)實(shí)驗(yàn)室,浙江杭州 310023)
概述了基于達(dá)芬奇技術(shù)的TM320DM365的硬件環(huán)境搭建,介紹了嵌入式系統(tǒng)軟件架構(gòu),并詳細(xì)闡述了Qt/E的安裝移植,包括tslib1.4庫(kù)的編譯并做相應(yīng)的設(shè)置,概述了嵌入式GUI開發(fā)流程。最后,使用一個(gè)簡(jiǎn)單的應(yīng)用程序?qū)σ浦驳那闆r進(jìn)行了測(cè)試。
達(dá)芬奇技術(shù);Qt嵌入式系統(tǒng);移植
隨著嵌入式系統(tǒng)以及圖像處理技術(shù)的發(fā)展,嵌入式監(jiān)控設(shè)備已經(jīng)廣泛用于視頻監(jiān)控中。客戶對(duì)于視頻監(jiān)控終端需要人性化的人機(jī)交互界面。Qt/Embedded是Trolltech發(fā)布的面向嵌入式系統(tǒng)的 Qt版本[1],具有很好的跨平臺(tái)特性以及為用戶提供豐富的API接口和界面設(shè)計(jì)友好等優(yōu)點(diǎn)[2]。但由于 PC機(jī)編譯的應(yīng)用程序不能直接在嵌入式系統(tǒng)中應(yīng)用,本文針對(duì)這一問(wèn)題,主要介紹了基于以TI的TMS320DM365為代表支持觸摸屏的嵌入式界面開發(fā)與移植。為類似的嵌入式Qt應(yīng)用程序開發(fā)提供了參考。
1.1硬件平臺(tái)搭建
達(dá)芬奇技術(shù)是為數(shù)字視頻而設(shè)計(jì)的系統(tǒng)解決方案,采用了ARM+DSP雙核架構(gòu),ARM處理器上使用Linux操作系統(tǒng)來(lái)負(fù)責(zé)外圍模塊的管理,而DSP端執(zhí)行音視頻編解碼算法[3]。既滿足視頻應(yīng)用在控制方面、計(jì)算能力的需求,又降低了系統(tǒng)成本,同時(shí)也降低了系統(tǒng)的復(fù)雜性。TI的TMS320DM365芯片正是達(dá)芬奇平臺(tái)的典型代表。DM365芯片的優(yōu)點(diǎn)還包括提供了豐富的外設(shè)接口,比如DDR接口、Flash接口、SD卡接口、UART串口等[4]。DM365的視頻處理后端將經(jīng)視頻處理子系統(tǒng)處理的圖像輸出到外部顯示器上。顯示模塊選用的是一款支持觸摸屏的5.7英寸、分辨率為640×480的TFT-LCD。整體的硬件設(shè)計(jì)如圖1所示。
圖1 硬件結(jié)構(gòu)框圖
1.2嵌入式系統(tǒng)開發(fā)環(huán)境搭建
啟動(dòng)過(guò)程中,首先加載系統(tǒng)引導(dǎo)程序,包括RBL (ROM Boot Loader)、UBL、U-Boot。首先執(zhí)行 RBL,從NAND上讀取UBL并復(fù)制到內(nèi)存中。UBL初始化系統(tǒng)硬件,從NAND中讀取U-Boot的內(nèi)容復(fù)制到DDR里,UBoot加載內(nèi)核,完成內(nèi)核的啟動(dòng)。啟動(dòng)后,會(huì)將 NAND Flash中的 yaffs2文件系統(tǒng)掛載到根目錄下,至此,整個(gè)系統(tǒng)開發(fā)環(huán)境搭建完畢。
嵌入式系統(tǒng)中常用的圖形用戶界面有MiniGui、Micro Windows和Qt。與其他軟件相比,Qt可移植性強(qiáng),開發(fā)周期短;信號(hào)和槽這一機(jī)制使得用戶交互更方便。從開發(fā)周期、應(yīng)用領(lǐng)域等多方面考慮,選用Qt設(shè)計(jì)圖形界面。但由于PC機(jī)上的系統(tǒng)與嵌入式 Linux系統(tǒng)差異比較大,因此不能直接復(fù)制PC機(jī)上調(diào)試好的Qt應(yīng)用程序到嵌入式系統(tǒng)中運(yùn)行。而且針對(duì)不同的嵌入式系統(tǒng),需要不同的Qt平臺(tái)開發(fā)應(yīng)用程序。本文介紹了基于Qt/ Embedded開發(fā)應(yīng)用程序,并移植到 DM365硬件平臺(tái)的方法。
2.1tslib庫(kù)的研究與編譯安裝
帶觸摸屏的移動(dòng)終端,電磁噪聲會(huì)導(dǎo)致觸摸屏出現(xiàn)觸摸不準(zhǔn)確等問(wèn)題。tslib為驅(qū)動(dòng)處獲得原始的采樣數(shù)據(jù)提供去噪、去抖等功能,將設(shè)備坐標(biāo)轉(zhuǎn)換為對(duì)應(yīng)的屏幕坐標(biāo),為應(yīng)用層提供接口。先下載tslib源碼包,解壓tslib1.4.tar.gz到工作目錄下。
tslib文件夾中ts.conf配置了需要加載的插件、插件順序以及一些約束參數(shù)。由于源碼中沒(méi)有指定module_raw,而需要input模塊從輸入設(shè)備讀取數(shù)據(jù),所以去掉module_raw input語(yǔ)句前注釋。同時(shí)TSLIB_PLUGINDIR一定要配置正確,使tslib找到模塊文件。驅(qū)動(dòng)向應(yīng)用層匯報(bào)的是絕對(duì)坐標(biāo)信息,為了獲取到觸摸屏的驅(qū)動(dòng)數(shù)據(jù),應(yīng)修改plugins目錄下的input-raw.c源碼。否則校準(zhǔn)觸摸屏沒(méi)有反應(yīng)。
static int ts_input_read(…)這個(gè)函數(shù)體中,ABS_X獲取的為x坐標(biāo),ABS_Y獲取的y坐標(biāo),ABS_PRESSURE為報(bào)告觸摸事件,需定義ABS_X為0x35,ABS_Y為0x36,ABS_PRESSURE為0x30。數(shù)據(jù)為讀取的設(shè)備接口信息。
$./autogen.sh//生成configure腳本
$./configure--host=arm-linux--perfix==/usr/local/ tslib
配置成功生成 makefile文件,make編譯生成庫(kù)文件,但是發(fā)現(xiàn) make的時(shí)候報(bào)錯(cuò),需要建立一個(gè) cache文件。則編譯之前需要執(zhí)行如下命令:
$echo“ac_cv_func_malloc_0_nonnull=yes”>make.cache
編譯成功后,執(zhí)行make install進(jìn)行安裝。
宿主機(jī)常用的是以X86為核心的PC機(jī),而目標(biāo)板是ARM體系結(jié)構(gòu),需要在宿主機(jī)上建立適用于在目標(biāo)板上的交叉編譯環(huán)境[5]。達(dá)芬奇DVSDK為DM365提供的交叉編譯工具鏈為arm_v5t_le-gcc和arm_v5t_le-g++。修改/home/sml/QT/tslib目錄以及子目錄下所有 makefile文件,將文件中所有的arm-linux-和 arm-unkown-linux-用arm_v5t_le-替換。安裝完成后將/usr/local目錄下生成的tslib文件夾復(fù)制到目標(biāo)板文件系統(tǒng)/usr/local/下。
2.2Qt/Embedded-arm編譯安裝與移植
Qt/Embedded-arm是Qt嵌入式版本。為了在開發(fā)板上運(yùn)行Qt程序,需利用交叉編譯器對(duì)Qt/Embedded編譯生成庫(kù)文件。解壓源碼qt-everywhere-opensource-src-4. 7.2.tar.gz。進(jìn)入生成的qt-embedded目錄后配置參數(shù),參數(shù)的選擇也影響到 arm資源的占用率。鍵入make會(huì)根據(jù)生成文件夾中的makefile文件進(jìn)行編譯。編譯完成后生成一個(gè)QtE-4.7.2-dm365庫(kù)文件夾,鍵入make install將庫(kù)文件安裝設(shè)定的/usr/local/Trolltech目錄下。而此時(shí)僅將庫(kù)文件拷貝到內(nèi)核文件系統(tǒng)中是不可用的,為了讓嵌入式系統(tǒng)找到頭文件、動(dòng)態(tài)庫(kù)、設(shè)備等資源,需要設(shè)定環(huán)境變量?;谟布脚_(tái),執(zhí)行如下操作:
$./configure-prefix/usr/local/Trolltech/QtEm-4.7.2-dm365-opensource-confirm-license-embeddedarm-releasefast-qt-libpng-no-qt3support-qt-libtiff-qt-libjpeg-sharedno-webkit-maketools-no-largefile-nomakedemos-nomake examples-multimedia-no-cups-xplatform qws/linux-arm-g++-nomake docs-no-qvfb-qt-mouse-pc-no-mouse-linuxtp-qtmouse-tslib-L/usr/local/tslib1.4/lib(指定動(dòng)態(tài)庫(kù)的路徑)-I/ usr/local/tslib1.4/include(指定 tslib的路徑)
$make
$make install
$cp-r/usr/local/Trolltech/QtE-4.7.2-dm365/home/sml/filesys/ usr/local/(拷貝上位機(jī)生成庫(kù)文件到內(nèi)核系統(tǒng)存放庫(kù)文件的路徑)
修改/home/sml/filesys/etc/profile文件,例如指定 Qt文件目錄,校準(zhǔn)文件的存放位置,觸摸屏設(shè)備,指定幀緩沖設(shè)備,tslib庫(kù)文件路徑等。設(shè)置開發(fā)板環(huán)境變量:
$export QTDIR=/usr/local/Trolltech/QtEm-4.7.2-dm365 $export PATH=$QTDIR:$PATH
$export QWS_DISPLAY=LinuxFb:/dev/fb0
$export TSLIB_CALIBFILE=/etc/pointercal
$export TSLIB_TSDEVICE=/dev/input/event0
$export TSDIR=/usr/local/Trolltech/tslib
…
2.3Qt/Embedded應(yīng)用程序開發(fā)流程
基于DM365硬件平臺(tái)的嵌入式GUI開發(fā)流程中,首先使用安裝好的軟件Qt Creator開發(fā)應(yīng)用程序。大致步驟是創(chuàng)建初始化對(duì)象,對(duì)控件進(jìn)行布局,然后通過(guò)建立信號(hào)連接自定義的槽函數(shù)來(lái)實(shí)現(xiàn)窗口動(dòng)作。完成的工程利用集成開發(fā)工具和嵌入式Qt4庫(kù)進(jìn)行交叉編譯。接著將編譯通過(guò)的應(yīng)用程序通過(guò)NFS網(wǎng)絡(luò)文件系統(tǒng)掛載到目標(biāo)板調(diào)試。調(diào)試通過(guò)后,將應(yīng)用程序拷貝到文件系統(tǒng)中,并打包燒寫到開發(fā)板的 Flash中,最后設(shè)置為目標(biāo)板自啟動(dòng)[5]。流程如圖2所示。
圖2 Qt/E應(yīng)用程序開發(fā)流程
ts_calibrate是一個(gè)應(yīng)用程序,采集了五組點(diǎn)坐標(biāo),用戶點(diǎn)擊校準(zhǔn)光標(biāo)后獲取相應(yīng)數(shù)據(jù),對(duì)其進(jìn)行一套算法變化后得到X值、Y值和scaling等共7個(gè)值,寫到校準(zhǔn)文件中。運(yùn)行tslib/bin/ts_calibrate校準(zhǔn)程序,屏幕上會(huì)陸續(xù)出現(xiàn)5個(gè)光標(biāo)圖,依次點(diǎn)擊完畢后/etc目錄下產(chǎn)生一個(gè)pointercal文件,證明觸摸庫(kù)已經(jīng)安裝成功。終端顯示運(yùn)行的結(jié)果如圖3所示。
圖3 校準(zhǔn)程序的運(yùn)行結(jié)果
拷貝一個(gè)編譯通過(guò)的demo程序到文件系統(tǒng)dm365目錄下:
$cp/usr/local/qt-demo/home/sml/filesys/opt/dm365/
通過(guò)串口連接目標(biāo)板,文件系統(tǒng)掛起之后 minicom執(zhí)行如下操作:
#cd/opt/dm365/
#./qt-demo-qws&
觸摸屏上顯示如圖4所示結(jié)果,且鼠標(biāo)跟隨觸摸位置的移動(dòng)而移動(dòng),移植測(cè)試成功。
圖4 qt-demo程序測(cè)試圖
本文從硬件平臺(tái)的搭建到軟件環(huán)境搭建的介紹,重點(diǎn)介紹了如何移植觸摸屏的庫(kù)和闡述了Qt/E基于DM365嵌入式系統(tǒng)下的移植方法。在此嵌入式監(jiān)控終端之上,可以進(jìn)行各種各樣的嵌入式GUI開發(fā)。
[1]張春艷.基于 Qt的嵌入式圖形用戶界面研究與實(shí)現(xiàn)[D].大連:大連海事大學(xué),2008:11-14.
[2]陳敬,向偉.基于嵌入式 Linux的 Qt/Embedded移植與應(yīng)用開發(fā)[J].電腦信息與技術(shù),2013,21(1):57-60.
[3]Texas Instruments.TMS320DM365 digital media system onchip[EB/OL].(2011-07-01)[2014-10-10].http://www.ti.com/ lit/ds/symlink/tms320 dm365.pdf.
[4]張晨鵬.基于 DM365的音視頻服務(wù)器的設(shè)計(jì)[D].武漢:武漢理工大學(xué),2011:17-27.
[5]孫巍,馮偉興.Qt/Embedded應(yīng)用程序在 ARM-Linux系統(tǒng)中的開發(fā)與應(yīng)用 [J].自動(dòng)化技術(shù)與應(yīng)用,2011,30 (8):37-38.
Qt/Embedded transplantation based on DM365 platform
Shu Minglei,Hua Jingyu,Lai Shangxiao
(Zhejiang Provincial Key Laboratory of Communtication Networks and Applications,Zhejiang University of Technology,Hangzhou 310023,China)
This paper expatiates the construction of hardware system based on the TM320DM365 of the Davinci Technology.It introduces the software architecture,and elaborates the process of compiling and installing Qt/E which includes the transplant of tslib1.4 library and the corresponding setting.Then it illustrates the development process for embedded GUI.At last,a simple application program is selected to test the transplant.
Davinci technology;Qt embedded system;transplantation
TN919.8
A
1674-7720(2015)05-0019-03
(2014-10-10)
舒明蕾(1991-),女,在讀研究生,主要研究方向:通信與信息系統(tǒng)。