本帖最后由 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)...相关推荐

  1. windows下搭建OpenGL ES开发环境

    硬件上需要兼容OpenGL 2.0的显卡, Windows XP or Windows Vista . 1. 安装vc2005或更高版本,安装后会有opengl的库. 2. 安装shader分析工具  ...

  2. Windows环境下安装React Native开发环境----记一次填坑过程

    前言 集成React Native开发环境遇到各个坑,调试了很久出现过找不到设备,百度上个别人的资料有误被绕来绕去耽误了很多时间,下载慢等待时间过长等问题,最后多方查阅资料,电脑重启等操作终于部署好了 ...

  3. Windows 下 OpenGL ES 开发环境搭建

    2019独角兽企业重金招聘Python工程师标准>>> 转载于:https://my.oschina.net/u/474872/blog/352728

  4. Linux 环境下部署Hexagon SDK 开发环境

    https://developer.qualcomm.com/software/hexagon-dsp-sdk/tools  链接下下载qualcomm_hexagon_sdk_3_4_3_linux ...

  5. 在anaconda环境下安装orange和开发环境步骤和遇见问题的解决方法

    致谢:小龙快跑jly 非常感谢师兄 一.安装anaconda 双击安装包然后点击next 点击argee 选择第一个然后点next 选择安装位置 可以根据自己的需求选择安装位置,如果没有需求就默认选择 ...

  6. 《Node.js入门》Windows 7下Node.js Web开发环境搭建笔记

    最近想尝试一下在IBM Bluemix上使用Node.js创建Web应用程序,所以需要在本地搭建Node.js Web的开发测试环境. 这里讲的是Windows下的搭建方法,使用CentOS 的小伙伴 ...

  7. 源码编译php mysql_linux下apache+mysql+php开发环境纯源代码编译搭建(转)

    linux下apache+mysql+php开发环境纯源代码编译搭建(转)[@more@] 记录一下我在fedora core 1下通过源代码编译出来的apache+mysql+php开发环境的全部过 ...

  8. Ubuntu 下无人机飞控 ArduPilot 开发环境搭建

    Ubuntu 下无人机飞控 ArduPilot 开发环境搭建 Ubuntu 下无人机飞控 ArduPilot 开发环境搭建 操作流程 升级安装包 安装 git 克隆代码 安装交叉编译工具链 将编译器添 ...

  9. 【教程】Windows下Miniconda+Pytorch+Pycharm开发环境搭建指南

    Windows下Miniconda+Pytorch+Pycharm开发环境搭建指南 给本科生写的新手教程,遇到很多新手的共性问题,可供大家参考.在开始阅读之前,请注意两个要关键:1.为什么要使用Con ...

最新文章

  1. socks5协议RFC文档
  2. QT的QDnsLookup类的使用
  3. 【机器视觉】 reset_fuzzy_measure算子
  4. 认识Linux系统服务(鸟哥18章)
  5. 浅析Windows计算机中丢失SETUPAPI.dll的问题
  6. Altium Designer 学习记录3
  7. 360修复上不了网络连接服务器失败,360断网急救箱网络连接配置修复不了怎么办-修复不了的解决办法...
  8. unity 导入 obj 模型 和 json 数据
  9. Testin云测平台使用
  10. 计算机作文素材,学电脑作文素材
  11. mysql中存储ip地址,将ip转换为整数存储
  12. Android 交互动画的统一实践
  13. 上帝视角学JAVA- 基础07-类05【2021-08-06】
  14. 74、单元测试-前置条件
  15. Unity3d 防止相机“穿墙”功能
  16. Leetcode1091_二进制矩阵中的最短路径(Java+BFS解法)
  17. java实现PEKS_JAVA线程基础
  18. PHP面试技巧——如何应对面试官的“激将法”语言?
  19. SAP:QUERY中SQ02增加选择屏幕权限控制
  20. linux禁用内存,Linux系统发明人抨击英特尔禁用ECC内存的政策

热门文章

  1. python程序打包成安卓app教程_Python打包方法基本应用方式介绍
  2. mac mysql prefpane_【MySQL数据库开发之一】Mac下配置安装数据库-MySQL
  3. 计算机文化基础重点知识归纳,计算机文化基础_第二章重点知识总结(考试必备!!!)...
  4. 日常问题——flume连接hive时报错Caused by: java.lang.NoSuchMethodError
  5. VIP站长大会(北京站)常见问题解答
  6. 好用的下拉第三方——nicespinner
  7. CSharpGL(49)试水OpenGL软实现
  8. Epson C1100报错“Service Req E511”的处理方法
  9. JavaScript 函数节流 throttle 和防抖 debounce
  10. Spark(二): 内存管理