打开微信,使用扫一扫进入页面后,点击右上角菜单,
点击“发送给朋友”或“分享到朋友圈”完成分享
本工具集主要用于搭建基于寒武纪MLU220-SOM的交叉编译环境以及一些常用实例的交叉编译与验证。
此工具集开发宗旨是"一键编译与验证", 力求压缩环境搭建与功能验证的时间成本, 以便更快上手MLU220-SOM。
功能说明
此工具包集成了如下功能:
基于Dockerfile自动编译Docker镜像 >> 启动Docker容器
系统完整源码包交叉编译与验证
CNStream交叉编译与验证
CNRT交叉编译与验证
FFmpeg-MLU交叉编译与验证
CNCodec交叉编译与验证
EasyDK交叉编译与验证
单独交叉编译第三方常用工具: GFlags、Glogs、OpenCV、FFMpeg、Live555、FreeType、Perf
硬件环境准备:
名称 | 数量 | 备注 |
---|---|---|
开发主机/服务器 | 一台 | 主流配置即可 |
MLU220SOM | 一台 | |
电源适配器 | 一套 | 12V 2A DC电源输出 |
USB转TTL串口线 | 一条 |
软件环境准备:
名称 | 版本/文件 | 备注 |
---|---|---|
Linux OS | Ubuntu16.04/Ubuntu18.04/CentOS7 | 宿主机操作系统 |
MLU220-SOM交叉编译工具集 | mlu220-cross-compile-docker-image | MLU220-SOM交叉编译工具集 |
Driver_MLU270 | neuware-mlu270-driver-dkms_4.9.2_all.deb | MLU270驱动安装包(依操作系统选择) |
CNToolkit_MLU270 | cntoolkit_1.7.3-2.ubuntu16.04_amd64.deb | Neuware SDK For MLU270(依操作系统选择) |
CNToolkit_MLU220EDGE | cntoolkit-edge_1.7.3-1_arm64.tar.gz | Neuware SDK For MLU220 |
GCC_LINARO_MLU220EDGE | gcc-linaro-6.2.1-2016.11-x86_64_aarch64-linux-gnu.tgz | ARM64 交叉编译器 |
GCC_ARMM0_MLU220EDGE | gcc-arm-none-eabi-8-2018-q4-major.tar.gz | M0 交叉编译器 |
注: 以上软件环境中文件名词, 如有版本升级及名称变化, 可以在 env.sh 中进行修改。
下载地址:
Ubuntu16.04: http://mirrors.aliyun.com/ubuntu-releases/16.04
MLU220-SOM交叉编译工具集: https://github.com/CambriconKnight/mlu220-cross-compile-docker-image
Neuware SDK: https://cair.cambricon.com/#/home/catalog?type=SDK%20Release
其他开发资料, 可前往寒武纪开发者社区注册账号按需下载。也可在官方提供的专属FTP账户指定路径下载。
预装软件
以下软件/工具已经安装到Docker容器中了:
curl
git
wget
vim
cmake
make
opencv(x86)
glog(x86)
ssh
tree
minicom
tftpd
nfs
net-tools
cndev
cndrv
cnrt
cncodec
gcc-linaro
gcc-arm-none-eabi
cntoolkit-edge
环境变量
以下环境变量在Docker容器中已经设置:
BIN_DIR_GCC_Linaro=/opt/work/gcc-linaro-6.2.1-2016.11-x86_64_aarch64-linux-gnu/bin
BIN_DIR_GCC_ARM=/opt/work/gcc-arm-none-eabi-8-2018-q4-major/bin
PATH=BIN_DIR_GCC_ARM:$PATH
NEUWARE_HOME=/opt/work/neuware/pc
. ├── build-image-mlu220-cross-compile.sh (编译出MLU220交叉编译开发环境的脚本) ├── clean.sh (清理Build出来的临时目录或文件,包括镜像文件,已加载的镜像,已加载的容器等) ├── cncodec (cncodec的交叉编译开发目录,未完......待自测验证后提交) ├── cnrt (cnrt的交叉编译开发目录,未完......待自测验证后提交) ├── cnstream (cnstream的交叉编译开发目录,已完) ├── docker (存储dockerfile相关文件) ├── easydk (easydk的交叉编译开发目录,未完......待自测验证后提交) ├── ffmpeg-mlu (ffmpeg-mlu的交叉编译开发目录) ├── 3rdparty (3rdparty的交叉编译开发目录,未完......待自测验证后提交) ├── load-image-mlu220-cross-compile.sh (加载docker镜像) ├── README.md (readme) ├── res (readme文档中涉及到的图片资源存放路径) ├── run-container-mlu220-cross-compile.sh (启动docker容器) └── tools (交叉编译中常用的小工具和脚本)
git clone https://github.com/CambriconKnight/mlu220-cross-compile-docker-image.git
#编译完成后,会在本地生成一个docker镜像。 #编译Docker镜像:安装 gcc-linaro + cntoolkit-edge ./build-image-mlu220-cross-compile.sh -l 1 -c 1 #编译Docker镜像:安装 Neuware + gcc-linaro + gcc-arm #./build-image-mlu220-cross-compile.sh -n 1 -l 1 -a 1 #编译Docker镜像:安装 Neuware + gcc-linaro #./build-image-mlu220-cross-compile.sh -n 1 -l 1 #编译Docker镜像:安装 Neuware + gcc-arm #./build-image-mlu220-cross-compile.sh -n 1 -a 1
编译后会在docker目录下生存一个镜像文件。$VERSION版本以实际为准
...... ====================== save image ====================== -rw-rw-r-- 1 root root 3785447424 7月 27 18:35 ./docker/image-ubuntu16.04-mlu220-cross-compile-$VERSION.tar.gz
#加载Docker镜像 ./load-image-mlu220-cross-compile.sh
#启动Docker容器 ./run-container-mlu220-cross-compile.sh
#执⾏以下命令,确认aarch64-linux-gnu-gcc版本信息: aarch64-linux-gnu-gcc -v #执⾏以下命令,确认arm-none-eabi-gcc版本信息: arm-none-eabi-gcc -v
#进入默认目录 cd /opt/work mkdir opensrc #拷贝源码包(非必要)。拷贝在driver 包的release/neuware/opensrc ⽬录下有opensrc.tar.gz 压缩⽂件 #cp /home/ftp/mlu220/IVA-1.6.106/mlu220edge/release/neuware/opensrc/opensrc.tar.gz ./ #(直接)解压源码包。源码包以实际共享目录为准,解压后,可以得到开源的源码。 tar zxf /home/ftp/mlu220/IVA-1.6.106/mlu220edge/release/neuware/opensrc/opensrc.tar.gz -C /opt/work/opensrc #编译完整源码包 cd /opt/work/opensrc/mlu220_build/build/ make plat=edge
常见问题-1:
问题描述:如果遇到如下错误。
......./ramdisk_recovery.img ./tools/generate_bsp_pkg.sh: 35: ./tools/generate_bsp_pkg.sh: pushd: not found md5sum: ./bsp.tar.gz: No such file or directory ./tools/generate_bsp_pkg.sh: 37: ./tools/generate_bsp_pkg.sh: popd: not found ./tools/generate_bsp_pkg.sh: 39: ./tools/generate_bsp_pkg.sh: popd: not found Makefile:197: recipe for target 'linux-sys' failed make: *** [linux-sys] Error 127
解决措施:可以增加[#!/bin/bash]内容到脚本首行/opt/work/opensrc/mlu220_build/build/tools/generate_bsp_pkg.sh
#手动编辑增加[#!/bin/bash]内容到脚本首行 #vi /opt/work/opensrc/mlu220_build/build/tools/generate_bsp_pkg.sh #命令方式增加[#!/bin/bash]内容到脚本首行 sed -i '1i\#!/bin/bash' /opt/work/opensrc/mlu220_build/build/tools/generate_bsp_pkg.sh
修改脚本后,再次编译源码包即可。
#编译完整源码包 cd /opt/work/opensrc/mlu220_build/build/ make plat=edge #查看编译后的文件 /opt/work/opensrc/mlu220_build/build/out/
编译完成后在/opt/work/opensrc/mlu220_build/build/out/ ⽬录下⽣成如下⽂件:
out |-- bsp |-- bsp.tar.gz |-- bsp_md5.txt |-- cambricon |-- cambricon.tar.gz |-- cambricon_md5.txt `-- upgrade.sh
热门帖子
精华帖子