[Atlas200] 制卡与安装CANN
1. 写在前面
最近又要研究 Atlas200 的制卡和安装软件。距离上次研究已经过了好久时间,今天重拾并记录一下。
首先在 ~/.profile 末尾添加:
if [ "$BASH" ]; then
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
fi
这样每次启动终端就会自动 source ~/.bashrc。
2. 制卡
制卡参考的是:Atlas 200 AI加速模块 1.0.9 软件安装与维护指南 (RC场景) 06 烧录文件的方式 - 华为。
所需要的文件有:
- ubuntu-18.04-server-arm64.iso;
- sd_tools.tar.gz;
- Ascend310-driver-6.0.0-ubuntu18.04.aarch64-minirc.tar.gz;
- Ascend310-firmware-6.0.0-minirc.run
值得注意的是,在执行 python3 make_sd_card.py recover 的过程中,需要输入 HwHiAiUser 的密码,密码为:Huawei2012#。同时还需要输入 root 的密码,密码为:Huawei12#$。接着等待制卡完成即可。
哦对,有一个命令可以移除制卡时输入密码带来的错误:
ssh-keygen -f "/root/.ssh/known_hosts" -R "192.168.0.2"
3. 联网
假设 PC 机和 Atlas 的网线、串口均连接好。
在上位 PC 机上,打开“网络连接”视图,并右击打开“WLAN”的属性,设置网络共享给以太网,如下图所示。

图 1 网络连接共享设置
同时以太网地址也需进行设置,如下图所示。

图 2 以太网IP设置
当你发现设置完 DNS 还是不能 ping 通,就可以试着重新设置 WIFI 或者其它网段给予以太网的共享网络,以便 Atlas200 能够联网。
具体来讲,就是先取消图 1 中的第一个勾选,然后按“确定”,之后再把图 1 中的第一个勾选选回来,然后再按“确定”,最后再重新进行图 2 中的 IP 设置,即可完成 PC 端的配置。
接着在Atlas200 的 Ubuntu 系统中配置 DNS。
(1) 确认 systemd-resolved 服务正在运行,输入命令:
systemctl status systemd-resolved
(2) 编辑 /etc/systemd/resolved.conf 文件,输入命令:
sudo vim /etc/systemd/resolved.conf
(3) 在 [Resolve] 部分添加 DNS 服务器地址,如下所示:
[Resolve]
DNS=8.8.8.8 1.1.1.1
(4) 保存文件并重启 systemd-resolved 服务,输入命令:
sudo systemctl restart systemd-resolved
(5) 把命令加入 rc.local 文件以便开机时刷新 DNS:
sudo vim /etc/rc.local
在文件中找到合适的位置(通常是在其他脚本执行之前或之后)插入以下命令:
systemctl restart systemd-resolved
(6) 使用以下命令测试连通性:
ping www.baidu.com
4. 换源并安装cmake,g++
参考:Atlas200安装CANN环境,安装Anaconda,安装MindStudio,.pt转.onnx,.onnx转换.om以及代码执行全套流程 的 apt换源 部分执行换源操作。
之后切换为 root 用户,使用下列命令安装 cmake:
# 安装 cmake
sudo apt-get install -y cmake
# 验证版本
cmake --version
# 安装 g++
sudo apt-get install -y g++
# 版本
g++ --version
最后版本号应该为:cmake version 3.10.2,g++ (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) 7.5.0
5. 安装python(miniconda)
只安装 python 可参考官方教程。这里我选择的是安装 miniconda。
首先在 atlas200 某个目录下执行以下脚本获取安装文件:
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py37_4.9.2-Linux-aarch64.sh
接着参考:在Ubuntu上安装和使用miniconda 进行安装和环境变量配置即可。
重点:这里我是在 HwHiAiUser 用户下安装的,安装路径为:/home/HwHiAiUser/Tool/。然后在 HwHiAiUser 和 root 用户下都配置了环境变量。同时需要在两个用户下分别执行 conda init。
注意:可以将环境变量写入 ~/.bash_profile 和 ~/.bashrc 下。写入 ~/.bash_profile 的语句会在 SSH 登录时自动加载。下面装别的软件也是同理。
例如,往 ~/.bash_profile 写入,即可让 SSH 登录时自动加载 ~/.bashrc:
# 加载 .bashrc(确保交互式终端也能用)
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
之后执行下列命令来安装相应的库,这里我直接在 base 环境下装了,因为我的 base 环境就是 3.7 版本的 python:
pip3 install attrs scipy==1.7 numpy==1.21.6 decorator sympy cffi pyyaml pathlib2 psutil protobuf==3.20 cython requests absl-py
6. 安装CANN
参考:软件./安装-CANN社区版8.2.RC1.alpha002-昇腾社区
这里我是在 root 用户下进行安装的,安装的文件名字为:Ascend-cann-toolkit_6.0.1_linux-aarch64.run。安装的路径为:/home/HwHiAiUser/Tool/Ascend/。使用下列命令安装即可:
./Ascend-cann-toolkit_6.0.1_linux-aarch64.run --install --install-path=/home/HwHiAiUser/Tool/Ascend/
注意:在 root 用户下使用上述路径安装需要把 /home/HwHiAiUser/Tool 目录的所有者和组更改为 root :
sudo chown root:root /home/HwHiAiUser
sudo chown -R root:root /home/HwHiAiUser/Tool
安装完再恢复回来:
sudo chown -R HwHiAiUser:HwHiAiUser /home/HwHiAiUser
之后在 HwHiAiUser 和 root 用户下都配置环境变量:
source /home/HwHiAiUser/Tool/Ascend/ascend-toolkit/set_env.sh。
7. 安装opencv4.5.4
参考:https://www.hiascend.com/forum/thread-0213130307640578024-1-1.html 在官网下载 OpenCV – 4.5.4 的版本安装编译即可。
在编译安装环节,cmake 命令可参考下面命令,可以顺便把 python 和 opencv 给绑定了:
# 手动指定正确的路径(根据上面 find 的结果修改)
cmake \
-D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/home/HwHiAiUser/Tool/opencv \
-D OPENCV_GENERATE_PKGCONFIG=ON \
\
-D PYTHON_EXECUTABLE=/home/HwHiAiUser/Tool/miniconda3/bin/python3 \
-D PYTHON_INCLUDE_DIR=/home/HwHiAiUser/Tool/miniconda3/include/python3.7m \
-D PYTHON_LIBRARY=/home/HwHiAiUser/Tool/miniconda3/lib/libpython3.7m.so \
-D PYTHON3_PACKAGES_PATH=/home/HwHiAiUser/Tool/miniconda3/lib/python3.7/site-packages \
-D PYTHON3_NUMPY_INCLUDE_DIRS=/home/HwHiAiUser/Tool/miniconda3/lib/python3.7/site-packages/numpy/core/include \
-D BUILD_opencv_python3=ON \
\
-D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D BUILD_EXAMPLES=OFF \
..
之后进行 make -j$(nproc) 和 make install 来安装。
我是在 HwHiAiUser 用户下安装的,安装路径为:/home/HwHiAiUser/Tool/,这应该是自定义的。安装完成后将下列环境变量在 HwHiAiUser 和 root 用户下写入即可:
# OpenCV 4.5.4 环境变量(需添加)
export PATH=/home/HwHiAiUser/Tool/opencv/bin:$PATH
export LD_LIBRARY_PATH=/home/HwHiAiUser/Tool/opencv/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/home/HwHiAiUser/Tool/opencv/lib/pkgconfig:$PKG_CONFIG_PATH
最后使用 opencv_version 验证版本号:4.5.4。
8. 编译并加载xdma驱动(可选)
这节是由于项目需要,可以跳过。
先去官方仓库下载 xdma 驱动:Xilinx的官方仓库链接,或者直接使用“Atllas200相关资料/XDMA/裘佬版本/XDMA/linux-kernel”里的文件。
接着参考:源码编译 - Atlas 200 AI加速模块 6.0.RC1软件安装与维护指南(RC场景)02 - 华为) 进行驱动编译。
大致记录一下注意事项:
(1) 在“编译驱动-增加新驱动”一节里,需要在上位PC机的Ubuntu系统上解压源码包“Ascend310-source-minirc.tar.gz”,进入到 source/drivers/src 目录,新建一个名为“xdma_xilinx”的文件夹,并将上述的 裘佬版本/XDMA/linux-kernel/xdma 目录下的文件和 裘佬版本/XDMA/linux-kernel/include 下的头文件均复制到 xdma_xilinx 文件夹下。如图 3 所示,里面有一些额外的 .o 等文件出现,是因为我已经编译过一次了,没编译过的话是没有这些文件的。

图 3 Ubuntu系统界面示意
(2) 在“编译驱动-编译驱动”一节里,在编译内核操作之后,需要退到 source 目录下,打开 build.sh 脚本文件,在 DRIVER_MODULES 变量中增加新增的驱动文件夹名称,就是上面提到的 xdma_xilinx,并进行保存。如图 4 所示。

图 4 build.sh里新增驱动
最后执行如下命令,编译 minirc 驱动。编译成功后会在 source/output 目录生成KO驱动文件:
bash build.sh minirc
(3) 接着在 atlas200 的 Ubuntu 系统中装载驱动,使用 insmod xdma.ko 命令即可安装。

图 5 驱动安装成功
之后进行测试,如果测试成功就把 .sh 脚本写入 /etc/rc.local 文件里。
加载 fpga 程序和驱动后,使用 lspci -v 识别,如果出现下列结果代表驱动和 fpga 程序加载成功:

图 6 加载成功
9. 代码测试
最后用自己的 cpp 代码测试一下 CANN 的推理以及 opencv 能不能正常使用即可。

浙公网安备 33010602011771号