单片机小精灵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)...相关推荐
- windows下搭建OpenGL ES开发环境
硬件上需要兼容OpenGL 2.0的显卡, Windows XP or Windows Vista . 1. 安装vc2005或更高版本,安装后会有opengl的库. 2. 安装shader分析工具 ...
- Windows环境下安装React Native开发环境----记一次填坑过程
前言 集成React Native开发环境遇到各个坑,调试了很久出现过找不到设备,百度上个别人的资料有误被绕来绕去耽误了很多时间,下载慢等待时间过长等问题,最后多方查阅资料,电脑重启等操作终于部署好了 ...
- Windows 下 OpenGL ES 开发环境搭建
2019独角兽企业重金招聘Python工程师标准>>> 转载于:https://my.oschina.net/u/474872/blog/352728
- Linux 环境下部署Hexagon SDK 开发环境
https://developer.qualcomm.com/software/hexagon-dsp-sdk/tools 链接下下载qualcomm_hexagon_sdk_3_4_3_linux ...
- 在anaconda环境下安装orange和开发环境步骤和遇见问题的解决方法
致谢:小龙快跑jly 非常感谢师兄 一.安装anaconda 双击安装包然后点击next 点击argee 选择第一个然后点next 选择安装位置 可以根据自己的需求选择安装位置,如果没有需求就默认选择 ...
- 《Node.js入门》Windows 7下Node.js Web开发环境搭建笔记
最近想尝试一下在IBM Bluemix上使用Node.js创建Web应用程序,所以需要在本地搭建Node.js Web的开发测试环境. 这里讲的是Windows下的搭建方法,使用CentOS 的小伙伴 ...
- 源码编译php mysql_linux下apache+mysql+php开发环境纯源代码编译搭建(转)
linux下apache+mysql+php开发环境纯源代码编译搭建(转)[@more@] 记录一下我在fedora core 1下通过源代码编译出来的apache+mysql+php开发环境的全部过 ...
- Ubuntu 下无人机飞控 ArduPilot 开发环境搭建
Ubuntu 下无人机飞控 ArduPilot 开发环境搭建 Ubuntu 下无人机飞控 ArduPilot 开发环境搭建 操作流程 升级安装包 安装 git 克隆代码 安装交叉编译工具链 将编译器添 ...
- 【教程】Windows下Miniconda+Pytorch+Pycharm开发环境搭建指南
Windows下Miniconda+Pytorch+Pycharm开发环境搭建指南 给本科生写的新手教程,遇到很多新手的共性问题,可供大家参考.在开始阅读之前,请注意两个要关键:1.为什么要使用Con ...
最新文章
- socks5协议RFC文档
- QT的QDnsLookup类的使用
- 【机器视觉】 reset_fuzzy_measure算子
- 认识Linux系统服务(鸟哥18章)
- 浅析Windows计算机中丢失SETUPAPI.dll的问题
- Altium Designer 学习记录3
- 360修复上不了网络连接服务器失败,360断网急救箱网络连接配置修复不了怎么办-修复不了的解决办法...
- unity 导入 obj 模型 和 json 数据
- Testin云测平台使用
- 计算机作文素材,学电脑作文素材
- mysql中存储ip地址,将ip转换为整数存储
- Android 交互动画的统一实践
- 上帝视角学JAVA- 基础07-类05【2021-08-06】
- 74、单元测试-前置条件
- Unity3d 防止相机“穿墙”功能
- Leetcode1091_二进制矩阵中的最短路径(Java+BFS解法)
- java实现PEKS_JAVA线程基础
- PHP面试技巧——如何应对面试官的“激将法”语言?
- SAP:QUERY中SQ02增加选择屏幕权限控制
- linux禁用内存,Linux系统发明人抨击英特尔禁用ECC内存的政策
热门文章
- python程序打包成安卓app教程_Python打包方法基本应用方式介绍
- mac mysql prefpane_【MySQL数据库开发之一】Mac下配置安装数据库-MySQL
- 计算机文化基础重点知识归纳,计算机文化基础_第二章重点知识总结(考试必备!!!)...
- 日常问题——flume连接hive时报错Caused by: java.lang.NoSuchMethodError
- VIP站长大会(北京站)常见问题解答
- 好用的下拉第三方——nicespinner
- CSharpGL(49)试水OpenGL软实现
- Epson C1100报错“Service Req E511”的处理方法
- JavaScript 函数节流 throttle 和防抖 debounce
- Spark(二): 内存管理