999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Qtopia的數碼相框軟件開發

2012-07-05 07:25:44周潔
華東交通大學學報 2012年2期
關鍵詞:嵌入式界面設置

周潔

(華東交通大學信息工程學院,江西 南昌330013)

數碼相框作為數碼相機的衍生品,近年來備受市場青睞。但由于一直以來在嵌入式Linux上開發系統軟件和應用程序缺乏強大的開發環境,中低端的數碼相框產品無論是在支持媒體播放格式種類、功能還是圖形環境方面都有很大可改進的空間。Qtopia的出現為使用嵌入式Linux作為操作系統的消費電子產品提供了開發圖形應用程序的便捷手段,很大程度上解決了移動設備上開發應用軟件的難題。研究在mini2440開發板上,通過基于Qtopia的嵌入式軟件開發,實現了一款能使用戶有較好使用體驗的數碼相框產品。

1 系統平臺介紹

數碼相框的硬件平臺采用友善之臂mini2440開發板。板上集成了三星主頻為400 MHz的高端微處理器S3C2440,64MB的SDRAM,128 MB的Nand Flash,2 MB的Nor Flash,以及一些常用的外設接口[1]。其中S3C2440采用ARM920T內核,其低功耗、簡單、優雅且全靜態設計非常適用于對成本和功耗敏感型的應用。在軟件方面,使用Linux-2.6.32.2內核,運行環境Fedora9,根文件系統為缺省安裝的文件系統。

整個系統軟件由引導裝載程序(U-Boot)、設備驅動(包括幀緩沖frame buffer)、嵌入式Linux內核、文件系統(YAFFS)以及基于QT/Embedded和Qtopia的應用程序組成[2],系統平臺軟件結構如圖1所示。

圖1 系統平臺軟件框架Fig.1 Software framework of system platform

2 Qt/Embedded和Qtopia體系結構

目前基于嵌入式Linux的主流GUI系統主要包括MiniGUI、Microwindows、OpenGUI、Qt/Embedded,這些GUI在接口定義、體系結構、功能特性存在很大差別,采取的技術路線也有所不同。MiniGUI是國內研發的一款性能優良、輕量級跨操作系統的嵌入式圖形用戶界面支持系統,采用了可伸縮的系統架構,其建立在比較成熟的圖形引擎之上,如SVGALib和LibGGI,開發的重點在于窗口系統、圖形接口之上,但由于支持力量薄弱,其維護和再開發成本不可預計。MicroWindows與MiniGUI均為自由軟件,目前開發的重點在底層的圖形引擎之上,主要特色在于提供了類似X的客戶/服務器體系結構,它以較小的資源消耗、通用的幀緩沖技術、靈活的分層設計模式和豐富的API等特點獲得了廣泛的關注。由于其底層圖形引擎存在無任何硬件加速能力、算法低效、代碼質量較差的問題,因此在窗口系統和圖形接口方面的功能還比較欠缺。OpenGUI性能穩定,最底層是用匯編實現的快速圖形引擎,非常適合于基于X86平臺的實時系統。但由于其內部使用私有API,因此在可移植性和可配置性的表現較差,并且不支持多進程[3-5]。

Qt/Embedded是Trolltech公司開發的GUI開發工具Qt的嵌入式版本。Qt/Embedded類庫完全采用C++封裝,控件資源豐富,可移植性好。由于Qt/Embedded不依賴于XServer或者Xlib,直接調用幀緩沖進行圖形繪制,節省了大量的系統資源,提高了效率。

Qtopia是一個基于Qt/Embedded的類似桌面系統的應用環境。作為一款面向嵌入式Linux的全方位應用程序開發平臺,Qtopia不僅提供了用于個人信息管理、辦公、娛樂、Internet網絡交流的應用程序,還為嵌入式應用程序提供了開發庫[4]。從圖2所示的Qt/Embedded體系結構可以看出GUI系統的圖形庫窗口組建都是由Qt/Embedded實現的。Qt/Embedded作為Qtopia的基礎類庫,為其提供了底層支持。Qtopia包含PDA和Phone兩個版本。本文所述的數碼相框應用程序使用PDA這個版本進行開發。

圖2 Qt/Embedded體系結構Fig.2 Structure of Qt/Embedded system

3 Qtopia開發環境的搭建及其移植[7-9]

3.1 建立Qtopia開發環境

搭建編譯平臺是嵌入式GUI開發的必要工作。Qtopia的軟件開發環境主要包含嵌入式Linux操作系統、軟件開發工具鏈以及相關源碼包。本文的開發環境是在PC上安裝VMware Workstation 6.5.1和Fedora9,內核版本為Linux-2.6.32.2,采用arm-linux-gcc-4.4.3交叉編譯器,源碼包為Qtopia-free-src-2.2.0。

由于Qtopia-2.2.0已經包含了Qt/Embedded,tmake以及QtX11,因此只要把Qtopia-2.2.0源碼包安裝好,就不需要再單獨安裝這三個包了。其中tmake為跨平臺makefile生成器,QtX11為Qt開發工具包,包括:qvfb(虛擬幀緩沖)、moc(用于Qt C++擴展的metra-object編譯器)、uic(用戶界面編譯器)、Qt designer(圖形設計器)等。

為了對Qtopia進行交叉編譯,需要準備如下的源碼包:

e2fsprogs-1.41.6.tar.gz:提供uuid支持,文件系統相關的庫。

jpegsrc.v6b.tar.gz:jpeg圖形編碼解碼程序庫。

libpng-1.2.16.tar.gz:png圖形編碼解碼程序庫。

tslib-1.4.tar.gz:觸摸屏中間件,提供濾波、去抖、校準等功能。

zlib-1.2.3.tar.bz2:壓縮解壓程序庫。

3.2 Qtopia-2.2.0在S3C2440上的移植

移植步驟可分為:

1)Qtopia相關庫文件的編譯安裝

建立兩個目錄分別存放交叉編譯生成的動態鏈接庫文件和必要的頭文件。

mkdir/home/arm/lib

mkdir/home/arm/include

vim/etc/profile ;修改后需重啟才能生效

在pathmunge下一行添加

pathmunge/usr/local/arm/4.4.3/bin;交叉編譯器路徑

完成e2fsprogs、jpeg、png、tslib、zlib庫文件的交叉編譯安裝。特別要注意的是觸摸屏中間件tslib編譯時可能因為版本的不同有較大差別,對于tslib-1.3.tar.bz2,在編譯前要根據本身觸摸屏程序的數據結構修改defaulttseventtype變量的值,默認為UCB1X00,使用該版本的tslib庫必須更改為H3600。而對于tslib-1.4.tar.gz版本,則不需修改,可直接在生成的配置文件ts.conf中選擇不同的數據結構類型。

2)使用下面的configure參數配置編譯安裝Qtopia。

./configure-qte'-embedded-no-xft-qconfig qpe-depths 16,32-system-jpeg-qt-zlib-qt-libpng-gif-no-g-exceptions-no-qvfb-xplatform linux-arm-g++-tslib’-qpe‘edition pda-displaysize 240x320-fontfamilies“helvetica fixed micro smallsmooth smoothtimes unifont”-xplatform linux-arm-g++-luuid’-qt2‘-no-opengl-no-xft’-dqt‘-no-xft-thread’

設置開發板環境變量:

export QPEDIR=/home/qtopia-home/nfs/arm-qtopia/qtopia-2.2.0/qtopia

export QTDIR=/home/qtopia-home/nfs/arm-qtopia/qtopia-2.2.0/qt2

export DQTDIR=/home/qtopia-home/nfs/arm-qtopia/qtopia-2.2.0/dqt

export TMAKEDIR=/home/qtopia-home/nfs/arm-qtopia/qtopia-2.2.0/tmake

export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++

export PATH=$QPEDIR/bin:$QTDIR/bin:$DQTDIR/bin:$PATH

export LD_LIBRARY_PATH=$QPEDIR/lib:$QTDIR/lib:$TMAKEDIR/lib:$LD_LIBRARY_PATH

3)編譯安裝成功之后,必須將所有需要的庫文件拷貝到動態鏈接庫目錄(一般是安裝位置下面的lib目錄)。庫文件包括交叉編譯器中關于arm平臺的庫文件,之前交叉編譯安裝準備的庫文件,支持Qtopia運行的庫文件。

4)將編譯生成的Qtopia安裝文件添加到根文件系統中,并燒寫至mini2440開發板上即完成了Qtopia到S3C2440上的移植。

4 數碼相框應用程序開發

4.1 Qtopia功能裁剪

當安裝完成Qtopi-2.2.0后,已經具備了數碼相框基本的功能,包括:圖片的瀏覽、簡單的編輯、幻燈片播放圖片;音樂播放;視頻播放功能;各種界面設置功能,包括上網協議設置、網絡參數設置、數碼相框界面設置(字體、背景、主題);安全功能;音量調節;屏幕亮度調節;輸入方式設置。其余功能均為冗余,可以根據源碼目錄src中的general.pri進行整體上的裁剪。方法如下:

接下來可以按自己的方式組織界面。找到源碼目錄或Qtopia安裝目錄下的apps文件夾,里面的每個文件夾對應一個選項卡。在其中既可以通過建立目錄來增加選項卡,也可以通過刪除目錄來刪除選項卡。每個目錄下面的desktop文件對應于某個選項卡下顯示的一個程序圖標,文件內容為程序圖標的設置,而隱藏文件。directory用于設置選項卡屬性。

數碼相框軟件系統包括文件列表主界面、應用程序主界面以及各功能界面。這些功能界面包括圖片瀏覽、文件管理、音樂、視頻、網絡等。各界面之間的切換和按鈕關系如圖3所示。

圖3 界面切換和按鈕的關系Fig.3 Relationship between interface switching and button

4.2 支持讀取SD卡的實現

數碼相框作為數碼相機的衍生品,必須要支持主流的半導體存儲卡,并能從中讀取圖像文件。以SD卡作為外部存儲介質。由于Linux-2.6.32.2已經自帶了S3C2440的SD卡驅動,因此只需在初始化代碼中加入SD平臺設備結構就可以實現SD卡自動掛載。在實現過程,SD卡曾一度不能正確識別,啟動時一直出現failed to get write protect的錯誤。由于SD卡側面移動的開關連接到了控制寫保護的引腳,因此有無寫保護其實就是檢查有無移動開關。在linux-2.6.32.2/drivers/mmc/host/s3cmci.c中應添加如下代碼:

disable_irq(host->irq); //在SDI未準備好之前先屏蔽SDI的中斷功能

host->irq_state=false;

host->pdata->gpio_detect=S3C2410_GPG(8);//設置GPG8為SD卡插入拔出的檢測

host->pdata->gpio_wprotect=S3C2410_GPH(8);//設置GPH8為有無寫保護的檢測

4.3 文件管理器的實現

由于數碼相框的存儲介質容量越來越大,必須通過有效的文件管理功能才能管理大量的文件。Qtopia-2.2.0本身不具有文件管理功能,但可以將Qtopia-1.7.0的文件管理器復制到目錄qtopia/src/applications/,在編譯工程文件qtopia/src/general.pri中添加filebrowser模塊,修改源碼使其具有搜索文件和文件夾的功能。添加搜索按鈕,并通過信號與槽函數顯示搜索界面。完成后設置好環境變量(source setQpeEnv),重新編譯安裝Qtopia即可。遞歸搜索文件及文件夾的部分關鍵代碼如下:

4.4 背景音樂的實現

背景音樂是通過移植madplay播放器以及相關庫文件,然后在源碼中添加相關調用和控制實現的。準備的文件如下:

libid3tag-0.15.1b.tar.gz:MPEG音頻解碼器MAD中所捆綁的ID3標簽操控庫

madplay-0.15.2b.tar.gz:音樂播放器主程序

libmad-0.15.1b.tar.gz:高精度MPEG音頻解碼庫

將上述文件放到madplay文件夾,并創建源碼目錄src-arm和安裝目錄target-arm,文件解壓至src-arm目錄,運行安裝腳本mymadplay.sh后,通過ls命令查看到target-arm目錄下包含bin.include.lib.man.share子目錄,其中lib中的文件就是madplay要調用的庫。將編譯生成的庫和bin目錄下的可執行文件復制到安裝好的Qtopia中對應的lib、bin目錄下,然后調用可執行程序madplay即可實現背景音樂的設置。

4.5 支持漢字功能的實現[10]

具體實現步驟為:

1)進入Qtopia源碼目錄,設置好環境變量source setQpeEnv。

2)增加編譯參數/configure-languages“zh_CN”,告知系統增加簡體中文支持。

3)make lupdate確保翻譯所必須的文件都存在而且是最新的,針對每種語言通過調整Qtopia的語言配置選項產生翻譯文件。

4)bin/nct_lupdate產生源代碼中無法找到的字符串的翻譯文件。

5)vim i18n/zh_CN/.directory

[Translation]

File=QtopiaI18N

Context=Chinese(MainLand)

[Desktop Entry]

Name[]=Chinese(MainLand)

make lupdate;再一次更新

cd i18n/zh_CN

6)打開翻譯窗體界面Linguist,將zh_CN目錄下所有ts文件全部翻譯并保存。在文件QtopiaDefaults.ts中,修改處,使其支持utf-8的字體格式。

7)在zh_CN目錄下執行lrelease*.ts,使每個ts文件生成對應的qm文件供Qtopia調用,make lupdate再次更新。

8)在zh_CN目錄下面建立兩個空文件:QtopiaRingTones.ts,QtopiaThemes.ts,然后在Qtopia目錄下執行make install,啟動時選擇支持中文。圖4,圖5為中英文界面對照。

圖4 英文界面Fig.4 English interface

圖5 中文界面Fig.5 Chinese interface

5 結語

消費電子類等嵌入式產品是否能讓用戶有更好的使用體驗關鍵在于人機交互技術的體現。Qtopia為基于嵌入式Linux的移動設備提供了一個很好的應用程序開發平臺,本文通過Qtopia在mini2440開發板上的移植與應用程序設計,快速開發出了一款高品質的數碼相框圖形系統。

[1]廣州友善之臂計算機科技有限公司.Mini2440用戶手冊[EB/OL].(2011-04-21)[2012-01-09].http://www.arm9.net/download.asp.

[2]趙拯宇,張雪英,金剛.Qt/Embedded和 Qtopia在 OMAP5912平臺上的移植及應用[J].儀器儀表用戶,2009,16(2):108-110.

[3]唐浩,代少升.Qt/Embedded在S3C2440平臺上的移植與開發[J].電視技術,2010,34(10):32-35.

[4]周恕義,徐曉亮,李曉勇.新型嵌入式多媒體系統架構[J].計算機工程與應用,2011,47(1):64-66.

[5]涂春萍,甘嵐,張旭.基于Linux下MiniGUI的圖像處理GUI平臺設計[J].華東交通大學學報,2011,28(2):55-59.

[6]解超,李善平.基于Linux 的嵌入式GUI[J].計算機工程與應用,2003,39(9):135-137.

[7]孫瓊.嵌入式Linux應用程序開發詳解[M].北京:人民郵電出版社,2006:12-20.

[8]吳嫻.基于Qtopia的嵌入式軟件開發[J].計算機工程與設計,2006,28(21):5190-5192.

[9]任善全,呂強,錢培德,等.一個基于Qt/Embedded的嵌入式Linux應用程序的實現[J].計算機應用與軟件,2006,23(2):105-107.

[10]劉匯丹,芮建武,姚延棟,等.基于Qt的國際化圖形用戶界面設計與實現[J].中文信息學報,2006,20(4):94-99.

猜你喜歡
嵌入式界面設置
中隊崗位該如何設置
少先隊活動(2021年4期)2021-07-23 01:46:22
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
搭建基于Qt的嵌入式開發平臺
基于FANUC PICTURE的虛擬軸坐標顯示界面開發方法研究
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
人機交互界面發展趨勢研究
本刊欄目設置說明
中俄臨床醫學專業課程設置的比較與思考
手機界面中圖形符號的發展趨向
新聞傳播(2015年11期)2015-07-18 11:15:04
Altera加入嵌入式視覺聯盟
主站蜘蛛池模板: 色综合久久88| 国产成人亚洲精品无码电影| 国产第三区| 国产乱人伦精品一区二区| 国产一二三区视频| 在线无码av一区二区三区| 亚洲中文字幕手机在线第一页| 色哟哟国产精品| 国产凹凸一区在线观看视频| 国产免费久久精品99re丫丫一| 中文字幕精品一区二区三区视频| 欧美a在线| 99久久亚洲综合精品TS| 国产精品专区第一页在线观看| 麻豆精品视频在线原创| 国产精品污污在线观看网站| 欧亚日韩Av| 久久福利网| 国产一区二区三区在线精品专区| 午夜无码一区二区三区在线app| 九九香蕉视频| 午夜免费小视频| 免费无码AV片在线观看国产| 日本五区在线不卡精品| 99一级毛片| 亚洲综合第一区| 亚洲欧美在线精品一区二区| 欧美不卡视频一区发布| 亚洲水蜜桃久久综合网站 | 亚洲国产欧美国产综合久久| 区国产精品搜索视频| 欧美一级高清视频在线播放| 日本免费a视频| 四虎永久免费在线| 精品伊人久久久大香线蕉欧美 | 国产第八页| 亚洲无码37.| 国产美女自慰在线观看| 四虎精品免费久久| 欧美黄网在线| 久久人妻系列无码一区| 激情综合婷婷丁香五月尤物| 伊人狠狠丁香婷婷综合色| 亚洲精品动漫在线观看| 成年人国产视频| 欧美成一级| 91网红精品在线观看| 亚洲美女视频一区| 中文字幕日韩丝袜一区| 亚洲女同欧美在线| 亚洲欧美天堂网| 欧美区一区二区三| 91极品美女高潮叫床在线观看| 久久国产免费观看| 日韩成人午夜| 国产呦精品一区二区三区下载| 极品国产在线| 人人看人人鲁狠狠高清| 久久香蕉国产线看观看精品蕉| 欧美在线视频不卡| 国产高清在线精品一区二区三区| 她的性爱视频| 蜜臀av性久久久久蜜臀aⅴ麻豆| 成年人福利视频| 国产精品页| 2021国产乱人伦在线播放 | 秘书高跟黑色丝袜国产91在线| 亚洲成a人在线观看| 国产精品网址你懂的| 中文字幕在线不卡视频| 91小视频在线观看| 日韩中文无码av超清| 国产91特黄特色A级毛片| 国产美女久久久久不卡| 日韩免费毛片视频| 国产毛片不卡| 国产成本人片免费a∨短片| 国产人成在线观看| 欧美一级99在线观看国产| 谁有在线观看日韩亚洲最新视频| 在线看片免费人成视久网下载| 国产成人亚洲无码淙合青草|