单片机小精灵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不能适用而发愁吗,赶快行动吧。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值