toradex的个人空间 https://blog.eetop.cn/1539194 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

NXP iMX8平台上使用imx-gpu-sdk开发

已有 304 次阅读| 2023-2-13 10:04 |系统分类:嵌入式| ARM, Linux, iMX8QM, OpenCL, OpenGL

By Toradex胡珊逢

Apalis iMX计算机模块采用了 NXP 的 i.MX 8 QuadMax 处理器。该处理器具有两个 Vivante GC7000/XSVX 单元,能够支持 OpenCLOpenVXOpenGL ES 。本文将介绍如何使用 NXP 提供的 imx-gpu-sdk 编译能够在 Apalis iMX运行的 OpenCL 和 OpenCV 应用。

 

Toradex 的计算机模块所安装的 Linux BSP 采用 Yocto Project 编译。为了编译和运行 OpenCL 和 OpenCV 应用,首先需要重新编译 BSP 和 SDK,以添加相关库文件、头文件等。在 Yocto Project 的编译目录中修改build/conf/local.conf 文件,添加如下内容:

------------------------------------

IMAGE_INSTALL_append = " imx-gpu-viv imx-gpu-sdk fmt python3 python3-pip \

opencv"

PACKAGECONFIG_append_mx8qm = " opencl"

TOOLCHAIN_TARGET_TASK_append = " imx-gpu-viv imx-gpu-sdk stb fmt opencv"

------------------------------------

 

然后运行下面两个命令,分别生成安装镜像和 SDK 工具。

------------------------------------

bitbake tdx-reference-multimedia-image

bitbake tdx-reference-multimedia-image -c populate_sdk

------------------------------------

 

使用 Toradex Easy Installer 安装生成的镜像。复制生成的 SDK 安装文件 tdx-xwayland-glibc-x86_64-Reference-Multimedia-Image-aarch64-apalis-imx8-toolchain-5.7.0.sh 到 Linux 电脑,如 Ubuntu 20.04。这里安装到 /opt/SDK/ 路径,当然也可以换成其他合适的目录。由于 SDK 中缺少了 stb 库相关的头文件,因此,需要将 Yocto Project 编译路的 build/tmp/sysroots-components/aarch64/stb/usr/include/ 里面所有 .h 头文件复制到 SDK 的安装路径 sysroots/aarch64-tdx-linux/usr/include/stb/ 下面。同时,在 environment-setup-aarch64-tdx-linux 文件里添加 CPATH 变量。

------------------------------------

export ARCH=arm64

export CROSS_COMPILE=aarch64-tdx-linux-

export CPATH=/opt/SDK/sysroots/aarch64-tdx-linux/usr/include/stb

------------------------------------

 

接下来下载 OpenCL 和 OpenCV 应用代码。

------------------------------------

git clone -b master https://github.com/nxpmicro/gtec-demo-framework.git

------------------------------------

 

安装编译代码所需的其他工具,python 版本需要 3.6 以及以上。

------------------------------------

apt install build-essential ninja-build cmake

------------------------------------

 

编译 OpenCL 应用。其中 ROOTFS 的路径需要结合 SDK 的实际安装位置而修改,这里为 /opt/SDK/sysroots/aarch64-tdx-linux

------------------------------------

source /opt/SDK/environment-setup-aarch64-tdx-linux

cd /opt/SDK/gtec-demo-framework

export FSL_PLATFORM_NAME=Yocto

export ROOTFS=/opt/SDK/sysroots/aarch64-tdx-linux

source prepare.sh

cd DemoApps/OpenCL/FastFourierTransform

FslBuild.py

------------------------------------

 

编译 OpenCV 应用。由于 Apalis iMX8 的图形框架采用 wayland,因此在编译时添加 --Variants [WindowSystem=wayland] 参数。

------------------------------------

source /opt/SDK/environment-setup-aarch64-tdx-linux

cd /opt/SDK/gtec-demo-framework

export FSL_PLATFORM_NAME=Yocto

export ROOTFS=/opt/SDK/sysroots/aarch64-tdx-linux

source prepare.sh

cd DemoApps/OpenCV/OpenCV101

FslBuild.py --Variants [WindowSystem=wayland]

------------------------------------

 

编译完成后在 gtec-demo-framework 文件夹的 build 目录生成了对应的项目文件。

------------------------------------

root@3b368d78738f:/opt/SDK/gtec-demo-framework/build/Yocto/Ninja/release/DemoApps# tree -L 3

.

|-- OpenCL

|   `-- FastFourierTransform

|       |-- CMakeFiles

|       |-- Content

|       |-- OpenCL.FastFourierTransform

|       |-- OpenCL.FastFourierTransformConfigVersion.cmake

|       |-- cmake_install.cmake

|       `-- content_deps.txt

`-- OpenCV

    `-- OpenCV101

        |-- CMakeFiles

        |-- Content

        |-- OpenCV.OpenCV101

        |-- OpenCV.OpenCV101ConfigVersion.cmake

        |-- cmake_install.cmake

        `-- content_deps.txt

------------------------------------

 

将 gtec-demo-framework/build/Yocto/Ninja/release/DemoApps 下的两个文件夹复制到 Apalis iMX8 上即可运行。

------------------------------------

root@apalis-imx8:~/DemoApps/OpenCV/OpenCV101# ./OpenCV.OpenCV101

 Simple Linear Blender

-----------------------

libpng warning: iCCP: known incorrect sRGB profile

------------------------------------

 

OpenCV 应用在显示器上可以看到如下内容。

NXP iMX8平台上使用imx-gpu-sdk开发3877.png 

 

OpenCL FastFourierTransform 显示在 GPU 上运行状况。

------------------------------------

root@apalis-imx8-06852111:~/DemoApps/OpenCL/FastFourierTransform# ./OpenCL.FastFourierTransform

Block size: 16

Length: 16

Print result: yes

Initializing device(s)...

Get the Device info and select Device...

# of Devices Available = 1

# of Compute Units = 2

# compute units = 2

Getting device id...

……

Kernel execution time on GPU (kernel 0):   0.000146 seconds

Kernel execution time on GPU (kernel 1): 7.70000e-05 seconds

Kernel execution time on GPU (kernel 2): 7.80000e-05 seconds

Kernel execution time on GPU (kernel 3): 8.40000e-05 seconds

Total Kernel execution time on GPU:   0.000385 seconds

Successful.

------------------------------------

 

更多关于 OpenCLOpenCV 等应用开发的内容可以参考 gtec-demo-framework 的网页说明,从而开发用户自己的应用。




点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 3

    粉丝
  • 0

    好友
  • 1

    获赞
  • 2

    评论
  • 13923

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-8 07:04 , Processed in 0.017471 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部