环境配置概述
重要!:本环境配置需要在ubuntu18.04系统下,其他版本的ubuntu可能出现难以预料的问题
在环境配置前,首先完成地平线开发包的下载,根据下面链接的教程进行:
https://developer.horizon.ai/forum/id=618b3583f316d207c2ebb355
我们采用地平线官方的最新开发包:1.7.5
包的内容如下所示:
disk_X3SDB为烧入板子的官方镜像;
docker_cpu和docker_gpu为地平线官方的docker镜像;
horizon_xj3_open_explorer为地平线官方软件开发包;
包内的所有文件都需要下载,后续会用到
地平线开发板ubuntu配置分为两种:
(1)ubuntu18.04直接配置环境
与普通嵌入式linux开发板环境配置类似,安装一些常用开发包并配置交叉工具链
(2)docker环境配置
docker相当于在ubuntu系统中又开了一个ubuntu虚拟机,与直接配置环境不同的是,地平线官方提供了docker镜像包,将docker镜像包在ubuntu系统中加载,可以直接获得一个配置好的开发环境,无需进行开发包安装和交叉工具链配置等工作。
如果是第一次配置地平线环境,两种方式建议都进行
(1)直接配置环境更加直观方便后续更改代码编译
(2)docker环境配置为代码编译提供保障,如果主系统环境出问题,也可以通过docker编译,减少无意义的试错时间,同时在更换电脑后,docker也可以便于编译环境快速部署
ubuntu18.04环境配置
本流程基于地平线官方视频及开发文档
视频:https://www.bilibili.com/video/BV1ev411N7Uk?spm_id_from=333.999.0.0
开发文档:QQ群中开发手册,开发手册解压后从doc/horizon_xj3_soc_user_guide_doc.html进入ddk开发手册-x3j3平台软件开发手册
一、系统基础包安装
sudo apt install build-essential
sudo apt-get install make
sudo apt install cmake
sudo apt install bison
sudo apt install flex
sudo apt-get install python-numpy
sudo apt install android-tools-fsutils
sudo apt install mtd-utils
sudo apt install zlib1g-dev
二、配置网络环境
1、虚拟机安装ssh命令,便于连接开发板
sudo apt install ssh#安装ssh命令
2、为了便于以后进行nfs挂载,虚拟机需要获得一个静态ip,此处基于有线连接,无线连接可能略有区别
首先在虚拟机的网络适配器中添加一个网络适配器,采用桥接模式
再进入编辑中的虚拟网络编辑器,点击更改设置更改桥接模式的连接方式
此处桥接模式桥接至的外部网络需要是电脑的网卡控制器
完成添加后,进行ifconfig查看虚拟机的ip地址,如果看不到第二个网络适配器的ipv4地址,需要对静态ip进行配置
sudo gedit /etc/network/interfaces
在文档中添加
auto ens38 #网卡名
iface ens38 inet static
address 10.13.101.xx #要分配的静态ip地址,此处根据具体需要变更
gateway 10.13.101.1# 网关
netmask 255.255.255.0
注:其中的中文和空格删去
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4Jx7kxFc-1668496881761)(H:/study/doctor/in_board_learning/pic/202112022043751.png)]
修改完成后重启网络服务
/etc/init.d/networking restart
三、交叉编译工具链安装
1、首先进行相关包的安装
sudo apt-get update -y
sudo apt-get upgrade -y
sudo apt-get install lsb-core -y
sudo apt-get install graphviz -y
sudo apt-get install python3-pip -y
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple Cython
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy
2、安装交叉编译器,此交叉编译器包含在1.7.5开发包/ddk/tools中,将交叉编译器解压至/opt目录下
sudo tar -Jxf ./gcc_linaro_6.5.0_2018.12_x86_64_aarch64_linux_gnu.tar.xz -C /opt
3、更改系统变量,把下面的内容复制到.bashrc中,这个文件用于设置系统变量
sudo gedit ~/.bashrc
export LINARO_GCC_ROOT=/opt/gcc-linaro-6.5.0-2018.12-x86_64_aarch64-linux-gnu
export PATH=$LINARO_GCC_ROOT/bin:$PATH
source ~/.bashrc #激活系统变量
4、进入开发包中ddk/package/host目录,运行install_ai_toolchain.sh和install_host_package.sh命令
sh ./install_ai_toolchain.sh # 此处若报错,sh可能要换为bash,后续一致
sh ./install_host_package.sh
install_ai_toolchain.sh中会碰到安装torch失败,多装几次就成了
后面遇到cmake版本太低,脚本会自动连接cmake.org安装,但是网络太差了下载不了,因此自己下一个最新的cmake3.20.4,直接添加环境变量,索引cmake即可
cmake索引参考:https://www.cnblogs.com/weiqinglan/p/5681539.html
5、验证开发环境,进入ddk/samples/solution_zoo/solution_example/yolov3_mobilenetv2_example
sh ./build_and_deploy.sh
此处我碰到的错误:找不到/lza/.horizon/ddk,实际是环境没配置好,再运行一次install_host_package.sh即可
docker配置
此处docker配置最好基于前面ubuntu18.04完成配置后,同时此配置也是参考地平线官方视频:
https://www.bilibili.com/video/BV1HA411c79s?spm_id_from=333.999.0.0
1、从阿里云安装docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
完成安装后,看一下docker 目录下的image
sudo docker image ls
2、建立docker组
sudo groupadd docker
sudo gpasswd -a $USER docker
sudo service docker restart
3、加载下载好的镜像
sudo docker load -i docker_gpu_openexplorer_ubuntu_v1.10.5.tar
加载大约需要15分钟,加载好之后看看docker目录
sudo docker image ls
#输出
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 7655b832c96c 4 weeks ago 12.4GB
sudo docker container ls
#输出
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4、将本地文件夹映射到docker容器中,并将容器名字改为horizon
sudo docker run -it -d -v /home/lza/horizon1_7_5/horizon_xj3_open_explorer_v1.7.5_20211122/ddk/samples:/data --name horizon 7655b832c96c
-v 指本地路径映射到docker路径,此处是将samples映射到docker的/data路径
sudo docker container ls
#输出
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f0e89f4ef9a4 7655b832c96 "/bin/bash" 55 seconds ago Up 48 seconds horizon
5、进入容器
sudo docker attach horizon
6、验证容器环境,进入docker的/data路径,再进入solution_zoo/solution_example/yolov3_mobilenetv2_example运行命令
sh ./build_and_deploy.sh
# 如果使用sh报Syntax error,将sh改为bash
# bash ./build_and_deploy.sh
/data路径,再进入solution_zoo/solution_example/yolov3_mobilenetv2_example运行命令
sh ./build_and_deploy.sh
# 如果使用sh报Syntax error,将sh改为bash
# bash ./build_and_deploy.sh
可以看到docker环境的部署是十分方便的