HUAWEI Atlas 200 DK 环境搭建与基本应用

实验环境

  • 虚拟机——开发环境
    • Ubuntu 18.04 x86操作系统
    • CANN toolkit 5.0.4.alpha005x86版本aarch64版本
  • 开发板——运行环境
    • 固件版本1.0.12.alpha
    • **Ubuntu 18.04 arm **操作系统
    • 200DK的CANN 5.0.4的nnrt驱动包

1. 环境部署

1.1 制作SD卡——mksd方式

  • 制卡环境:含TF卡插槽的计算机,搭载VMware虚拟机 Ubuntu 18.04 X86操作系统

1.1.1 创建制卡目录mksd,下载制卡所需的文件

#创建目录
sudo mkdir mksd
cd mksd
# 下载制卡脚本
wget https://gitee.com/ascend/tools/raw/master/makesd/generic_script/make_sd_card.py
wget https://gitee.com/ascend/tools/raw/master/makesd/generic_script/make_ubuntu_sd.sh
#下载ubuntu arm版操作系统镜像
wget http://old-releases.ubuntu.com/releases/18.04.3/ubuntu-18.04.5-server-arm64.iso
#下载200DK的CANN 5.0.4的nnrt驱动包
wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/CANN/5.0.4.alpha005/Ascend-cann-nnrt_5.0.4.alpha005_linux-aarch64.run
#下载固件
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/turing/resource/atlas200dk/1.0.12/A200dk-npu-driver-21.0.3.1-ubuntu18.04-aarch64-minirc.tar.gz

1.1.2 TF卡格式化

将TF卡插入电脑插槽

格式化TF卡

1.1.3 制卡

#安装依赖
pip3 install pyyaml -i https://pypi.tuna.tsinghua.edu.cn/simple --user
sudo apt-get install qemu-user-static binfmt-support python3-yaml squashfs-tools gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
#查看TF卡所在目录
sudo fdisk -l
#开始制卡
python3 make_sd_card.py local /dev/sdb

出现Make SD Card successfully!则制卡成功

1.1.4 运行环境安装

将制卡完成的TF卡从笔记本电脑的卡槽拔出,再插入200DK的TF卡槽,开始加电:200DK的4个灯会先亮右边两个灯,然后左边两个灯会闪烁(貌似在固件更新),然后变得4个灯都长亮。

耐心等待4个灯全绿——表示200DK启动成功。

1.2 连接开发板并配置网络

  • 连接方式:通过数据线连接开发板和笔机本,通过网线共享网络

1.2.1 USB连接并下载驱动

参考资料:https://blog.csdn.net/qq_38597208/article/details/127878304

使用USB线连接开发板和笔机本,此时电脑缺少相关网卡驱动

在RNDIS上点击右键,选择更新驱动程序

选择浏览我的电脑以查找驱动程序

选择让我从计算机上的可用驱动程序列表中选取

滑动鼠标找到网络适配器并选择选择,然后点击下一页

在接下来的窗口中,先在左边厂商找到Microsoft,右边型号处找到USB RNDIS6适配器,最后点击下一页

最弹出如下窗口便完成了USB虚拟网卡驱动安装

此时能够正常识别

这时可以在虚拟机的USB接入处选择接入该设备

#下载网络配置脚本
wget https://gitee.com/ascend/tools/raw/master/configure_usb_ethernet/for_20.1/configure_usb_ethernet.sh
#运行脚本
bash configure_usb_ethernet.sh -s 192.168.1.188

虚拟机设置为192.168.1.188,开发板默认192.168.1.2

可以使用 ssh [email protected] 连接200DK(密码Mind@123)

运行环境安装完成

1.2.2 环境变量配置

# 以安装用户在运行环境任意目录下执行以下命令,打开.bashrc文件。
vi ~/.bashrc  
# 在文件最后一行后面添加如下内容。CPU_ARCH环境变量请根据运行环境cpu架构填写,如export CPU_ARCH=aarch64
export CPU_ARCH=`arch`
export THIRDPART_PATH=${HOME}/Ascend/thirdpart/${CPU_ARCH}  #代码编译时链接第三方库
export LD_LIBRARY_PATH=${HOME}/Ascend/thirdpart/${CPU_ARCH}/lib:$LD_LIBRARY_PATH  #运行时链接库文件
export INSTALL_DIR=${HOME}/Ascend/ascend-toolkit/latest  #CANN软件安装后文件存储路径
# 执行命令保存文件并退出。
:wq!  
# 执行命令使其立即生效。 
source ~/.bashrc 
# 创建第三方依赖文件夹
mkdir -p ${THIRDPART_PATH}
# 拷贝相关数据,其中X.X.X.X为开发环境ip地址。
sudo scp -r [email protected]:${THIRDPART_PATH}/common ${THIRDPART_PATH}

还需要执行以下命令拷贝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/

1.2.3 配置网络

通过网线连接笔机本和DK,选择共享无线网给以太网

配置以太网ipv4为DK网关(默认为192.168.0.1),此时重启DK后即可接入网络

1.2.4 安装opencv

#运行环境联网并执行以下命令进行安装(注:确保是3.x版本)
sudo apt-get install libopencv-dev

1.3 配置开发环境

切换至虚拟机——开发环境

1.3.1 下载相关文件

#root下安装相关依赖
apt-get install -y gcc g++ make cmake zlib1g-dev libbz2-dev libsqlite3-dev libssl-dev libxslt1-dev libffi-dev net-tools libncursesw5-dev
#安装CANN Toolkit
#需要同时安装CANN toolkit的x86版本和aarch64版本
wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/CANN/5.0.4.alpha005/Ascend-cann-toolkit_5.0.4.alpha005_linux-x86_64.run
wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/CANN/5.0.4.alpha005/Ascend-cann-toolkit_5.0.4.alpha005_linux-aarch64.run
#安装Toolkit
./Ascend-cann-toolkit_5.0.4.alpha005_linux-x86_64.run --install --chip=Ascend310-minirc
./Ascend-cann-toolkit_5.0.4.alpha005_linux-aarch64.run --install --chip=Ascend310-minirc

1.3.2 环境变量配置

由于采用的是分设环境开发,需要进行环境变量配置

# 以安装用户在开发环境任意目录下执行以下命令,打开.bashrc文件。
vi ~/.bashrc  
# 在文件最后一行后面添加如下内容。CPU_ARCH环境变量请根据运行环境cpu架构填写,如export CPU_ARCH=aarch64
export CPU_ARCH=aarch64
# THIRDPART_PATH需要按照运行环境安装路径设置,如运行环境为arm,指定安装路径为Ascend-arm,则需要设置为export THIRDPART_PATH=${HOME}/Ascend-arm/thirdpart/${CPU_ARCH}
export THIRDPART_PATH=${HOME}/Ascend/thirdpart/${CPU_ARCH}  #代码编译时链接第三方库
# CANN软件安装后文件存储路径,最后一级目录请根据运行环境设置,运行环境为arm,这里填arm64-linux;运行环境为x86,则这里填x86_64-linux,以下以arm环境为例
export INSTALL_DIR=${HOME}/Ascend/ascend-toolkit/latest/arm64-linux
# 执行命令保存文件并退出。
:wq!  
# 执行命令使其立即生效。 
source ~/.bashrc 
# 创建第三方依赖文件夹
mkdir -p ${THIRDPART_PATH}
# 拷贝公共文件到第三方依赖文件夹
cd $HOME
git clone https://gitee.com/ascend/samples.git
cp -r ${HOME}/samples/common ${THIRDPART_PATH}

还需要执行以下命令拷贝media_mini等动态库及相关头文件,满足摄像头样例编译需要

mkdir -p ${INSTALL_DIR}/driver
sudo scp -r [email protected]:/usr/lib64/libmedia_mini.so ${INSTALL_DIR}/driver/
sudo scp -r [email protected]:/usr/lib64/libslog.so ${INSTALL_DIR}/driver/
sudo scp -r [email protected]:/usr/lib64/libc_sec.so ${INSTALL_DIR}/driver/
sudo scp -r [email protected]:/usr/lib64/libmmpa.so ${INSTALL_DIR}/driver/
sudo scp -r [email protected]:/usr/local/Ascend/include/peripheral_api.h ${INSTALL_DIR}/driver/

1.3.3 安装opencv

执行以下命令拷贝对应so

# 将arm下的opencv相关的so拷贝到X86的aarch64-linux-gnu目录,不会对本地X86环境本身使用产生任何问题。
cd /usr/lib/aarch64-linux-gnu
# 拷贝相关so,其中X.X.X.X为运行环境ip地址。
sudo scp -r [email protected]:/lib/aarch64-linux-gnu/* ./
sudo scp -r [email protected]:/usr/lib/aarch64-linux-gnu/* ./
sudo scp -r [email protected]:/usr/lib/*.so.* ./
# 拷贝opencv相关头文件。
sudo scp -r [email protected]:/usr/include/opencv* /usr/include

1.3.4 安装ffmpeg和x264、acllite

  1. 下载并安装x264。
# 下载x264
cd ${HOME}
git clone https://code.videolan.org/videolan/x264.git
cd x264
# 安装x264
./configure --enable-shared --disable-asm
make
sudo make install
sudo cp /usr/local/lib/libx264.so.164 /lib
  1. 下载并安装ffmpeg。
./configure --enable-shared --enable-pic --enable-static --disable-x86asm --cross-prefix=aarch64-linux-gnu- --enable-cross-compile --arch=aarch64 --target-os=linux --enable-libx264 --enable-gpl --prefix=${THIRDPART_PATH}
make -j8
make install
  1. 安装acllite并将结果文件拷贝到运行环境
# 下载源码并安装git
cd ${HOME}
sudo apt-get install git
git clone https://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}/* [email protected]:${THIRDPART_PATH}

2. 摄像头相关实践

强烈建议自行去gitee仓库查看教程

2.1 源码下载

切换至开发环境

git clone https://gitee.com/ascend/samples.git
cd samples
git checkout v0.3.0

2.2 源码编译

切换到ascendcamera目录,创建目录用于存放编译文件,例如,本文中,创建的目录为 build/intermediates/host

cd $HOME/samples/cplusplus/level1_single_api/5_200dk_peripheral/ascendcamera
mkdir -p build/intermediates/host

切换到 build/intermediates/host目录,执行cmake生成编译文件

cd build/intermediates/host   
make clean   
cmake ../../../src -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ -DCMAKE_SKIP_RPATH=TRUE

执行make命令,生成的可执行文件main在 ascendcamera/out目录下

make

2.3 样例运行(图片保存至本地)

执行以下命令,将开发环境的 ascendcamera目录上传到运行环境中,例如 /home/HwHiAiUser,并以HwHiAiUser(运行用户)登录运行环境(Host)。

# 【xxx.xxx.xxx.xxx】为运行环境ip,200DK在USB连接时一般为192.168.1.2。
scp -r $HOME/samples/cplusplus/level1_single_api/5_200dk_peripheral/ascendcamera [email protected]:/home/HwHiAiUser
ssh [email protected]

切换到运行环境并执行

cd $HOME/ascendcamera/out
./main -i -c 1 -o ./output/filename.jpg --overwrite

参数说明:

  • -i:代表获取jpg格式的图片。
  • -c:表示摄像头所在的channel,此参数有“0”和“1”两个选项,“0“对应“Camera1“,“1“对应“Camera2“,如果不填写,默认为“0”。
  • -o:表示文件存储位置,此处output为本地已存在的文件夹名称,filename.jpg为保存的图片名称,可用户自定义。
  • --overwrite:覆盖已存在的同名文件。

(内容转自:天马司空)

开源 Java 工具 - Hutool 致大家的一封信 Visual Studio Code 1.99 发布,引入 Agent 和 MCP 亚马逊在最后一刻提交了收购 TikTok 的报价 FFmpeg 愚人节整活:加入 DOGE 团队,用汇编重写美国社保系统 龙芯 2K3000(3B6000M)处理器流片成功 中国首款全自研高性能 RISC-V 服务器芯片发布 清华大学开源软件镜像站的愚人节彩蛋 比尔·盖茨公开自己写过的“最酷的代码” Linus 口吐芬芳:怒斥英特尔工程师提交的代码是“令人作呕的一坨” CDN 服务商 Akamai 宣布托管 kernel.org 核心基础设施
{{o.name}}
{{m.name}}

猜你喜欢

转载自my.oschina.net/u/4806939/blog/18098140
今日推荐