之前学习了3D显示,实现了win10QT与ubuntu18.04的3D图形控制,可以参考我的blog{QT按钮socket远程控制opengl模型}。那么我后续要做的事情,就是将ubuntu18.04中的程序移植到开发板,我在想要做的事情就是交叉编译工程移植到开发板就结束了。因为我之前已经搭建过bb black的硬件环境,可以参考我的blog{Vulkan嵌入式硬件平台调研}
但是问题来了,之前我想学GPU,am335芯片cortex-A8是有GPU的,但是datasheet资料中GPU编程资料很少,TI官网上也看了应用手册,真的很少。TI官网论坛查询了下其他人也说很少,看来这块是保密的。于是只知道不支持vulkan但是一定是支持opengl2.0的。而之前我也了解到嵌入式系统上一般用简化版的opengles。所以一开始学最新的vulkan,但是后来倒退回去学opengl也有这方面的原因。
换方案到基于TI的sdk
但是当我准备动手做交叉编译的时候,发现之前http://beagleboard.org/getting-started中的镜像放入sd卡是支持HDMI显示,并且还有debian系统界面显示。但是它没有源码,之后调试测试及自我学习显卡驱动开发都是不利的。所以决定安装TI官网的sdk进行开发。
TI的资料还是很足的,我从getting start开始看,
http://software-dl.ti.com/processor-sdk-linux/esd/docs/06_01_00_08/linux/Overview_Getting_Started_Guide.html
快速搜索了下graph相关,貌似没看到opengl,反而是wayland,drm,gdb这些东东。后来了解了这是一种显示相关的软件架构,现在还在学习中,网上资料导数很多。但是重点是我看到能支持HDMI显示。
在http://software-dl.ti.com/processor-sdk-linux/esd/docs/06_01_00_08/linux/Foundational_Components_Graphics.html中有描述输入kmscube命令后可以有3d图像显示,结果运行后显示正常,通过这次方案验证,说明我可以基于TI的sdk进行开发。当时的思路就是找到它的源码进行修改即可。
换方案到基于TI的ccs9调试环境开发
按照gettingstart环境交叉编译环境也装完了。此时想到一个问题glfw及grad怎么交叉编译呢?怎么从linux移植到开发板呢?我可以换方案,只要是一个显示的框架即可。不一定必须用glfw的。因为TI的sdk操作系统是不带界面的。所以方案更换为我需要知道TI的kmscube的源码,然后再修改进行编译。因为我在TI的sdk中没有搜索到glfw相关的库文件,官网帮助文件中也没有提及glfw。我搜索图像镜像文件使用的库,如下
TI_gles.png
所以关于我之前嵌入式开发板中释放要有界面到不是我的重点。但是没有界面我应该如何显示图像呢?网上搜索了下有无界面显示的,而TIsdk中的kmscube就是无界面显示3D图像的。ok那么新的方案敲定,就用kmscube的框架。可以没有在TI官网找到源码,网上搜索了mesa有,但是下载了没看到kmscube,于是在网上找drm相关教程,可以支持无框架3D图像显示,下载了相关help源码,编译后无法正常显示图像。
总是用编译完工程用sd卡传输,用printf来调试效率不高,居然ccs9已经是免费的了,我当然要用啦,这样可以支持ssh远程debug多好呀。如下,调试环境搭建完成
远程开发板调试.png
网友评论