如何在TI的AM335x上面使用SGX加速的有OpenGL支持的QT

如何在TI的AM335x上面使用SGX加速的有OpenGL支持的QT,第1张

TI官方的指南请看这里,因为发布时间的关系,这里面已经有很多和最新的软件包不匹配的地方。经过我的努力,我把这个指南中间复杂的部分给做到Buildroot里面去了,基本上实现了“傻瓜式”编译,可通过菜单选择,简单地实现QT下使用SGX硬件加速的OpenGL。

由于本文还涉及到了SGX硬件驱动程序模块的编译,所以看上去还会比较长,但这部分内容没有什么难度。转载请注明来自EE小站,cosine@126.com。

简单的梳理下:

前提是U-boot、内核、文件系统都搞利索了,板子能启动了

TI的Wiki提供了U-boot和内核的说明,地址点这里。

TI的SDK里提供了制作好的文件系统,但是太庞大了,可以下载Buildroot自己做一个。

下载我做的Buildroot补丁,和TI图形SDK

补丁的地址在这里。

这个补丁是我给Buildroot 2013.05做的,与之相配的TI图形SDK在这里,下“Graphics_SDK_setuplinux_4_10_00_01_BinOnly.bin”就可以。

应该2013.05之后一段时间Buildroot版本都可以使用这个补丁。

用SDK编译内核模块

可以参照TI的指南,地址点这里。也可以直接看本文。

用Buildroot制作根文件系统

具体过程如下:

假设Graphics_SDK_setuplinux_4_10_00_01_BinOnly.bin下载到了/home/cdu,那么

~ # cd /home/cdu

/home/cdu # chmod 744 ./Graphics_SDK_setuplinux_4_10_00_01_BinOnly.bin

/home/cdu # ./Graphics_SDK_setuplinux_4_10_00_01_BinOnly.bin

会出来一个交互的安装界面,安装的时候选择“8.x”那项(因为处理器是AM335x),并且把SDK安装到,例如/home/cdu/core335x_bsp/graphics_sdk_4_10_00_01

安装完后,打开/home/cdu/core335x_bsp/graphics_sdk_4_10_00_01/Rules.make

假设你的ARM交叉编译器安装在/usr/local/arm/4.7.3-2,前缀是arm-none-linux-gnueabi-,你的内核在/home/cdu/core335x_bsp/linux-3.2.21,那么就Rules.make中的内容修改成这样

# Set home area (ex /home/user/)

HOME=/home/cdu/core335x_bsp

# Set Toolchain path (ex /home/user/toolchain/arago-2011.09/armv7a)

CSTOOL_DIR=/usr/local/arm/4.7.3-2

# Set Tool chain prefix (ex arm-arago-linux-gnueabi- )

CSTOOL_PREFIX=arm-none-linux-gnueabi-

# Set kernel installation path ( ex /home/user/linux-04.00.01.13 )

KERNEL_INSTALL_DIR=/home/cdu/core335x_bsp/linux-3.2.21

# Set Target filesystem path ( ex /home/user/targetfs )

TARGETFS_INSTALL_DIR=$(DESTDIR)

# Set installation folder

GRAPHICS_INSTALL_DIR=$(HOME)/graphics_sdk_4_10_00_01

然后就可以编译了

/home/cdu # cd core335x_bsp/graphics_sdk_4_10_00_01

/home/cdu/core335x_bsp/graphics_sdk_4_10_00_01 # make DESTDIR=/home/cdu/nfsroot OMAPES=8.x

假设你的根文件系统在/home/cdu/nfsroot,那么请确保有/home/cdu/nfsroot/etc和/home/cdu/nfsroot/etc/init.d这两个目录,否则安装时候会出错,接下来安装

/home/cdu/core335x_bsp/graphics_sdk_4_10_00_01 # make DESTDIR=/home/cdu/nfsroot OMAPES=8.x install

这样,SDK库就编译好了,接下来把内核的模块安装到文件系统里,假设内核在/home/cdu/core335x_bsp/linux-3.2.21,已经配置并且编译好了

/home/cdu/core335x_bsp/graphics_sdk_4_10_00_01 # cd /home/cdu/core335x_bsp/linux-3.2.21

/home/cdu/core335x_bsp/linux-3.2.21 # make ARCH=arm modules_install INSTALL_MOD_PATH=/home/cdu/nfsroot

然后需要把内核驱动模块增加到依赖表中,位置在/home/cdu/nfsroot/lib/modules/3.2.21/kernel/drivers/modules.dep,在里面增加这两行:

extra/omaplfb.ko:

extra/pvrsrvkm.ko:

接下来就可以用Buildroot制作文件系统了,假设Buildroot的压缩包buildroot-2013.05.tar.bz2下载到了/home/cdu/core335x_bsp,我做的Buildroot补丁buildroot-am335x.patch下载到了/home/cdu/core335x_bsp

/home/cdu/core335x_bsp/linux-3.2.21 # cd /home/cdu/core335x_bsp

/home/cdu/core335x_bsp # tar xf buildroot-2013.05.tar.bz2

/home/cdu/core335x_bsp # cp buildroot-am335x.patch buildroot-2013.05

/home/cdu/core335x_bsp # cd buildroot-2013.05

/home/cdu/core335x_bsp/buildroot-2013.05 # patch -p1 <buildroot-am335x.patch

/home/cdu/core335x_bsp/buildroot-2013.05 # make menuconfig

然后就可以进行配置,QT在Package Selection for the target >Graphic libraries and applications (graphic/text) >Qt,AM335x的OpenGL支持设置选项在Qt下的Graphics drivers,必须先选中Linux Framebuffer,会出现AM335x SGX OpenGL Dirver,选中并在下方输入图形SDK的路径,例如/home/cdu/core335x_bsp/graphics_sdk_4_10_00_01,其他的选项按需选择即可,接下来就可以编译

/home/cdu/core335x_bsp/buildroot-2013.05 # make

编译过程会自动下载所需的各种软件包,如果没有选中Qt下的Approve free license,中间会提示选择授权类型,编译完成之后,将映像释放到根文件系统里

/home/cdu/core335x_bsp/buildroot-2013.05 # tar xf output/image/rootfs.tar -C /home/cdu/nfsroot

之后,打开/home/cdu/nfsroot/etc/init.d/powervr.ini,把这里面改成

[default]

WindowSystem=libpvrQWSWSEGL.so

将/home/cdu/nfsroot下的文件系统挂载到目标板上,启动以后,输入用户名root登陆,运行

# /etc/init.d/335x-demo

# mv /etc/init.d/rc.pvr /etc/init.d/S99powervr

至此,这个文件系统就支持QT使用SGX硬件加速的OpenGL了。

如果你在配置QT的时候选择了Compile and install demos and examples (with code),那么你可以找到/home/cdu/core335x_bsp/buildroot-2013.05/output/build/qt-4.8.4/examples/opengl/hellogl_es2/hellogl_es2这个文件,把它拷贝到根文件系统里,运行

# hellogl_es2 -qws -display powervr

可以检验是否可以正常工作。

需要说明一下,为了让QT支持OpenGL,AM335x图形处理器的厂家(不是TI,是Imagination Technologies)提供的插件程序让QT的动态链接库禁止鼠标光标显示。现象就是,虽然看不到鼠标,但是还可以用。这个目前还没有解决方法,因为貌似图形处理器是直接 *** 作Frame Buffer的,有鼠标估计程序不好写,性能也会下降吧。如果你要用鼠标的话,需要自己写个显示鼠标光标的程序。

转载,仅供参考,祝你愉快,满意请采纳。

一、硬件对于许多TI的芯片来说,引脚复用的配置是在Control Module(配置模块)的寄存器里配置的,(这个和三星的CPU有点不同,三星的一般在GPIO的寄存器中配置)。所以当你需要配置这些寄存器的时候,请到数据手册的Control Module的Pad Control Registers查找。TI的CPU芯片手册有两种:一种是datasheet(DS:数据手册),较小,只是大概介绍下芯片的结构;另一种是Technical Reference Manual(TRM:技术参考手册),较大,详细介绍芯片的各部分功能原理和寄存器定义。在开发过程中,这两个手册都需要参考,是互补的。对于AM335X,关于引脚复用的列表及模式号与功能的对应可以在数据手册中找到:2 Terminal Description:2.2 Ball Characteristics关于引脚复用寄存器定义及各引脚相应寄存器的偏移可以在TRM中找到:9 Control Module9.1 Control Module9.1.3 Functional Description9.1.3.2 Pad Control Registers (包含引脚复用寄存器定义)9.1.5 Registers9.1.5.1 CONTROL_MODULE Registers (包含引脚相应寄存器的偏移)二、软件由于TI的芯片构架类似,对于Linux内核来说,早就已经为这个做好了一个软件上的框架,无论是在启动的初始化阶段还是在系统运行时,都可以通过这个框架提供的接口函数配置芯片的MUX。下面就来简要的分析一下。以AM335X为例,相关代码位置:arch/arm/mach-omap2mux.hmux.cmux33xx.hmux33xx.cboard-am335xevm.c(还有一些用到了:arch/arm/plat-omap/include/plat/omap_hwmod.h)

嵌入式Linux开发流程

在一个嵌入式系统中使用Linux开发,根据应用需求的不同有不同的配置开发方法,但是一般都要经过如下的过程:

1.建立开发环境

*** 作系统一般使用RedHat-Linux,版本从7到9都可以,选择定制安装或全部安装,通过网络下载相应的GCC交叉编译器进行安装(例如arm-Linux-gcc、arm-μclibc-gcc),或者安装产品厂家提供的交叉编译器。

2.配置开发主机

配置MINICOM,一般的参数为波特率为115 200bps,数据位为8位,停止位为1,无奇偶校验,软件硬件流控设为无。在Windows下的超级终端的配置也是这样的。MINICOM软件的作用是作为调试嵌入式开发板的信息输出的监视器和键盘输入的工具。配置网络,主要是配置NFS网络文件系统,需要关闭防火墙,简化嵌入式网络调试环境设置过程。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8949680.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-23
下一篇2023-04-23

发表评论

登录后才能评论

评论列表(0条)

    保存