-i 可以编译添加多个_大咖说 | 基于 NXP i.MX8 eIQ 环境搭建和编译

8665def9dedd555b87536db95075a831.png

一、前言

NXP 针对 Machine Learning ( ML ) 创建了 eIQ 工具,以方便开发者在 i.MX 系列设备上开发 ML 相关应用。

本篇将会分两个章节,一章节介绍 eIQ 软件,另外一章节将会对 eIQ 依赖的 Yocto 环境搭建和编译进行 Hands On 介绍。
(注:本篇不包含 Demo 范例演示,Demo 将会在下一篇博文展出)

二、NXP eIQ 软件介绍

eIQ 提供一系列的机器学习库和工具,应用于 I.MX 系列应用开发。eIQ 只支持网络模型的推测和标准的机器学习算法,即模型的训练需要离线完成。目前 eIQ 的 SDK 已经内含在 i.MX Linux OS 的 BSP 包中,eIQ 有包含如下 Yocto 代码包:

  • OpenCV 4.0.1

  • Arm Compute Library 19.02

  • Arm NN 19.02

  • ONNX runtime 0.3.0

  • Tensor Flow 1.12

  • Tensor Flow Lite 1.12

这里需要指出的是,目前 eIQ 暂还不支持 GPU 加速,如果需要 GPU 加速,独立于 eIQ ,自行用 OpenCL 进行开发。eIQ 的框架如下:   

-i 可以编译添加多个_大咖说 | 基于 NXP i.MX8 eIQ 环境搭建和编译_第1张图片

三、eIQ 依赖的 Yocto 下载和编译

eIQ 所依赖的 Yocto主要是 Linux L4.14.98_2.0.0 GA 版本。


1. Yocto L4.14.98_2.0.0源代码和文档入口地址:
https://www.nxp.com/design/i.mx-developer-resources/i.mx-software-and-development-tools:IMX-SW  

-i 可以编译添加多个_大咖说 | 基于 NXP i.MX8 eIQ 环境搭建和编译_第2张图片

大家了解下代码和文档资料的来源,Yocto 的代码下载和编译可参考如上的官方文档,也可以参考下面的操作流程。

2.软硬件环境准备

2.1 硬件准备:

一台 Linux OS 以及预留 120 GB 、可联网的主机。

2.2 软件准备:

① Host Os : Ubuntu (本实验基于 Ubuntu 16.04 LTS)

② 按如下命令安装所依赖的包:

$ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat libsdl1.2-dev xterm sed cvs subversion  coreutils texi2html docbook-utils python-pysqlite2 help2man gcc  g++ make desktop-file-utils libgl1-mesa-dev libglu1-mesa-dev mercurial autoconf automake groff curl lzop asciidoc u-boot-tools 

3.eIQ 编译工具(Protobuf 3.5.1 )安装

① 下载 Protobuf 3.5.1 工具源码

wget https://github.com/google/protobuf/archive/v3.5.1.tar.gz

② 安装 Protobuf 3.5

 解压后到 Protobuf 根目录逐步运行如下命令安装

baker@baker-VirtualBox:~$ cd protobuf-3.5.1/

baker@baker-VirtualBox:~/protobuf-3.5.1$./autogen.sh

baker@baker-VirtualBox:~/protobuf-3.5.1$./configure

baker@baker-VirtualBox:~/protobuf-3.5.1$ make -j8  

安装结果 Log 如下:

-i 可以编译添加多个_大咖说 | 基于 NXP i.MX8 eIQ 环境搭建和编译_第3张图片

4.Repo 工具的获取

① 来源:

https://mirrors.tuna.tsinghua.edu.cn/git/git-repo

294ef36cc09a647ef699825f414ee28d.png

② 给 repo 添加可执行权限

07568f8fff717795e405aa5e9d8a5dce.png

③ 修改 REPO_UR

         vim 打开 ./bashrc ,底部添加 REPO_URL

54644d8ccdb9d49514ed2160dcf0c0b3.png -i 可以编译添加多个_大咖说 | 基于 NXP i.MX8 eIQ 环境搭建和编译_第4张图片

5.通过 Repo 下载 Yocto 源码

① 如下命令( 红色字体 )开始初始化 Yocto 仓库

baker@baker-VirtualBox:~/eIQ$ mkdir fsl-arm-yocto-bsp

baker@baker-VirtualBox:~/eIQ$ cd fsl-arm-yocto-bsp

baker@baker-VirtualBox:~/eIQ/ fsl-arm-yocto-bsp $ repo init -u https://source.codeaurora.org/external/imx/imx-manifest -b imx-linux-sumo -m imx-4.14.98-2.0.0_machinelearning.xml


结果如下:

-i 可以编译添加多个_大咖说 | 基于 NXP i.MX8 eIQ 环境搭建和编译_第5张图片 -i 可以编译添加多个_大咖说 | 基于 NXP i.MX8 eIQ 环境搭建和编译_第6张图片

② 如下命令(红色字体)开始同步

baker@baker-VirtualBox:~/eIQ/fsl-arm-yocto-bsp$ repo sync

同步结果如下:   

-i 可以编译添加多个_大咖说 | 基于 NXP i.MX8 eIQ 环境搭建和编译_第7张图片

    。。。。。。 

dd588a587ba23a9c3db76b15dd08ea3a.png

出现如上红色方框的内容,说明代码包已下载成功,接下来可以进行编译。

6.Yocto编译

① 按如下命令(红色字体)进行Yocto 编译变量设置,包含 i.MX8 开发板类型、目标 OS 类型、Machine Learing 属性

baker@baker-VirtualBox:~/eIQ/fsl-arm-yocto-bsp$ EULA=1 MACHINE=imx8qmmek DISTRO=fsl-imx-xwayland source ./fsl-setup-release.sh -b buildxwayland

baker@baker-VirtualBox:~/eIQ/fsl-arm-yocto-bsp/buildxwayland$ echo "BBLAYERS += \" \${BSPDIR}/sources/meta-imx-machinelearning \"" >> conf/bblayers.con
f

过程如下:

-i 可以编译添加多个_大咖说 | 基于 NXP i.MX8 eIQ 环境搭建和编译_第8张图片

② 修改 conf/local.conf ,添加 OpenCV / OpenCL / CMake / TensorFlow 相关设定

#Add basic development capabilities:

EXTRA_IMAGE_FEATURES = " dev-pkgs debug-tweaks tools-debug tools-sdk ssh-server-openssh"#Add packages for networking capabilities:

IMAGE_INSTALL_append = " net-tools iputils dhcpcd"

#Add some generic tools:

IMAGE_INSTALL_append = " which gzip python python-pip"

IMAGE_INSTALL_append = " wget cmake gtest git zlib patchelf"

IMAGE_INSTALL_append = " nano grep vim tmux swig tar unzip"

IMAGE_INSTALL_append = " parted e2fsprogs e2fsprogs-resize2fs"

#Configure the OpenCV package:

IMAGE_INSTALL_append = " opencv python-opencv"

PACKAGECONFIG_remove_pn-opencv_mx8 = "python3"

PACKAGECONFIG_append_pn-opencv_mx8 = " dnn python2 qt5 jasper openmp test neon"

#Remove the OpenCL support from packages:

PACKAGECONFIG_remove_pn-opencv_mx8 = "opencl"

PACKAGECONFIG_remove_pn-arm-compute-library = "opencl"

#Add CMake for SDK’s cross-compile:

TOOLCHAIN_HOST_TASK_append = " nativesdk-cmake nativesdk-make"

#Add packages:

IMAGE_INSTALL_append = " arm-compute-library tensorflow tensorflow-lite armnn onnxruntime"

PREFERRED_VERSION_opencv = "4.0.1%"

PREFERRED_VERSION_tensorflow = "1.12.0%"

PREFERRED_VERSION_tensorflow-lite = "1.12.0%"

-i 可以编译添加多个_大咖说 | 基于 NXP i.MX8 eIQ 环境搭建和编译_第9张图片


③ 开始 bitbake 编译 ,这一步将会产生最终的固件

baker@baker-VirtualBox:~/eIQ/fsl-arm-yocto-bsp/buildxwayland$ bitbake fsl-image-qt5

d09a373786f81ce9661c9e4fdff82100.png

在 buildxwayland/tmp/deploy/images/imx8qmmek 目录下,可以看到已经成功生成固件 “fsl-image-qt5-imx8qmmek.sdcard.bz2”

-i 可以编译添加多个_大咖说 | 基于 NXP i.MX8 eIQ 环境搭建和编译_第10张图片

至此,eIQ 的环境搭建以及编译已完成。下一篇将会带大家一起在 i.MX8QMMEK demo 板上运行 eIQ Demo , 敬请期待。

-i 可以编译添加多个_大咖说 | 基于 NXP i.MX8 eIQ 环境搭建和编译_第11张图片

点击 点“在看”给小编加鸡腿

你可能感兴趣的:(-i,可以编译添加多个)