版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、主流嵌入式Linux下GUI解決方案,基本概念介紹 GUI (graphical user interfaces)圖形用戶界面 (GUI),圖形用戶接口.為用戶提供界面友好的所見(jiàn)所得的操作環(huán)境. 主流解決方案 Qt/Embedded 圖形庫(kù)大而全,能夠開發(fā)較為復(fù)雜的圖形系統(tǒng) Microwindows 項(xiàng)目規(guī)模較小、功能較為薄弱,缺乏等三方軟件開發(fā)的支持 MiniGUI小
2、巧、靈活,源碼相對(duì)較少,基本概念,Qt Qt是Trolltech公司所開發(fā)的一個(gè)跨平臺(tái)FrameWork環(huán)境 (一個(gè)運(yùn)行的平臺(tái),有一堆常用的“庫(kù)”)多平臺(tái)的C++圖形用戶界面應(yīng)用程序框架 支持組件編程 (把系統(tǒng)分割成一些組件或設(shè)施的一種思想 ,修改項(xiàng)目代碼的一些部分不會(huì)破壞整個(gè)系統(tǒng) )Trolltech 跨平臺(tái)應(yīng)用程序界面框架 (QT)嵌入式Linux開發(fā)的應(yīng)用程序平臺(tái),能夠應(yīng)用到PDA和各種移動(dòng)設(shè)備(Qtopia)Qt/
3、E Qt庫(kù)開發(fā)商Trolltech公司開發(fā)的面向嵌入式系統(tǒng)的Qt版本采用C++封裝豐富的控件資源較好的可移植性,Qt/Embedded,Qt/E實(shí)現(xiàn)結(jié)構(gòu)Qt/Embedded的底層圖形引擎基于framebuffer 計(jì)算機(jī)顯示存儲(chǔ)器的一部分,存放屏幕圖像的內(nèi)容。 framebuffer是一種驅(qū)動(dòng)程序接口 將顯示設(shè)備抽象為幀緩沖區(qū) 顯示內(nèi)存的一個(gè)映像 (用戶) QWSserver 負(fù)責(zé)事件的
4、服務(wù)分發(fā),,Qt/Embedded,QPE(Qt Plamtop Environment) 針對(duì)PDA軟件的整體解決方案底層的 GUI系統(tǒng)、Window Manager、Soft Keyboard 上層的PIM(個(gè)人信息管理器 )、瀏覽器 、多媒體 Qtopia是基于QT/Embedded開發(fā)的一個(gè)嵌入式的窗口系統(tǒng)和應(yīng)用程序集 Qtopia平臺(tái)組成Qtopia 庫(kù)(Qt/E,libqpe,libqtopia1,qtopiap
5、im) Qtopia server/laucher控制窗口系統(tǒng)進(jìn)程間通信發(fā)起所有應(yīng)用和其他核心任務(wù)的主要服務(wù)程序,,系統(tǒng)平臺(tái)介紹,系統(tǒng)平臺(tái)軟件結(jié)構(gòu)圖引導(dǎo)裝載程序vivi設(shè)備驅(qū)動(dòng)(包括幀緩存fb) 嵌入式Linux內(nèi)核 文件系統(tǒng)yaffs(只讀cramfs,需做修改)基于QT/Embedded和Qtopia的用戶圖形界面以及應(yīng)用程序,,,Qt/E 、Qtopia,構(gòu)建GUI時(shí)用于 Qt開發(fā)的典型工具 tmake:跨平臺(tái)
6、的Makefile生成器moc:用于Qt C++擴(kuò)展的metra-object編譯器designer:用于設(shè)計(jì)窗口組建的應(yīng)用程序, (*.ui文件) uic:從界面文件生成代碼的用戶界面編譯器(*.cpp&*.h)qvfb(virtual frame buffer):X窗口用來(lái)運(yùn)行和測(cè)試Qtopia應(yīng)用程序的系統(tǒng)程序。即Qt的虛擬仿真窗口 。qpe(Qtopia executable):用來(lái)處理所有的用戶程序界面所需
7、要的包tmake tmake-1.13.tar.gz:用來(lái)得到tmake工具/bin: progen工具:生成.pro文件tmake工具:組織生成Makefile,,Qt/E 、Qtopia,所需要的包qt-embedded-2.3.10.tar.gz:Qt的嵌入式版本。/bin:模擬目標(biāo)機(jī)器的qvfb后臺(tái)程序,如moc 、qvfb 、uic/lib:qvfb上PC機(jī)模擬運(yùn)行時(shí)需要加載的庫(kù)文件 libqte.so*qt-x
8、11-2.3.2.tar.gz:Qt的X11版本/bin :在PC機(jī)器上的運(yùn)行的開發(fā)工具和編譯程序,如desinger 、findtr 、moc 、uic等 /lib:源文件編譯成PC機(jī)器X11環(huán)境下的共享聯(lián)接庫(kù) libqt.so*qtopia-free-2.1.1.tar.gz:官方網(wǎng)站提供的Qtopia免費(fèi)版。Qtopia是一個(gè)用Qt/Embedded開發(fā)的程序 :綜合的應(yīng)用程序平臺(tái)和用戶界面 e2fsprogs-1.
9、38.tar.gz:為了得到qtopia所需的uuid.h和libuuid.so。,,Qt/E 、Qtopia,建立本機(jī)Qtopia 虛擬平臺(tái) 設(shè)定tmake的環(huán)境變量 export TMAKEPATH=/root/qtopia/tmake-1.13/lib/qws/linux-x86-g++指定tmake在生成Makefile時(shí)使用本機(jī)的編譯器 注:環(huán)境變量的設(shè)置非常重要(指定路徑、庫(kù)、頭文件)編譯qt-x11目的:生成m
10、oc、uic、qvfb、designer 復(fù)制到qt-embedded\bin目錄 export QTDIR=$PWDexport PATH=$QTDIR/bin:$PATH(指定命令搜索路徑 )export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH(共享庫(kù)路徑 )配置qt-embedded編譯選項(xiàng) ./configure -system-jpeg -gif -no-xft -q
11、config qpe -qvfb -depths 4,8,16,32使Qtopia平臺(tái)支持jpeg、gif格式的圖形 指定Qt 嵌入式開發(fā)包(qconfig-local.h )生成虛擬緩沖幀工具qvfb,并支持4,8,16,32 位的顯示顏色深度,,Qt/E 、Qtopia,建立本機(jī)Qtopia 虛擬平臺(tái) 使用make命令編譯qt-embedded,用來(lái)生成Qt庫(kù)(libqte.so) 編譯 e2fsprogs庫(kù)文件libuu
12、id.so提供uuid支持 唯一字符串生成庫(kù)編譯libjpeg、libpng得到j(luò)peg/png圖形編碼解碼程序庫(kù)libjpeg.so/ libpng .soqtoppia需要Qt/Embedded配置為支持jpeg、gif 配置并交叉編譯Qtopia生成應(yīng)用程序以及桌面環(huán)境,,Qt/E 、Qtopia,qtopia目錄結(jié)構(gòu) apps/Applications:應(yīng)用程序桌面配置文件apps/Games:游戲桌面配置文件
13、apps/Settings:系統(tǒng)設(shè)置桌面配置文件bin:二進(jìn)制可執(zhí)行文件configs:編譯配置文件目錄doc和docs:qtopia的參考文檔etc:應(yīng)用配置文件目錄include/qpe:與qtopia相關(guān)的頭文件目錄inputmethods:輸入法library:qtopia部分源代碼目錄pics:與應(yīng)用相關(guān)的圖片存放目錄plugins:各種插件目錄,如mpeg3解碼插件、輸入法插件等s
14、ounds:音頻文件存放目錄taskbar:桌面程序的源代碼(qpe的源代碼),,Qt/E 、Qtopia,測(cè)試Qt/E桌面環(huán)境有源文件progressbar.cpp指定環(huán)境變量TMAKEPATH=…/qws/linux-x86-g++使QTDIR指向Qt/Embedded的安裝路徑以及庫(kù)progen –t app.t –o progressbar.pro(生成工程文件.pro)tmake -o Makefile hell
15、o.pro(生成Makefile文件) 使用LINUX系統(tǒng)自帶的make進(jìn)行整個(gè)程式的編譯聯(lián)接生成二進(jìn)制的可執(zhí)行文件progressbar運(yùn)行qvfb來(lái)模擬Virtual framebuffer(指定模擬器長(zhǎng)、寬),,Qt/E 、Qtopia,建立本機(jī)Qtopia 虛擬平臺(tái) 測(cè)試Qt/E桌面環(huán)境qvfb -width 640 -height 480 &在qvfb上加載二進(jìn)制文件,運(yùn)行程式.如:./progressb
16、ar -qws 建立本機(jī)Qtopia 虛擬平臺(tái) 在Virtual framebuffer 中實(shí)現(xiàn)Qtopiacd /root/qtopia/qtopia-2.1.1-host/binqvfb &sleep 10./qpe.sh qvfb:運(yùn)行Qt 的虛擬緩沖幀工具 把顯示結(jié)果輸出到虛擬緩沖幀,出現(xiàn)桌面環(huán)境,,Qt/E 、Qtopia,qte/qtopia在2410s上的移植軟件環(huán)境PC 機(jī)操作系統(tǒng)
17、REDHAT LINUX 9.0 MINICOM ARM-LINUX 開發(fā)環(huán)境配置NFS(網(wǎng)絡(luò)文件系統(tǒng))使計(jì)算機(jī)系統(tǒng)通過(guò)網(wǎng)絡(luò)訪問(wèn)其它計(jì)算機(jī)系統(tǒng)的目錄和文件遠(yuǎn)程訪問(wèn)控制修改etc/export指定文件夾共享可訪問(wèn) /root/share 192.168.0.* (rw,sync,no_root_squash)配置minicom友好易用的串口通信程序 /etc/minirc.dfl中編輯系統(tǒng)范圍的缺省值 建立arm-l
18、inux-gcc交叉編譯環(huán)境在某個(gè)主機(jī)平臺(tái)上(比如PC上)用交叉編譯器編譯出可在其他平臺(tái)上(比如ARM上)運(yùn)行的代碼的過(guò)程 生成的編譯工具在目錄/usr/local/arm/2.95.3/bin環(huán)境:與PC機(jī)不同的庫(kù)函數(shù)和編譯器Host-〉交叉編譯工具鏈 -〉源代碼-〉二進(jìn)制文件-〉目標(biāo)板可執(zhí)行,,Qt/E 、Qtopia,qte/qtopia在2410s上的移植交叉編譯e2fsprogs./configure --enab
19、le-elf-shlibs 支持elf共享庫(kù)(linux標(biāo)準(zhǔn)可執(zhí)行程序格式 )--host=arm-linux 指定目標(biāo)機(jī)類型 --with-cc=/usr/local/arm/2.95.3/bin/arm-linux-gcc 指定編譯器 --with-linker=/usr/local/arm/2.95.3/bin/arm-linux-ld 指定連接--prefix=/usr/local/arm/2.95.3/arm-linu
20、x 指定安裝路徑 交叉編譯jpeg、libpng需要修改Makefile文件交叉編譯zlib一個(gè)壓縮解壓程序庫(kù)提供庫(kù)libz.so* 交叉編譯tslib是一個(gè)觸摸屏的庫(kù),它提供諸如濾波、去抖、校準(zhǔn)之類的功能,為不同的觸摸屏提供了一個(gè)統(tǒng)一的接口提供觸摸屏共享庫(kù)libts.so等修改qte-2.3.10交叉編譯環(huán)境參數(shù)文件使其增加對(duì)觸摸屏的支持,,Qt/E 、Qtopia,qte/qtopia在2410s上的移植設(shè)定
21、tmake的環(huán)境變量 export TMAKEPATH=/root/qtopia/tmake-1.13/lib/qws/linux-arm-g++指定交叉編譯器交叉編譯Qt/Embedded ./configure -xplatform linux-arm-g++ -qconfig qpe -qvfb -thread-system-jpeg –tslib -system-zlib -system-libpng -gif -de
22、pths 4,8,16,32-xplatform linux-arm-g++,表示需要交叉編譯,編譯的目標(biāo)平臺(tái)是linux-arm-g++。具體可查看XPLATFORM文件。-qconfig qpe,表示這次編譯是為了支持QPE(Qtopia),只會(huì)生成QPE所需要的庫(kù)。-qvfb,qvfb支持。如果是在開發(fā)板上運(yùn)行,則不需要qvfb。-thread,是否支持多線程。選擇后會(huì)生成libqte-mt.so庫(kù)(挺大的)。生成庫(kù)文件
23、libqte.so.2.3.10*File命令檢查庫(kù)文件:file libqte.so.2.3.10libqte.so.2.3.10: ELF 32-bit LSB shared object, ARM, version 1 (ARM),not stripped 交叉編譯qtopia,,Qt/E 、Qtopia,qte/qtopia在2410s上的移植建立宿主機(jī)和開發(fā)板的通訊執(zhí)行 minicom重啟nfs /etc/rc.
24、d/init.d/nfs startmount –t nfs –o nolock 192.168.0.155:/root/share /mnt/nfs所需庫(kù)文件copy到目標(biāo)板的/usr/lib目錄所需其他文件copy到指定目錄qte/qtopia在2410s上的移植使用tslib修改目標(biāo)機(jī)/etc/profile文件export TSLIB_TSEVENTTYPE=H3600 對(duì)tslib中的設(shè)備結(jié)構(gòu)體定義 基于src
25、/ts_read_raw.c文件:查看觸摸屏驅(qū)動(dòng)程序數(shù)據(jù)結(jié)構(gòu),保證一致 typedef struct { unsigned short pressure; unsigned short x; unsigned short y; unsigned short pad;} TS_RET; 驅(qū)動(dòng)程序提供給上層應(yīng)用程序使用的信息,用來(lái)存儲(chǔ)觸摸屏的返回值,,項(xiàng)目進(jìn)度,觸摸屏坐
26、標(biāo)確定 觸摸屏本身有自己的指標(biāo)分辨率, 比如2048*2048(即它的坐標(biāo)系),它和我們LCD顯示屏的坐標(biāo)系(比如大點(diǎn)的1024*768)是兩個(gè)概念。 通過(guò)ADS控制器的SPI/I2C總線讀取到的觸摸屏的坐標(biāo)信息,是觸摸屏(貼在LCD上面很像包裝紙的一層薄膜)以它本身坐標(biāo)原點(diǎn)O(物理的固定的,4個(gè)邊角的某一個(gè))為參考的坐標(biāo)對(duì)(X,Y)原理是兩個(gè)電壓值(Nx,Ny),根據(jù)觸摸屏X,Y方向的參考電壓,做個(gè)線性比較,得到其
27、坐標(biāo)值(X,Y),,項(xiàng)目進(jìn)度,觸摸屏坐標(biāo)確定 實(shí)際使用過(guò)程中, 唯一的參考定位是LCD屏的坐標(biāo)系(x,y), tslib就是把兩個(gè)2維線性坐標(biāo)系通過(guò)幾個(gè)樣值的比較,對(duì)應(yīng)轉(zhuǎn)換, 即(X,Y)--->(x,y)(1)計(jì)算程序,調(diào)用LCD顯示驅(qū)動(dòng)程序,在LCD上打印幾個(gè)光標(biāo),選擇方便計(jì)算的,比如( x1,y1),(x2,y2)... (2) 觸摸屏驅(qū)動(dòng)程序應(yīng)該還沒(méi)有設(shè)計(jì)完成, 這里只需要做到其觸摸屏控制器初始化函數(shù)、
28、坐標(biāo)數(shù)據(jù)讀取函數(shù)和相應(yīng)的點(diǎn)擊中斷程序工作就可以了。分別點(diǎn)擊這些點(diǎn),程序中讀出這些點(diǎn)對(duì)應(yīng)的觸摸屏坐標(biāo)值(X1,Y1),(X2,Y2)... (3) 這時(shí)候,就可以得到了兩個(gè)坐標(biāo)系的對(duì)應(yīng)關(guān)系,具體就是代入程序中讀到的采樣值求解下面對(duì)應(yīng)方程的6個(gè)系數(shù)(a,b,c,d,e,f):{ x=aX+bY+c, y=eX+fY+g },,項(xiàng)目進(jìn)度,tslib校正原理 觸摸動(dòng)作模擬鼠標(biāo)
29、動(dòng)作傳統(tǒng)的鼠標(biāo):相對(duì)定位系統(tǒng),只和前一次鼠標(biāo)的位置坐標(biāo)有關(guān)觸摸屏:絕對(duì)坐標(biāo)系統(tǒng)絕對(duì)坐標(biāo)系統(tǒng)的特點(diǎn):每一次定位坐標(biāo)與上一次定位坐標(biāo)沒(méi)有關(guān)系,每次觸摸的數(shù)據(jù)通過(guò)校準(zhǔn)轉(zhuǎn)為屏幕上的坐標(biāo),不管在什么情況下,觸摸屏這套坐標(biāo)在同一點(diǎn)的輸出數(shù)據(jù)是穩(wěn)定的。不過(guò)由于技術(shù)原理的原因,并不能保證同一點(diǎn)觸摸每一次采樣數(shù)據(jù)相同,不能保證絕對(duì)坐標(biāo)定位,點(diǎn)不準(zhǔn),這就是觸摸屏最怕出現(xiàn)的問(wèn)題:漂移。對(duì)于性能質(zhì)量好的觸摸屏來(lái)說(shuō),漂移的情況出現(xiàn)并不是很嚴(yán)重。所以很多應(yīng)
30、用觸摸屏的系統(tǒng)啟動(dòng)后,進(jìn)入應(yīng)用程序前,先要執(zhí)行校準(zhǔn)程序。,,項(xiàng)目進(jìn)度,tslib校正原理 LCD坐標(biāo)和觸摸屏的物理坐標(biāo)的比較從觸摸屏中讀出的是點(diǎn)的物理坐標(biāo),其坐標(biāo)軸的方向、XY值的比例因子、偏移量、縮放因子都與LCD坐標(biāo)不同,,項(xiàng)目進(jìn)度,tslib校正原理 使觸摸屏坐標(biāo)和LCD坐標(biāo)一一對(duì)應(yīng),且以插件形式提供附加功能如濾波、防抖。tslib的API接口tsdev表示觸摸屏設(shè)備fd:打開觸摸屏設(shè)備的文件描述
31、符list:指針,依次存放指向tslib插件的指針,,項(xiàng)目進(jìn)度,tslib校正原理 tslib的API接口ts_sample存放按鍵消息x,y:按鍵的坐標(biāo)位置(以LCD坐標(biāo)系為基準(zhǔn))pressure:按鍵的輕重程度tv:按鍵發(fā)生的時(shí)間,,項(xiàng)目進(jìn)度,tslib校正原理 tslib的函數(shù)ts_open() 打開觸摸屏設(shè)備ts_config() 讀取觸摸屏配置文件并決定加載模塊 variance: 限定點(diǎn)
32、擊力度方差 dejitter: 去除點(diǎn)擊抖動(dòng) linear: 將觸摸屏上的坐標(biāo)轉(zhuǎn)換成LCD的坐標(biāo)ts_close() 釋放觸摸屏設(shè)備及相關(guān)資源ts_fd() 返回打開的觸摸屏設(shè)備的文件描述符ts_read() 從觸摸屏設(shè)備讀取采樣點(diǎn)坐標(biāo)開發(fā)板上運(yùn)行Calibrate程序,觸摸屏上任何一點(diǎn)的坐標(biāo)就可以在主機(jī)LCD屏上回顯出來(lái)。于是,就采集到了4個(gè)角的物理坐標(biāo)假設(shè)是6.4英寸屏,640X480分
33、辨率,則它們的像素坐標(biāo)分別是(20,20)、(20,460)、(620,460)和(620,20)。這樣,使用待定系數(shù)法就可以算出坐標(biāo)系之間的平移關(guān)系。比如: Vx = xFactor*Px + xOffset Vy = yFactor*Py + yOffset,,Qt/E 、Qtopia,qte/qtopia在2410s上的移植使用tslibexport TSLIB_CONSOLEDEVICE=none tslib運(yùn)行需要的
34、控制臺(tái),這里就是LCD屏幕 ,設(shè)定控制臺(tái)設(shè)備為none,否則默認(rèn)為/dev/tty, export TSLIB_FBDEVICE=/dev/fb0 指定幀緩沖設(shè)備export TSLIB_TSDEVICE=/dev/touchscreen/0raw 指定觸摸屏設(shè)備節(jié)點(diǎn)文件export TSLIB_CALIBFILE=/etc/pointercal 指定觸摸屏校準(zhǔn)文件pintercal的存放位置export
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 嵌入式Linux下GUI的設(shè)計(jì)和實(shí)現(xiàn).pdf
- 基于Linux嵌入式GUI的移植與研究.pdf
- 基于linux的嵌入式gui的研究與開發(fā)
- 基于Linux的嵌入式GUI的研究與開發(fā).pdf
- 基于Linux的嵌入式GUI的研究與實(shí)現(xiàn).pdf
- 手持嵌入式終端的圖像應(yīng)用解決方案.pdf
- 基于Linux的嵌入式GUI系統(tǒng)的研究與實(shí)現(xiàn).pdf
- word圖片嵌入式后無(wú)法顯示完整的解決方案
- 基于Linux的嵌入式驅(qū)動(dòng)程序?qū)崿F(xiàn)及GUI移植.pdf
- 基于嵌入式Linux操作系統(tǒng)的GUI研究與實(shí)現(xiàn).pdf
- 嵌入式Linux下頻譜儀的GUI及文件操作部分開發(fā).pdf
- 嵌入式GUI性能評(píng)測(cè).pdf
- 基于Linux的嵌入式系統(tǒng)GUI平臺(tái)開發(fā)與測(cè)試研究.pdf
- 嵌入式開發(fā)-嵌入式linux下可插拔輸入驅(qū)動(dòng)機(jī)制研究
- 嵌入式系統(tǒng)設(shè)計(jì)和網(wǎng)絡(luò)攝像機(jī)解決方案.pdf
- 基于嵌入式Linux系統(tǒng)的數(shù)字電視GUI圖形加速設(shè)計(jì).pdf
- 嵌入式Linux的驅(qū)動(dòng)程序設(shè)計(jì)與GUI界面開發(fā).pdf
- 基于嵌入式Linux系統(tǒng)的工控領(lǐng)域GUI平臺(tái)研究和實(shí)現(xiàn).pdf
- 嵌入式Linux操作系統(tǒng)和圖形用戶界面GUI的研究.pdf
- 式軟件理論、主流嵌入式系統(tǒng)硬件架構(gòu),和嵌入式
評(píng)論
0/150
提交評(píng)論