嵌入式GUI與Qt Embedded

2021-04-22 17:05:11 字數 2076 閱讀 5664

由於開發中使用的開源嵌入式3d圖形庫klimt是基於opengl 和opengl|es的,而opengl和opengl|es需要有嵌入式gui的支援,以提供給它與圖形裝置的介面,以便把三維影象顯示給使用者。所以我需要選擇一種嵌入式gui系統,然後把它移植到嵌入式linux上,再有是把基於opengl的klimt移植到這個gui上。

通過對幾種嵌入式gui的詳細比較,並且結合我的嵌入式3d開發的要求,我決定選擇qt/embedded 作為我開發的嵌入式gui,對於研究用途,它是gpl授權的,比較高效,可移植性很強,qt提供豐富的除錯和開發工具,有豐富的圖形開發介面。

接下來我們需要對qt/embedded進行到嵌入式linux上的移植。下面我們可以簡稱qt/embedded為qte。

.1 配置qt/embedded移植環境

qt/embedded的移植過程中需要用到一些工具或者一些環境設定,所以在移植之前我們需要對這些工具或環境進行配置。

.1.1 配置交叉編譯工具鏈

對於arm架構的嵌入式處理器,網際網路上有自由的arm linux 交叉編譯工具鏈,工具鏈中包括一切交叉編譯我們的arm平台程式時使用的編譯程式,鏈結程式,優化程式,常用的函式庫等等。獲得後交叉工具鏈後只要安裝在pc機上的檔案系統就可以供我們使用。

.1.2 配置環境設定

移植qt/embedded過程中,它需要在環境設定中讀取交叉編譯鏈的路徑,以便實現到目標機器arm平台的交叉編譯,而不是x86平台的編譯;還有讀取動態連線庫的路徑等等,指定qt/embedded交叉編譯過程中需要使用的函式庫。

那麼我們需要設定的是

交叉編譯工具的路徑,我需要使用的交叉編譯工具是armv4l-unknown-linux工具,那麼我要把先前交叉編譯工具鏈的路徑加入到名稱為path的環境變數中。可以使用export系統命令設定,或者在系統配置檔案中進行設定。

指定qt/embedded的路徑。qt/embedded交叉編譯時需要使用的它存放目錄的qmake(qte程式makefile生成程式),moc,qws交叉編譯配置等工具,所以我們需要把qtdir環境變數設定為qt/embedded的目錄,還有把qt/embedded交叉編譯後的核心庫存放的路徑加入到ld_library_path環境變數中,以便編譯qte程式時鏈結時使用。

.2 定製qt/embedded

由於qt/embedded是以面向多領域應用的嵌入式gui系統,所以針對目前的嵌入式3d開發,它有許多模組和特性是我們不需要的,這樣我們就可以根據自己的需求,對qt/embedded進行定製,去掉一些不需要的特性或模組,也可以新增需要的特性或者模組。

qt/embedded 有專門的乙個configure 指令碼可以幫助我們定製,而不用手動定製。

首先我們需要指定交叉編譯目標平台的配置引數「-xplatform」,這個引數可以指定乙個用於目標平台編譯配置檔案,檔案裡指定了所要使用的交叉編譯工具,這要視你選擇的交叉編譯鏈而定;還有是一些編譯引數。qt/embedded的嵌入式移植都是用qws(qt window system)模式,所以編譯配置檔案的編寫可以參考它自帶的一些編譯配置檔案,或者如果自帶的編譯配置檔案裡有跟你的意願是一樣的,可以直接使用。

然後使用「-depths」 指定顏色深度列表,qt/embedded 支援多種顏色深度,有4,8,16,32,這對後面的3d程式很重要,我的開發板上的lcd的顏色深度是16位,所以配置時 16是肯定要的,否則三維影象的顏色顯示將會出現問題。

其次可以使用「-no」「-disable」引數去掉一些不使用的模組,如cups模組,stl模組,xml模組等。這樣可以大大減少qt/embedded核心庫的大小,有利於節省嵌入式裝置的儲存空間。

.3 交叉編譯qt/embedded

可完全編譯,包括例子,也可以只編譯qt/embedded的核心庫。編譯後得到qt/embedded的動態鏈結核心庫,以備接下來開發qte程式開發和移植klimt移植之用。

.4 開發qt/embedded程式,並在開發板上調試執行

由於接下來的3d程式都是基於qte系統的,所以必須了解qte程式開發除錯的一些基本流程。

交叉編譯好後就可以通過前面已經配置好nfs網路檔案共享對qte程式進行在開發板上的除錯執行。

qte的嵌入式程式執行時是需要新增「-qws引數」,意思是指定qte程式以qws(qt window system)模式執行。

嵌入式GUI介紹

今天看了一下韋東山寫的 嵌入式linux開發完全手冊 解決了我很多關於qt的疑問。所以便寫一下今天的讀書總結吧。首先說一下linux的gui系統架構 linux下的gui大致可以分為六部分 1。x server 負責顯示,傳遞使用者輸入事件。主要包括鍵盤及滑鼠等硬體裝置的輸入 2,graohic l...

嵌入式GUI移植小結

幾天來,移植了乙個小型的gui,小,但是五臟俱全,基本體現了gui的理念,值得推薦學習。下面就移植的方方面面總結如下 1.gui的設計理念 我們知道,當我們不去動鍵盤,不去動觸控螢幕滑鼠的時候,是不會有gui動作的,中斷訊號時鐘訊號除外。所以,gui的設計出發點,實際上是事件,或者說是訊號,當然也可...

嵌入式系統中的GUI開發

近年來手持式裝置 消費類電子產品得到了飛速的發展。隨著這些產品使用者的增多,對其使用者介面也提出了越來越多的要求。在這類產品剛進入市場的時候,例如,手機 pda 數字機頂盒等,這類產品的使用者介面都比較單一,而到了今天,我們可以看到,在市場銷售的這些電子產品都具有漂亮的圖形使用者介面,甚至要求能夠支...