基于A40I/T3 SDK平臺的QT4.8移植和應用開發(fā)連載(六)-盈鵬飛嵌入式

本文記錄了QT4.8圖形界面在全志A40I/T3 SDK平臺上的移植過程前塔,說明過程中可能會技術瑕疵崎逃,希望大家提供寶貴意見。

本文移植的平臺來自于盈鵬飛嵌入式的CoM-X40I/T3A平臺(處理器分別時是全志的A40I/T3)。

以下是盈鵬飛嵌入式CoM-X40I核心模塊的簡要介紹:


CoM-X40I產(chǎn)品特性:

采用Allwinner公司Cortex-A7四核A40i處理器,運行最高速度為1.2GHZ蝉稳;

支持Mali-400MP2?GPU,支持OpenGL ES 2.0 / OpenVG 1.1 standard

支持1080P視頻編碼掘鄙,支持H.264,VP8耘戚;多格式1080P 60fps視頻解碼 (H.265,H.264,VC-1, MPEG-1/2/4, VP8)?

支持雙屏異顯;支持HDMI V1.4A/RGB888/LVDS操漠,分辨率最高1920x1080收津;T3處理器不支持HDMI;

支持512-2G ?Bytes DDR3 SDRAM;

支持EMMC 4G-64G大容量電子盤浊伙,可啟動撞秋;

支持SDIO3.0,USB2.0 HOST&OTG嚣鄙,2路I2C吻贿,6路UART,2路SPI哑子,2路PWM

支持雙路以太網(wǎng),一路10/100M;一路10/100/1000M;

可定制寬溫產(chǎn)品舅列,替換AM335X

穩(wěn)定的操作系統(tǒng)的支持,可預裝Android7.0或者LINUX?3.10(可預裝Preempt Linux系統(tǒng))卧蜓;

超小體積帐要,郵票孔設計160pins, 尺寸為:45*45MM

以下是以CoM-X40I為核心板主板-SBC-X40I的功能圖:


以下為基于A40I/T3 SDK平臺的QT4.8移植和應用開發(fā)連載(六)內(nèi)容:

6 qt4程序發(fā)布

6.1應用程序發(fā)布簡介

應用程序經(jīng)過交叉編譯后烦却,發(fā)布到嵌入式主板前宠叼,一般需要執(zhí)行如下步驟:

移植程序依賴動態(tài)庫

添加程序相關資源

開機自動運行

程序的運行依賴于相關的動態(tài)庫,動態(tài)庫一般在程序運行之前發(fā)布,可執(zhí)行文件運行時可以搜索到冒冬。程序運行除需要指定動態(tài)庫之外伸蚯,還可能需要指定其他資源,如qt程序可能需要指定字體简烤、圖片等剂邮。

下面以qtdemo發(fā)布到SBC-X40I主板為例,介紹QT程序發(fā)布的問題横侦。程序發(fā)布需執(zhí)行如下步驟:

?移植qtdemo依賴動態(tài)庫

設置qtdemo查找動態(tài)庫路徑

相關字體挥萌、圖片資源

開機自動運行qtdemo程序

6.2移植依賴動態(tài)庫

qtdemo所需要的特定的動態(tài)庫,例如sqlite3枉侧,可在buildroot生成根文件系統(tǒng)時選擇組件(參考linux開發(fā)指南)引瀑,也可從交叉編譯鏈中找到并拷貝到主板根文件系統(tǒng)中。如果buildroot中也沒有集成榨馁,一般需要單獨進行移植憨栽。下面是qtdemo依賴動態(tài)庫(庫版本可能略有區(qū)別):

// glibc :c運行庫,幾乎所有動態(tài)庫都依賴該庫翼虫。

libdl.so.2

libgcc_s.so.1

libc.so.6

ld-linux-armhf.so.3 ?

//qtlib庫

libQtCore.so.4.8.4 ????????????????????

libQtGui.so.4.8.4 ??????????????

libQtNetwork.so.4.8.4 ?????????????????????????????

libasound.so.2.0.0 ????????????????

libfreetype.so.6.10.0 ????????????????

libid3tag.so.0.3.0 ?????????????????????????????????????????

libmad.so.0.2.1

libncurses.so.5.9

libpng14.so.14.12.0

libsqlite3.so.0.8.6

// c++運行庫

libstdc++.so.6.0.17

libstdc++.so.6.0.17-gdb.py

libz.so.1.2.7

//觸摸屏庫

libts-1.0.so.0.0.0

ts/

terminfo@

6.3 linux下程序搜索動態(tài)庫的說明及先后順序

linux下一般程序運行時查找動態(tài)庫的方法如下所示:

1屑柔、系統(tǒng)默認搜索動態(tài)庫路徑

linux系統(tǒng)默認情況下會在/lib和/usr/lib目錄下搜索動態(tài)庫,所以可將qtdemo所需動態(tài)庫添加到該目錄即可珍剑。SBC-X40I主板將glibc庫放在/lib目錄下掸宛,其他qtdemo依賴動態(tài)庫/usr/lib 目錄下。

2招拙、根據(jù)環(huán)境變量LD_LIBRARY_PATH查找

方法:如設置添加/usr/test為查找動態(tài)庫路徑唧瘾,可在目標板/etc/profile文件中添加如下語句:

export LD_LIBRARY_PATH=/usr/test:$ LD_LIBRARY_PATH,如下圖所示:

執(zhí)行命令:source /etc/profile,即可添加/usr/test為動態(tài)庫的查找路徑迫像,如下圖所示:

此時將qtdemo所需動態(tài)庫添加到/usr/test目錄即可劈愚,在profile文件中加載增加環(huán)境變量在系統(tǒng)中一直有效,同時也是全部用戶有效闻妓。有些情況下,主板上運行的多個程序可能依賴的同一個動態(tài)庫版本不同掠械,如果統(tǒng)一用profile文件進行配置由缆,將導致某個程序運行出現(xiàn)問題。這時最好的辦法是使用終端有效的腳本進行臨時配置猾蒂,程序啟動后均唉,環(huán)境變量即失效。具體做法是需要配置環(huán)境變量的時候肚菠,執(zhí)行運行下腳本(指令:source *.sh)舔箭,在SBC-X40I主板上提供了qt4.8.sh腳本,具體如何應用請查看《配置qt自啟動》一章節(jié)。

6.4添加字體

用戶可以選擇下載自己喜歡的字體层扶,放在主板/usr/local/Qt-4.8.7/lib/fonts目錄下箫章,如果只需要一種字體可以把其他字體全部刪除,只保留所需要的字體镜会。

移植文泉驛字體庫(qpf格式)為例:

下載地址為:http://download.csdn.net/detail/yanzi1225627/4478888檬寂,下載完成后復制到虛擬機

linux系統(tǒng)下,可通過scp命令將其拷貝到主板/usr/local/Qt-4.8.7/lib/fonts目錄下戳表。如下圖所示:

在主板/usr/local/Qt-4.8.7/lib/fonts目錄下可看到該字體桶至,如下圖所示:

6.5指定圖片資源

Qt程序在使用圖片時,可以直接編譯進工程匾旭,也可以在程序運行中加載圖片镣屹。qtdemo程序同時使用了這兩種方法,普通小圖片采用直接編譯進工程中价涝,也有部分圖片是在程序運行時才加載女蜈。在qtdemo程序config_all.h中指定了運行時才加載的圖片,如下圖所示:

所以需要在SBC-X40I主板的/usr/qt4demo目錄下需要建立image目錄飒泻,將所提及的圖片拷貝到該目錄下即可鞭光。

另外,qtdemo程序運行音頻測試時指定了/usr/qt4demo/mediafile/aaa.mp3文件泞遗,所以在SBC-X40I主板上的/usr/qt4demo/mediafile/目錄下也需要植一個aaa.mp3的文件惰许。

最后,qt程序中默認只支持png格式圖片史辙,如果需要使用其他格式汹买,需要添加相應圖片插件,默認路徑為/usr/lib/目錄下聊倔,SBC-X40I主板默認支持的圖片格式:jpeg 晦毙、tga 、ico 耙蔑、tiff格式见妒。

至此,即可在SBC-X40I主板上正常運行qtdemo程序甸陌,輸入命令:

Target#cd /embfly_test/qt4demo

Target#./qtdemo –qws –fn -wenquanyi &,

執(zhí)行結果如下所示:

可以看到qt界面须揣,觸摸屏可以正常工作。如下圖所示:

命令參數(shù):

–qws :作為服務器模式運行

-fnwenquanyi:指定qtdemo 使用wenquanyi字體

6.3章節(jié)-指定動態(tài)庫路徑钱豁、6.4章節(jié)-添加字體以及6.5章節(jié)-指定圖片資源耻卡,這幾個qt程序需要的資源可以通過預制到<SDK>/buildroot-201611/target/user_rootfs_extra對應的目錄下,在固件打包時將該程序打包到主板的根文件系統(tǒng)牲尺。

6.6實現(xiàn)開機自動運行qtdemo程序

SBC-X40I主板如何實現(xiàn)開機自動運行qt程序卵酪?

1)系統(tǒng)啟動時,會執(zhí)行rcS腳本,rcS腳本會調(diào)用/etc/init.d目錄下以S+兩位數(shù)字+文件名字命名的文件溃卡。

2)調(diào)用S94Qt-application腳本后溢豆,該腳本會調(diào)用launch_qt48.sh腳本,該腳本會執(zhí)行觸摸屏的校驗塑煎,最后調(diào)用runqt48腳本沫换,該腳本在/etc/init.d目錄下

因此用戶要啟動其他程序,只要更改runqt48的腳本即可最铁。

首先讯赏,上電SBC-40I主板,在終端中查看下開機自動運行腳本/etc/init.d/rcS冷尉,如下所示:

可看到開機自動運行/etc/init.d/目錄下以S+兩位數(shù)字+文件名字命名的文件漱挎。

在主板的SBC-X40I主板的/etc/init.d/目錄下找到S94Qt-application文件,如下圖所示:

查看S94Qt-application雀哨,可以看到它執(zhí)行了5步:

第一步:見方框1磕谅,判斷是否有qt4.8的庫目錄存在,如果有存在雾棺,則執(zhí)行. /qt4.8.sh進行初始化膊夹。

初始化的目的是為了下一步觸摸屏校驗可運行,qt4.8.sh的內(nèi)容如下:

第二步:見方框2捌浩,這一步是判斷觸摸屏的節(jié)點是否存在放刨,為下一步執(zhí)行觸摸檢驗做準備。截圖中使用了ts0/ts1/ts2節(jié)點尸饺,實際上在SBC-X40I主板上进统,我們使用的是touchscreen0節(jié)點。

第三步:見方框3浪听,這一步是判斷觸摸屏是否已經(jīng)存在校驗文件pointercal螟碎,該文件配置在主板的/etc目錄下。如果該文件已經(jīng)存在了迹栓,那么觸摸屏不再需要校驗掉分。如發(fā)現(xiàn)校驗文件不準,則可以把該文件刪除后克伊,

重新執(zhí)行ts_calibrate指令進行重新校驗叉抡。

第四步:見方框4,這一步是執(zhí)行觸摸屏校驗工作答毫。看腳本中是使用了絕對路徑/usr/local/tslib1.4/bin/ts_calibrate來調(diào)用程序季春。在腳本中已經(jīng)配置了如下腳本洗搂,可以直接執(zhí)行ts_calibrate指令亦可。

export T_ROOT=/usr/local/tslib1.4

export PATH=$T_ROOT/bin:$PATH

第五步:見方框5,執(zhí)行runqt48腳本耘拇,runqt48腳本內(nèi)容如下:

其中撵颊,. ?/qt4.8.sh是臨時設置qt4.8的環(huán)境變量,然后執(zhí)行/embfly_test/qt4demo/qtdemo程序惫叛。

如果用戶要啟動自己的程序倡勇,只要更改runqt48的腳本(把這個程序/embfly_test/qt4demo/qtdemo換掉)即可。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末嘉涌,一起剝皮案震驚了整個濱河市妻熊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌仑最,老刑警劉巖扔役,帶你破解...
    沈念sama閱讀 222,729評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異警医,居然都是意外死亡亿胸,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評論 3 399
  • 文/潘曉璐 我一進店門预皇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來侈玄,“玉大人,你說我怎么就攤上這事吟温⌒蛳桑” “怎么了?”我有些...
    開封第一講書人閱讀 169,461評論 0 362
  • 文/不壞的土叔 我叫張陵溯街,是天一觀的道長诱桂。 經(jīng)常有香客問我,道長呈昔,這世上最難降的妖魔是什么挥等? 我笑而不...
    開封第一講書人閱讀 60,135評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮堤尾,結果婚禮上肝劲,老公的妹妹穿的比我還像新娘。我一直安慰自己郭宝,他們只是感情好辞槐,可當我...
    茶點故事閱讀 69,130評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著粘室,像睡著了一般榄檬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上衔统,一...
    開封第一講書人閱讀 52,736評論 1 312
  • 那天鹿榜,我揣著相機與錄音海雪,去河邊找鬼。 笑死舱殿,一個胖子當著我的面吹牛奥裸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播沪袭,決...
    沈念sama閱讀 41,179評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼湾宙,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了冈绊?” 一聲冷哼從身側(cè)響起侠鳄,我...
    開封第一講書人閱讀 40,124評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎焚碌,沒想到半個月后畦攘,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,657評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡十电,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,723評論 3 342
  • 正文 我和宋清朗相戀三年知押,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鹃骂。...
    茶點故事閱讀 40,872評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡台盯,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出畏线,到底是詐尸還是另有隱情静盅,我是刑警寧澤,帶...
    沈念sama閱讀 36,533評論 5 351
  • 正文 年R本政府宣布寝殴,位于F島的核電站蒿叠,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蚣常。R本人自食惡果不足惜市咽,卻給世界環(huán)境...
    茶點故事閱讀 42,213評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望抵蚊。 院中可真熱鬧施绎,春花似錦、人聲如沸贞绳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽冈闭。三九已至俱尼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間萎攒,已是汗流浹背号显。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評論 1 274
  • 我被黑心中介騙來泰國打工臭猜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人押蚤。 一個月前我還...
    沈念sama閱讀 49,304評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像羹应,于是被迫代替她去往敵國和親揽碘。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,876評論 2 361

推薦閱讀更多精彩內(nèi)容