单片机小精灵t2_搭建S5P4418 ARM环境下 GPU OPENGL ES开发环境(适用 NANOPI2,3,M2,M3,T2,T3)...
本帖最后由 3guoyangyang7 于 2017-8-20 22:38 編輯
先說一下背景,這幾天做一個攝像頭處理的qt項目,攝像頭的像素是1280*720的,25fps,用qt的painter重繪widget窗體,會出現大量占cpu的情況,在刷新圖片的時候整個窗體的事件響應緩慢,定時器不準,不能忍受,基本上網上的辦法都嘗試過,什么多線程只在主線程刷圖啊,直接寫frambuffer啊,都沒有什么卵用。只能抓住最后的稻草,使用gpu刷圖,這樣cpu的占用肯定下來。所以第一步要做的就是搭建ARM環境下OPENGL ES開發環境。以下的方法不是小狂獨創,是在一個大神的指導下完成,有什么不對的地方還希望大家批評指正。
給出我的開發環境的參數。
開發板:友善之臂smart4418,(這個OPENGL ES的驅動支持mail400的gpu。只要是這個的應該都適用)。
開發板系統:內核3.4.39、系統 Ubuntu 16.04
PC機系統:ubuntu16.04
交叉編譯環境:arm-cortexa9-linux-gnueabihf-4.9.3 32位。
總的步驟按照大體上分為三部分,第一部分是編譯mail400的內核驅動,第二部分是編譯用戶層的OPENGL ES的庫,第三部分是測試,下面給出具體的做法。一、內核驅動的編譯
從給出的附件中,把所有內容拷貝到你相應內核目錄下/driver/gpu目錄下,如果有了就覆蓋就行,然后就是開始編譯內核,我把smart4418具體的編譯步驟給出,其他開發板的見各個廠商給的編譯步驟。1、交叉編譯環境的搭建
在這里默認交叉編譯環境已經建好了。具體可自行百度,或者查看廠商給的手冊,這個肯定會有。2、內核的編譯
因為我的內核是從git上下載的,是有分支的第一步一定要選擇分支,不然有些東西沒有,編譯會出錯
然后配置內核,先執行以下友善的配置操作,然后再更改我們自己的,我使用的是ubuntu core的系統,所以就按照友善給的手冊配置
然后執行menuconfig,添加GPU驅動
如果執行這一步出錯,那你是沒有安裝圖像話的配置界面,執行以下如下指令就行
添加gpu相應的驅動
這里如果你不知道在哪可以搜索以下,在arm文件夾下有個kconfig文件就是把選項加入到菜單的,搜索一下如下的就能找到
按照如下配置
退出menuconfig,并且保存設置。
然后執行如下指令,說實話這一條我也不知道干嘛的,一般情況下,現在就可以直接編譯了。既然友善給了就有他的道理我們執行一下
然后編譯內核,執行如下指令
這里的j8根據電腦的性能而定,j后邊的數字代表幾個線程同時編譯。
等待編譯完成,出現圖片所示的內容就證明編譯的沒有問題,否則就按照提示找錯誤
已經把uImage編譯出來了,這里只需要把你原來sd或者nand或者emmc中的uimage替換就行。
這里我的是sd卡,有個小插曲,導致浪費了很多時間,就是sd卡屬于塊設備,塊設備對存儲是有優化的,就是什么電梯優化算法之類的,當你把內容拷貝到里邊的時候并沒有真正的拷貝,只有等你拔卡的時候才會拷貝,我當時大意了,就直接吧卡拔了導致拷貝的數據不全,啟動的時候出現了錯誤,在這里提醒各位,拔卡前 可以執行一次sync強制同步就行了。
到這里,驅動添加完成,我們需要查看一下是否有設備節點
如果出現上圖紅色框內的內容,證明你驅動移植的完全正確。二、用戶層OPENGL ES的庫的編譯和導入
這里給出一個連接,我也是參考這個鏈接中的內容來的,下面所以的內容都是在開發板上做的。
首先導入需要的工具
在ubuntu系統中可以按照我邊的操作做如果是其他系統,則可以參考上邊的鏈接
然后下載libump的源文件
進入目錄,準備編譯
然后執行下邊一系列的編譯指令,前提是在ubuntu系統下
到這ump的庫編完了,我們要編mali的用戶驅動了
在ubuntu下安裝可以執行如下指令
2、mali的用戶驅動的編譯
首先下載需要用到的工具
然后下載源碼
3、配置
我們要首先探測以下我們的環境需要什么,使用make config會打印下邊的內容主要關注紅色框內的內容
然后再配置,使用如下指令 把下邊紅色框內的內容換成探測到的內容,就行了
等編譯完成進行最后一步導入
這個時候lib文件就會導入到/usr/lib ,頭文件導入到 /usr/include。
可以查看一下
證明我們的導入已經完成
三、測試
測試,我們可以用sunxi下的一個測試程序
然后執行
如果你運氣足夠好,你會看到你的屏幕上出現一個彩色的三角,控制臺出現如下的顯示,證明已經成功了。
但是你要是出現我下圖的情形那就是你的系統上本身有其他的opengl的庫.,你需要吧其他的庫刪除然后才能使用。就必須smart4418,的ubuntu就存在這個情況,需要把nexell的庫刪掉才能使用。
四、總結
到了這里基本上開發環境的opengl已經完成了,下邊要做的就是要建立交叉編譯環境使得能在pc上的qt環境中使用opengl的庫。再次感謝那位大神,又學到了一個技能。
需要gpu源文件的見readme.txt
readme.txt
(188 Bytes, 下載次數: 109)
說明:NEXELL官方提供的驅動和庫并不能支持HDMI,只能支持LCD,但是按照上述方法編譯的驅動和庫是能支持HDMI輸出的,想怎么玩耍就怎么玩耍,你還在為GPU不能適用而發愁嗎,趕快行動吧。
總結
以上是生活随笔為你收集整理的单片机小精灵t2_搭建S5P4418 ARM环境下 GPU OPENGL ES开发环境(适用 NANOPI2,3,M2,M3,T2,T3)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux系统怎样写单片机程序,单片机知
- 下一篇: css background 一半_CS