当前位置:   article > 正文

QA200RC Atlas200 开发板 (一)分设场景下环境部署_libmedia_mini.so

libmedia_mini.so

以CANN 5.1.RC1.alpha002 版本为例

1、环境依赖安装

依赖列表

  • 进入root用户,检查源是否可用


<code class="language-plaintext hljs">apt-get update</code>

  • root用户下执行如下安装命令


<code class="language-plaintext hljs">apt-get install -y gcc g++ make cmake zlib1g zlib1g-dev libbz2-dev libsqlite3-dev libssl-dev libxslt1-dev libffi-dev unzip pciutils net-tools libncursesw5-dev</code>

安装完成

检查系统是否安装满足版本要求的python开发环境(具体要求请参见依赖列表,此步骤以环境上需要使用python 3.7.x为例进行说明)。

在当前安装用户下执行命令python3 --version。

  • 如果返回信息满足python版本要求(3.7.0~ 3.7.11),则直接进入步骤3

  • 如果返回信息不满足满足python版本要求(3.7.0~ 3.7.11):

  • 当环境上root用户下已安装满足要求的python版本(3.7.0~ 3.7.11)时,如果当前安装用户需要复用该python,则可以直接参考设置python3.7.5环境变量配置环境变量。

  • 当环境上未安装满足要求的python版本(3.7.0~ 3.7.11)时,则可以参考如下步骤安装python。

  1. 使用wget下载python3.7.5源码包,可以下载到安装环境的任意目录,命令为:

wget https://www.python.org/ftp/python/3.7.5/Python-3.7.5.tgz

  1. 进入下载后的目录,解压源码包,命令为:

tar -zxvf Python-3.7.5.tgz

  1. 进入解压后的文件夹,执行配置、编译和安装命令:

cd Python-3.7.5

./configure --prefix=/usr/local/python3.7.5 --enable-loadable-sqlite-extensions --enable-shared

make

sudo make install

其中“--prefix”参数用于指定python安装路径,用户根据实际情况进行修改。“--enable-shared”参数用于编译出libpython3.7m.so.1.0动态库。“--enable-loadable-sqlite-extensions”参数用于加载libsqlite3-dev依赖。

本手册以--prefix=/usr/local/python3.7.5路径为例进行说明。执行配置、编译和安装命令后,安装包在/usr/local/python3.7.5路径,libpython3.7m.so.1.0动态库在/usr/local/python3.7.5/lib/libpython3.7m.so.1.0路径。

  1. 设置python3.7.5环境变量。

#用于设置python3.7.5库文件路径

export LD_LIBRARY_PATH=/usr/local/python3.7.5/lib:$LD_LIBRARY_PATH#如果用户环境存在多个python3版本,则指定使用python3.7.5版本

export PATH=/usr/local/python3.7.5/bin:$PATH

通过以上export方式设置环境变量,该种方式设置的环境变量只在当前窗口有效。您也可以通过将以上命令写入~/.bashrc文件中,然后执行source ~/.bashrc命令,使上述环境变量永久生效。注意如果后续您有使用环境上其他python版本的需求,则不建议将以上命令写入到~/.bashrc文件中。

  1. 安装完成之后,执行如下命令查看安装版本,如果返回相关版本信息,则说明安装成功。

python3 --version

pip3 --version

安装前请先使用pip3 list命令检查是否安装相关依赖,若已经安装,则请跳过该步骤;若未安装,则安装命令如下(如果只有部分软件未安装,则如下命令修改为只安装还未安装的软件即可)。

  • 请在安装前配置好pip源,具体可参考配置pip源

  • 安装前,建议执行命令pip3 install --upgrade pip进行升级,避免因pip版本过低导致安装失败。

  • 如下命令如果使用非root用户安装,需要在安装命令后加上--user,例如:pip3 install attrs --user,安装命令可在任意路径下执行。

  • 要求numpy版本大于等于1.14.3,如下命令以安装numpy 1.17.2为例。

pip3 install attrs

pip3 install numpy==1.17.2

pip3 install decorator

pip3 install sympy

pip3 install cffi

pip3 install pyyaml

pip3 install pathlib2

pip3 install psutil

pip3 install protobuf

pip3 install scipy

pip3 install requests

2、制卡环节

软件包准备 获取开发者板驱动与运行包、Ubuntu 操作系统镜像

驱动包对应版本如下图所示:

链接: A200dk-npu-driver-21.0.3.1-ubuntu18.04-aarch64-minirc.tar.gz

Ubuntu操作系统镜像选择对应版本为18.04.4

链接: ubuntu-18.04.4-server-arm64.iso

将SD卡放入读卡器,并将读卡器与Ubuntu服务器的USB接口连接

Ubuntu服务器中安装qemu-user-static、binfmt-support、yaml、squashfs-tools与交叉编译器

# 进入root用户

sudo su

# 更新源

apt-get update

# 安装python相关依赖

pip3 install pyyaml

# 安装qemu-user-static、binfmt-support、yaml、squashfs-tools与交叉编译器

apt-get install qemu-user-staticbinfmt-support python3-yaml squashfs-tools gcc-aarch64-linux-gnug++-aarch64-linux-gnu

安装完成

创建制卡工作目录

mkdir /home/ascend/mksd

# 制卡目录可任意指定

#ascend为自己的用户名

将软件包准备获取的Ubuntu操作系统镜像包、开发者板所有驱动包上传到制卡工作目录

在制卡工作目录下获取制卡脚本。可点击链接直接下载或在Ubuntu内输入命令下载

make_sd_card.py

make_ubuntu_sd.sh

# 下载制卡入口脚本“make_sd_card.py”。

# 从gitee下载:

wgethttps://gitee.com/ascend/tools/raw/master/makesd/generic_script/make_sd_card.py

# 从github下载:

wgethttps://raw.githubusercontent.com/Ascend/tools/master/makesd/generic_script/make_sd_card.py

# 下载制作SD卡操作系统的脚本“make_ubuntu_sd.sh”。

# 从gitee下载:

wgethttps://gitee.com/ascend/tools/raw/master/makesd/generic_script/make_ubuntu_sd.sh

# 从github下载:

wget https://raw.githubusercontent.com/Ascend/tools/master/makesd/generic_script/make_ubuntu_

下载完成

mksd文件夹内容如下:

执行制卡脚本。

以root用户执行如下命令查找SD卡所在的USB设备名称。

fdisk -l

例如,SD卡所在USB设备名称为“/dev/sda”,可通过插拔SD卡或者按容量推断的方式确定设备名称。

图中的sd卡为/dev/sdb

运行SD制卡脚本“make_sd_card.py”。

python3 make_sd_card.py local /dev/sda1

“local”表示使用本地方式制作SD卡。

“/dev/sda”为SD卡所在的USB设备名称。

正在制卡

制卡完成

拔出sd卡,插入开发板并上电,六个led灯亮起则成功启动开发板

3、开发环境部署(PC端)

此种场景下,用户PC机(Ubuntu x86操作系统)作为开发环境,进行程序的开发、编译,Atlas 200 DK作为运行环境。

下面分别介绍开发环境与运行环境中CANN软件安装流程。

开发环境中CANN软件安装

  1. 准备软件包。

请参见下载链接下载配套驱动版本的开发套件包“Ascend-cann-toolkit_{version}_linux-x86_64.run”与“Ascend-cann-toolkit_{version}_linux-aarch64.run”。

驱动与CANN版本的配套关系请参见版本配套说明(Gitee)版本配套说明(Github)

或者点击已下链接直接下载:

Ascend-cann-toolkit_5.1.RC1.alpha002_linux-x86_64.run

Ascend-cann-toolkit_5.1.RC1.alpha002_linux-aarch64.run

  1. 准备参考资料。

请从开发者文档,获取配套版本的《CANN软件安装指南》。

  1. 准备安装及运行用户。

请参见《CANN软件安装指南》的“安装开发环境 > 准备安装及运行用户”准备需要进行CANN软件安装的用户。

  1. 安装OS依赖。

已在步骤1完成

  1. 安装开发套件包。

  1. 以安装用户将开发套件包上传到开发环境任意路径,并进入套件包所在路径。

  1. 执行如下命令为安装包增加可执行权限。

chmod +x *.run

  1. 执行如下校验安装包的一致性和完整性。

  1. ./Ascend-cann-toolkit_{version}_linux-x86_64.run --check

./Ascend-cann-toolkit_{version}_linux-aarch64.run --check

  1. 执行以下命令安装软件。

  1. ./Ascend-cann-toolkit_{version}_linux-x86_64.run --install --chip=Ascend310-minirc

./Ascend-cann-toolkit_{version}_linux-aarch64.run --install --chip=Ascend310-minirc

--chip=Ascend310-minirc(可选):指定芯片型号为Ascend310 Soc芯片(RC模式启动,作为主控CPU)。配置了此参数,则会只部署Ascend310RC形态的AI CPU软件包。

以上命令示例使用默认路径进行安装,若安装用户为root用户,则默认路径为“/usr/local/Ascend”;若安装用户为非root用户,则默认路径为“$HOME/Ascend”。

开发者也可以通过--install-path=<path>指定安装路径,安装支持的其他详细参数说明可参见《CANN软件安装指南》的“参考信息 > 参数说明”。

  1. 配置交叉编译环境。

分设场景下,开发环境架构为“x86_64”,运行环境架构为“aarch64”,所以在开发环境中安装交叉编译器进行应用程序的交叉编译。

请使用CANN软件包安装用户,在开发环境执行aarch64-linux-gnu-g++ --version命令检查交叉编译器是否安装,若已经安装则可以忽略;否则请参考以下命令进行安装(以下命令仅为示例,请用户根据实际情况替换):

sudo apt-get installg++-aarch64-linux-gnu

  1. 配置环境变量。

CANN软件提供进程级环境变量设置脚本,供用户在进程中引用,以自动完成环境变量设置。用户进程结束后自动失效。示例如下(以HwHiAiUser用户默认安装路径为例):

. /home/HwHiAiUser/Ascend/ascend-toolkit/set_env.sh

用户也可以通过修改~/.bashrc文件方式设置永久环境变量,操作如下:

  1. 以运行用户在任意目录下执行vi ~/.bashrc命令,打开.bashrc文件,在文件最后一行后面添加上述内容。

  1. 执行:wq!命令保存文件并退出。

  1. 执行source ~/.bashrc命令使其立即生效。

安装MindStudio

下载包链接:MindStudio_5.0.RC1_linux.tar.gz

解压MindStudio软件包

解压jbr至MindStudio安装根目录

# 下载jbr

wget https://cache-redirector.jetbrains.com/intellij-jbr/jbr_dcevm-11_0_10-linux-x64-b1341.35.tar.gz

# 解压

tar -zxvfjbr_dcevm-11_0_10-linux-x64-b1341.35.tar.gz

执行启动脚本

进入软件包解压后的MindStudio/bin目录,执行如下命令

  • Do not importsettings:不导入设置,若选择该选项,则创建新的配置文件,默认为该选项

  • 选择好cann软件安装的路径,点击finish

配置编译环境

使用MindStudio安装用户,在MindStudio安装服务器执行aarch64-linux-gnu-g++--version命令检查是否安装,若已经安装则可以忽略,否则执行如下安装命令:

4、运行环境部署(开发板)

  1. 准备软件包。

直接下载链接:Ascend-cann-nnrt_5.1.RC1.alpha002_linux-aarch64.run

或参见下载链接下载配套驱动版本的离线推理引擎包“Ascend-cann-nnrt_{software version}_linux-aarch64.run”。

驱动与CANN版本的配套关系请参见版本配套说明(Gitee)版本配套说明(Github)

  1. 在Atlas 200 DK上安装离线推理引擎包。

请以制卡时创建的HwHiAiUser用户作为Atlas 200 DK上CANN软件的安装用户,安装步骤请参见《CANN软件安装指南》的“安装运行环境(nnrt软件,在物理机/虚拟机安装) > 安装离线推理引擎包”。

  1. 以HwHiAiUser用户将离线推理引擎包上传到Atlas 200 DK任意目录。

  1. 执行如下命令为安装包增加可执行权限。

chmod +x *.run

其中*.run表示软件包名,请根据实际包名进行替换。

  1. 执行如下校验安装包的一致性和完整性。

./Ascend-cann-nnrt_{software version}_linux-aarch64.run--check

  1. 执行如下命令进行离线推理引擎包的安装。

./Ascend-cann-nnrt_{softwareversion}_linux-aarch64.run --install --chip=Ascend310-minirc

--chip=Ascend310-minirc(可选):指定芯片型号为Ascend310 Soc芯片(RC模式启动,作为主控CPU)。

配置了此参数,则会只部署Ascend310RC形态的AI CPU软件包。

以上命令为使用默认路径进行安装的示例,默认安装路径为“$HOME/Ascend”,安装后的CANN软件存储在“$HOME/Ascend/nnrt/latest”中。

  1. 配置环境变量。

CANN软件提供进程级环境变量设置脚本,供用户在进程中引用,以自动完成环境变量设置。用户进程结束后自动失效。示例如下(以HwHiAiUser用户默认安装路径为例):

. /home/HwHiAiUser/Ascend/nnrt/set_env.sh

用户也可以通过修改~/.bashrc文件方式设置永久环境变量,操作如下:

  1. 以运行用户在任意目录下执行vi ~/.bashrc命令,打开.bashrc文件,在文件最后一行后面添加上述内容。

  1. 执行:wq!命令保存文件并退出。

  1. 执行source ~/.bashrc命令使其立即生效。

5、第三方依赖安装指导(C++样例)

开发环境

请执行以下命令进行安装准备,**其中CPU_ARCH环境变量请根据运行环境cpu架构填写!**

```

# 以安装用户在开发环境任意目录下执行以下命令,打开.bashrc文件。

vi~/.bashrc

# 在文件最后一行后面添加如下内容。CPU_ARCH环境变量请根据运行环境cpu架构填写,如export CPU_ARCH=aarch64

exportCPU_ARCH=aarch64

#THIRDPART_PATH需要按照运行环境安装路径设置,如运行环境为arm,指定安装路径为Ascend-arm,则需要设置为

export THIRDPART_PATH=${HOME}/Ascend-arm/thirdpart/${CPU_ARCH}

#CANN软件安装后文件存储路径,最后一级目录请根据运行环境设置,运行环境为arm,这里填arm64-linux;运行环境为x86,则这里填x86_64-linux,以下以arm环境为例

exportINSTALL_DIR=${HOME}/Ascend/ascend-toolkit/latest/arm64-linux

#此外,满足atc模型转换所需路径如下:

export LD_LIBRARY_PATH=$HOME/Ascend/ascend-toolkit/latest/arm64-linux/aarch64-linux/devlib

环境配置如下:

# 执行命令保存文件并退出。

:wq!

# 执行命令使其立即生效。

source ~/.bashrc

# 创建第三方依赖文件夹

mkdir -p ${THIRDPART_PATH}

# 拷贝公共文件到第三方依赖文件夹

cd$HOME

gitclone samples: CANN Samples

cp-r ${HOME}/samples/common ${THIRDPART_PATH}

```

如果运行环境是200DK,还需要执行以下命令拷贝media_mini等动态库及相关头文件,满足摄像头样例编译需要。

```


<code class="language-plaintext hljs"> mkdir -p ${INSTALL_DIR}/driver
 sudo scp -r HwHiAiUser@X.X.X.X:/usr/lib64/libmedia_mini.so${INSTALL_DIR}/driver/
 sudo scp -r HwHiAiUser@X.X.X.X:/usr/lib64/libslog.so${INSTALL_DIR}/driver/
 sudo scp -r HwHiAiUser@X.X.X.X:/usr/lib64/libc_sec.so${INSTALL_DIR}/driver/
 sudo scp -r HwHiAiUser@X.X.X.X:/usr/lib64/libmmpa.so ${INSTALL_DIR}/driver/
 sudo scp -rHwHiAiUser@X.X.XX:/usr/local/Ascend/include/peripheral_api.h${INSTALL_DIR}/driver/</code>

如果运行环境是200DK,还需要执行以下命令拷贝media_mini等动态库及相关头文件,满足摄像头样例编译需要。

```


<code class="language-plaintext hljs"> mkdir -p ${INSTALL_DIR}/driver
 sudo scp -r HwHiAiUser@X.X.X.X:/usr/lib64/libmedia_mini.so${INSTALL_DIR}/driver/
 sudo scp -r HwHiAiUser@X.X.X.X:/usr/lib64/libslog.so${INSTALL_DIR}/driver/
 sudo scp -r HwHiAiUser@X.X.X.X:/usr/lib64/libc_sec.so${INSTALL_DIR}/driver/
 sudo scp -r HwHiAiUser@X.X.X.X:/usr/lib64/libmmpa.so ${INSTALL_DIR}/driver/
 sudo scp -rHwHiAiUser@X.X.X.X:/usr/local/Ascend/include/peripheral_api.h${INSTALL_DIR}/driver/</code>

运行环境

请执行以下命令进行安装准备

```

# 以安装用户在运行环境任意目录下执行以下命令,打开.bashrc文件。

vi~/.bashrc

# 在文件最后一行后面添加如下内容。CPU_ARCH环境变量请根据运行环境cpu架构填写,如export CPU_ARCH=aarch64

export CPU_ARCH=aarch64

export THIRDPART_PATH=${HOME}/Ascend/thirdpart/${CPU_ARCH} #代码编译时链接第三方库

exportLD_LIBRARY_PATH=${HOME}/Ascend/thirdpart/${CPU_ARCH}/lib:$LD_LIBRARY_PATH #运行时链接库文件

export INSTALL_DIR=${HOME}/Ascend/nnrt/latest #CANN软件安装后文件存储路径

# 执行命令保存文件并退出。

:wq!

# 执行命令使其立即生效。

source ~/.bashrc

# 创建第三方依赖文件夹

mkdir -p ${THIRDPART_PATH}

# 拷贝相关数据,将开发环境中${THIRDPART_PATH}/common上传至运行环境的${THIRDPART_PATH}的路径下。


<code class="language-plaintext hljs"> sudo scp -r HwHiAiUser@X.X.X.X:${THIRDPART_PATH}/common${THIRDPART_PATH}</code>

```

如果运行环境是200DK,还需要执行以下命令拷贝media_mini等动态库及相关头文件,满足摄像头样例运行需要。

```

mkdir ${INSTALL_DIR}/driver

cp/usr/lib64/libmedia_mini.so ${INSTALL_DIR}/driver/

cp/usr/lib64/libslog.so ${INSTALL_DIR}/driver/

cp/usr/lib64/libc_sec.so ${INSTALL_DIR}/driver/

cp/usr/lib64/libmmpa.so ${INSTALL_DIR}/driver/

cp/usr/local/Ascend/include/peripheral_api.h ${INSTALL_DIR}/driver/

依赖安装

安装opencv

由于适配不同运行环境,opencv的安装存在差异较大,请选择以下适合的场景进行安装。如果代码中不涉及opencv,则可以跳过此步骤。

- 开发环境架构为X86,运行环境为x86。

**开发环境和运行环境均**执行以下命令安装opencv。

```

sudo apt-get install libopencv-dev

```

- 开发环境为x86,运行环境为arm。

由于源码安装交叉编译较为复杂,所以这里在运行环境上直接使用apt安装opencv,安装完成后拷贝回开发环境即可。

1. **运行环境**联网并执行以下命令进行安装

```

sudo apt-get install libopencv-dev

```

2. **开发环境**执行以下命令拷贝对应so


<code class="language-plaintext hljs">      # 将arm下的opencv相关的so拷贝到X86的aarch64-linux-gnu目录,不会对本地X86环境本身使用产生任何问题。
      cd /usr/lib/aarch64-linux-gnu
      # 拷贝相关so,其中X.X.X.X为运行环境ip地址。
      sudo scp -rHwHiAiUser@X.X.X.X:/lib/aarch64-linux-gnu/* ./
      sudo scp -rHwHiAiUser@X.X.X.X:/usr/lib/aarch64-linux-gnu/* ./
      sudo scp -rHwHiAiUser@X.X.X.X:/usr/lib/*.so.* ./
      # 拷贝opencv相关头文件。
      sudo scp -rHwHiAiUser@X.X.X.X:/usr/include/opencv* /usr/include</code>
安装ffmpeg+acllite

开发环境执行以下命令源码安装ffmpeg(apt安装的ffmpeg版本较低,所以源码安装)并安装acllite。如果代码中并没有使用acllite库相关功能及函数,可以跳过此步骤。

  1. 下载并安装ffmpeg。


<code class="language-plaintext hljs">     ```
     # 下载ffmpeg
     cd ${HOME}
     wgethttp://www.ffmpeg.org/releases/ffmpeg-4.1.3.tar.gz --no-check-certificate
     tar -zxvf ffmpeg-4.1.3.tar.gz
     cd ffmpeg-4.1.3
     ```</code>

  1. 安装ffmpeg

- **运行环境为x86**,执行以下命令安装ffmpeg


<code class="language-plaintext hljs">         ```
         ./configure --enable-shared --enable-pic--enable-static --disable-x86asm --prefix=${THIRDPART_PATH}
         make -j8
         make install
         ```</code>

- **运行环境为arm**。执行以下命令安装ffmpeg


<code class="language-plaintext hljs">         ```
         ./configure --enable-shared--enable-pic --enable-static --disable-x86asm --cross-prefix=aarch64-linux-gnu---enable-cross-compile --arch=aarch64 --target-os=linux--prefix=${THIRDPART_PATH}
         make -j8
         make install
         ```</code>
  1. 安装acllite并将结果文件拷贝到运行环境。


<code class="language-plaintext hljs">     ```
     # 下载源码并安装git
     cd ${HOME}
     sudo apt-get install git
     git clonehttps://gitee.com/ascend/samples.git
     # 编译并安装acllite
     cd${HOME}/samples/cplusplus/common/acllite/
     make
     make install
     # 拷贝相关so,其中X.X.X.X为运行环境ip地址。
     sudo scp -r ${THIRDPART_PATH}/*HwHiAiUser@X.X.X.X:${THIRDPART_PATH}
     ```</code>
安装presentagent

开发环境执行以下命令源码安装protobuf及presentagent。如果代码中并没有使用presentagent相关功能及函数,可以跳过此步骤。

  1. 安装protobuf相关依赖


<code class="language-plaintext hljs">      ```
      # 安装protobuf相关依赖
      sudo apt-get install autoconf automakelibtool 
      # 安装pip3
      sudo apt-get install python3-pip 
      # 安装presentserver启动所需要的python库。若安装失败,请自行更换python源。
      python3.6 -m pip install --upgrade pip--user
      python3.6 -m pip install tornado==5.1.0protobuf Cython numpy --user
      python3.7 -m pip install tornado==5.1.0protobuf Cython numpy --user
      ```</code>
  1. 安装protobuf

- **运行环境为x86**,执行以下命令安装protobuf


<code class="language-plaintext hljs">         ```   
         # 下载protobuf源码
         cd ${HOME}
         git clone -b 3.13.xhttps://gitee.com/mirrors/protobufsource.git protobuf
         # 编译安装protobuf
         cd protobuf
         ./autogen.sh
         ./configure --prefix=${THIRDPART_PATH}
         make -j8
         sudo make install
         ```</code>

- **运行环境为arm**。执行以下命令安装protobuf


<code class="language-plaintext hljs">         ```
         # 下载protobuf源码
         cd ${HOME}
         git clone -b 3.13.xhttps://gitee.com/mirrors/protobufsource.git protobuf
         cp -r protobuf protobuf_arm
         # 首次编译安装protobuf,生成x86架构的protoc文件
         cd protobuf
         ./autogen.sh
         ./configure
         make -j8
         sudo make install
         cd $HOME/protobuf_arm
         ./autogen.sh
         ./configure --build=x86_64-linux-gnu--host=aarch64-linux-gnu --with-protoc=protoc --prefix=${THIRDPART_PATH}
         make -j8
         make install
         ```</code>

  1. 生成proto文件并安装presentagent。


<code class="language-plaintext hljs">     ```
     cd$HOME/samples/cplusplus/common/presenteragent/proto
     sudo ldconfig
     protoc presenter_message.proto--cpp_out=./
     # 安装presenteragent
     cd ..
     make -j8
     make install
     # 拷贝相关so,其中X.X.X.X为运行环境ip地址。
     sudo scp -r ${THIRDPART_PATH}/*HwHiAiUser@X.X.X.X:${THIRDPART_PATH}</code>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/407195
推荐阅读
  

闽ICP备14008679号