嵌入式GUI移植小結

2021-05-22 03:07:45 字數 1765 閱讀 6316

幾天來,移植了乙個小型的gui,**小,但是五臟俱全,基本體現了gui的理念,值得推薦學習。下面就移植的方方面面總結如下:

1.gui的設計理念:我們知道,當我們不去動鍵盤,不去動觸控螢幕滑鼠的時候,是不會有gui動作的,中斷訊號時鐘訊號除外。所以,gui的設計出發點,實際上是事件,或者說是訊號,當然也可以說是訊息-包裝過的訊號或者事件,有目的地並且有引數。所以說,gui的一種自然的設計理念是:事件驅動。那麼有了應用在沒有得到訊息時候在幹什麼呢?答案你已經猜到了,什麼也沒乾,只是在那等著訊息,也就是乙個等待訊息的迴圈。綜上,我們看出:gui自然的設計理念是:事件驅動,訊息迴圈。

2.gui的組成部分:我們知道,滑鼠鍵盤觸控螢幕是和使用者互動的裝置,他們從使用者那裡得到使用者的意圖,通過中斷或者其他方式告訴處理器;處理器允許我們用軟體寫乙個中斷服務函式來響應響應的中斷,當然所有的中斷處理器已經知道了,只是什麼時候來不知道;比如觸控螢幕被按下了,中斷被通知給了處理器,處理器呼叫了軟體的中斷服務函式,這是我們用各種方式獲取硬體的資料。到此,我們知道觸控螢幕被按下,這是事件,我們獲得的資料經過包裝後,這是訊息,應為現在應用已經在等著我們的訊息了,所以現在要做的只是應用我們事先約定的方式,把訊息投遞給應用就好了。所以,gui的乙個重要組成部分是輸入層次,即gui要有個線專門負責收集事件,包裝訊息,投遞給其他部分。我們要顯示給使用者,當然螢幕輸出必不可少。有了輸入,有了輸出,我們還有個把輸入程式設計輸出的部分,那就是gui的伺服器部分了,說桌面也行,但是不一定看的見,他負責所有的請求,傳送分派所有的訊息等等。綜上,我們看出:gui的組成部分是:輸入,輸出以及桌面伺服器。

3.gui的依賴關係:我們知道,不可能要我們從處理器啟動**開始寫個gui,沒有意義,更失去了模組化的優勢。所以,gui下層要建立在乙個不大不小的作業系統之上,有多工可以,沒有也可以。我們要輸出,一定要有顯示驅動的支援,最小也要乙個畫像素函式;我們要輸入,一定要有輸入驅動,最小也要有乙個事件的座標點。綜上,我們看出:gui依賴乙個不大不小的系統,乙個輸入驅動,乙個輸出驅動。

4.gui設計要求:我們知道,根據應用不同,對gui的要求也不一樣。有的場合要求處理速度快,介面相對簡陋也無妨;有的場合要求介面華麗,處理器速度不在考慮範圍內;綜上,我們看出:gui的設計不可能面面俱到,只能側重於乙個應用要求最高的方面,而往往設計的結果是方方面面因素的綜合和折中。

5.基於linux的gui的移植優勢:我們知道,linux效能卓越,原始碼開放,不是商業運營。而且方方面面都在不斷的提公升。完美支援多種處理器,硬體驅動豐富,效能和穩定性高,現代作業系統的所有特性都給予支援。熟悉核心的話,裁剪和修改也很方便。高層次的抽象級別,針對輸出的framebuffer抽象,一系列的輸入裝置支援,好用的裝置檔案系統,完美的多執行緒,多程序支援,為gui的移植鋪平了道路。寫gui這樣的系統軟體,似乎和寫應用軟體幾乎無差別。

6.基於linux的gui的移植須知:

(1)linux提供了framebuffer來抽象輸出裝置,我們所有的輸出基於framebuffer就好,但是有些linux發行版預設沒有開啟framebuffer功能,這時gui並沒有輸出;而且在發行版的圖形介面下針對framebuffer的輸出會不正常,一定要進入到字元模式。framebuffer相關的問題參照:http://efaq.blogbus.com/logs/48889260.html

和http://efaq.blogbus.com/logs/48326728.html

。(2)gui要獲取輸入裝置的資訊,linux提供了輸入裝置檔案,gui的相關部分只要從相應裝置檔案獲取相應格式的資料即可。比如觸控螢幕驅動ts0,我們在gui中開啟,讀取,之後封裝成訊息分派個gui的其他部分。

(3)注意已有gui的螢幕大小,環境變數依賴,檔案系統依賴等~

嵌入式移植

深度學習嵌入式移植 1 移植原因 演算法必須在優化後的硬體上執行,因為學習成千上萬的資料可能需要長達幾周的時間。移動端其實不需要做tranning,只需要進行propagating,所以問題集中在移動端能不能存放並執行更大的network。2 常見的移動端開發裝置 nvidiajetsontx1 t...

嵌入式GUI介紹

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

嵌入式產品 移植

1.檢查記憶體是否夠大,不夠大編譯時會崩潰,彈出其它錯誤提示 2.解壓原始碼時用對應的命令解壓,不要偷懶用 xvf 3.make install 安裝時用sudo許可權1.解壓原始碼 2.配置 configure 不加引數採用預設安裝,安裝到 usr local prefix temp 安裝目錄為 ...