目录

MetaWare简介

安装与编译前准备

安装GCC7.3

增加你的芯片文件

编译ev_runtime

编译cnn_tools

编译examples


MetaWare简介

MetaWare是一个针对ARC架构处理器的一款开发框架,它类似于Zephyr、FreeRtos,但它不是一个操作系统,它是一个针对于ARC架构上的开发解决方案,通过它可以快速构建AI项目或音频项目以及其它嵌入式项目,让开发者们快速上手ARC架构开发,由Synopsys公司专为ARC架构开发的解决方案,Synopsys有许多基于ARC架构的芯片,为了快速建立芯片程序开发了一套解决方案。

安装与编译前准备

安装GCC7.3

如果想要编译MetaWare项目需要“linux_gcc7_default.tar.gz”(GCC7.3)

你可以在这里下载到它:linux_gcc7_default.tar.gz-C文档类资源-CSDN下载

首先你需要卸载当前环境的gcc

下载完成之后解压:

tar -xvf linux_gcc7_default.tar.gz

解压之后会在解压目录里生成一个“linux”的文件夹,这个文件夹中包含了所需的gcc可执行文件

然后我们设置需要设置一个环境变量:VG_GNU_PACKAGE,这个环境变量指向gcc7存在的目录

export VG_GNU_PACKAGE=~/linux

然后执行source设置环境

source $VG_GNU_PACKAGE/source_me_gcc730.sh

然后使用gcc --version可以查看一下是否有7.3版本

zhihao@zhihao-Z590-UD-AC:~/ARC$ gcc --version
gcc (GCC) 7.3.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

MetaWare安装

你可以在官网中进行申请于购买安装媒介:dw_arc_metaware_ev

MetaWare是收费方案,不是免费的。

下载后你会得到四个文件:

文件名

作用

mwev_S-2021_06_linux_x64_install.bin 安装程序
mwev_S-2021_06_linux_x64_install.001 安装文件
mwev_S-2021_06_linux_x64_install.002 安装文件
mwev_S-2021_06_linux_x64_install.003 安装文件

将这四个文件放入同一文件夹中,并在Linux中给予可执行权限:

chmod +x mwev_S-2021_06_linux_x64_install.bin

然后执行:

 ./mwev_S-2021_06_linux_x64_install.bin

可以看到如下界面,然后点击“Next”

选中“I accept the terms of the License Agreement”然后点击Next

然后输入你购买的密钥,最后一直“Next”就可以自动安装了

然后选择好安装路径,在点击“Next”

这一步选择你需要的TOOLS,不需要的可以去掉,根据需求来定,一般全部选中。

这一步点击“Install”即可开始自动化安装,点击之后就可以等待安装完毕了。

安装完成之后进入安装目录,执行setup.sh

cd ~/ARC
source setup.sh

正常情况下会出现如下输出:

Setup EV Runtime environment...
OCV_HOME is set to '/home/zhihao/ARC/opencv'
Setup EV CNN SDK environment...
EV_CNNSDK_HOME is set to '/home/zhihao/ARC/cnn_tools'
WARING: Synopsys models not found. EV_CNNMODELS_HOME is not defined.
Please clone latest release Synopsys Caffe models repository using Git LFS from:
https://github.com/foss-for-synopsys-dwc-arc-processors/synopsys-caffe-models
INFO: MWEV ASIP tools set-up success for Tofino.
INFO: MWEV ASIP tools set-up success for Toronto.
INFO: MWEV ASIP tools set-up success for Vancouver.
EV_CAFFE_HOME is set to '/home/zhihao/ARC/synopsys_caffe'
EVSS_RT_HOME is set to '/home/zhihao/ARC/ev_runtime/software'
Setup EV CNN SDK environment... DONE!
Checking tools in EV CNN SDK environment...
Found Python version is 3.6.5 : OK
Found cmake version is 3.18.2 : OK
Found make version is 4.2.1 : OK
Found ccac version is 2021.06 : OK
Found gcc version is 7.3.0 : OK
Found g++ version is 7.3.0 : OK
All checked tools are available and have proper versions
Setup EV CNN SDK environment... DONE!
==================================================

可能会出现这个问题:

Setup EV CNN SDK environment...
EV_CNNSDK_HOME is set to '/<install_dir>/cnn_tools'
ERROR: Synopsys Caffe models not found. EV_CNNMODELS_HOME is not defined.
Please clone latest release Synopsys Caffe models repository using Git LFS from:
https://github.com/foss-for-synopsys-dwc-arc-processors/synopsys-caffe-models

这个原因是因为EVSS_RT_HOME路径没有设置,你可以先设置这个环境变量指向安装路径里的“ev_runtime/software”就可以了

export EVSS_RT_HOME=~/ARC/ev_runtime/software

然后在重新执行一次“source setup.sh”即可,这个环境变量我下面会介绍一下它的作用是什么。

增加你的芯片文件

在MetaWare安装目录的“/ev_runtime/software/config/set”里可以看到不同的架构信息,这些芯片都是基于ARC架构,如EV系列是Synopsys公司开发的。

这些目录的作用就是描述芯片信息,如果你有新的框架,那么需要将它放入到这个目录中

zhihao@zhihao-Z590-UD-AC:~/ARC/ev_runtime/software/config/set$ ls
common                       EV64_full
EV61_2mpy                    EV64_full_cnn3520
EV61_base                    EV64_full_cnn880
EV61_base_cnn1760            EV64_full_dnn1760
EV61_base_cnn880             EV64_full_dnn3520
EV61_base_dnn1760            EV64_full_dnn3520_nhvdk
EV61_base_dnn3520            EV64_full_dnn880
EV61_base_dnn880             EV64_full_opencl
EV61_full                    EV71_base
EV61_full_cnn1760_demo       EV71_full
EV61_full_cnn880             EV71_full_dnn880_12b_demo
EV61_full_cnn880_demo        EV71_full_dnn880_12b_demo_nhvdk
EV61_full_cnn880_hsdkev_xio  EV71_full_dnn880_8b_demo
EV61_full_dnn1760            EV71_full_dnn880_8b_demo_nhvdk
EV61_full_dnn1760_demo       EV71_full_nhvdk
EV61_full_dnn3520_demo       EV71_vfpu
EV61_full_dnn880             EV72_base
EV61_full_dnn880_demo        EV72_full
EV61_full_dnn880_hsdkev      EV72_vfpu
EV61_full_dnn880_nhvdk       EV74_armlinux_vdk
EV61_vfpu                    EV74_full
EV62_base                    ev_native
EV62_base_dnn1760            host_aarch64-linux_vdk
EV62_base_dnn880             host_arclinux_hsdk
EV62_full                    host_native_vdk
EV62_full_cnn880             intel_mcf_ev71_dnn880
EV62_full_dnn1760            native
EV62_full_dnn1760_demo       vpx5_integer_base
EV62_full_dnn3520            vpx5_integer_full
EV62_full_dnn3520_hsevvdk    vpx5_max
EV62_full_dnn3520_nhvdk      vpx5_vfpu_base
EV62_full_dnn880             vpx5_vfpu_full
EV62_full_dnn880_demo        vpx5x2_integer_base
EV62_vfpu                    vpx5x2_vfpu_full
EV64_base                    vpx5x4_integer_base
EV64_base_dnn880             vpx5x4_vfpu_full

这些芯片描述目录一般由4个文件,1个文件夹组成

arc.met  arc.tcf  defs.cmake  evss  evss_config.mk

其中“arc.met”是最关键的文件,里面包含了芯片的内存信息,打开以后可以看到相关内存配置,如果是基于ARC架构的芯片,我们通常修改这个配置文件就可以了,将里面的内存地址信息修改成我们的架构就可以了。

_STACKSIZE = 0x0020_0000;__INTV_BASE               = 0x0000_0000;
__HOSTCOM_OFFSET          = 0x0000_1000;# __AUX_VOL_START and __AUX_VOL_SIZE need to be multiple of 256 MiB
__AUX_VOL_START           = 0x4000_0000; __AUX_VOL_SIZE           = 0xC000_0000;# Coherent aperture size needs to be power of 2, >= 4096
# Coherent aperture start address needs to be a multiple of its size
__STU_COH0_START          = 0x0000_0000; __STU_COH0_SIZE          = 0x4000_0000;
__STU_COH1_START          = 0x0000_0000; __STU_COH1_SIZE          = 0x0000_0000;
__HEAP_AREA_START         = 0x1000_0000; _HEAPSIZE                = 0x3000_0000;
__AUX_APP_DATA_AREA_START = 0x4000_0000; __AUX_APP_DATA_AREA_SIZE = 0x1000_0000;
__UNCACHED_AREA_START     = 0x5000_0000; __UNCACHED_AREA_SIZE     = 0x3000_0000;
__CNDC_AREA_START         = 0x0000_0000; __CNDC_AREA_SIZE         = 0x0000_0000;
__CSM_HEAP_START          = 0x0000_0000; __CSM_HEAP_SIZE          = 0x0000_0000;
#__CNN_DMA_COH_STARTMEMORY {DRAM    : ORIGIN = 0x0000_0000, LENGTH = 0x8000_0000CSM     : ORIGIN = 0xA000_0000, LENGTH = 0x0008_0000VCCM    : ORIGIN = 0x9000_0000, LENGTH = 0x0002_0000
}SECTIONS {.ivt __INTV_BASE SIZE(1024) (TEXT):{} > DRAM  # Interrupt table.ivh                        (TEXT):{} > DRAM  # Interrupt handlersshr_mem __HOSTCOM_OFFSET   (TEXT):{} > DRAM  # Host/device shared ctl data# Loadable sectionsGROUP: {.text?   ALIGN(64): { *('.text$crt*') }* (TEXT) ALIGN(64): {}* (LIT)  ALIGN(64): {}.rodata  ALIGN(64): {}.sdata?  ALIGN(64): {}.sbss?   ALIGN(64): {}* (DATA) ALIGN(64): {}} > DRAM

如果你想为你的项目加一些编译选项,可以在“arc.tcf”文件中增加

cmake_minimum_required(VERSION 3.16 FATAL_ERROR)
if(__DEFS_CMAKE__)return()
endif()
set(__DEFS_CMAKE__ TRUE)set(EVSS_VDSP 1)
set(EVSS_CFG_HAS_OCL 1)
add_definitions("-DMSS_CLKCTRL_CLOCK_RATIO_ENABLE")
set(EVCNN_VERSION 5)
set(VDSP_ONLY 1)
set(DEVSS_CFG_NUM_SLICE 0)
set(EVSS_CFG_NUM_CORE 1)

编译ev_runtime

首先我们需要编译“ev_runtime/software”项目,这个项目是为解决方案提供底层API,最终编译会生成一个.a的静态库

首先需要设置一个环境变量:

EVSS_RT_HOME:指向ev_runtime/software的完整路径

export EVSS_RT_HOME=~/ARC/ev_runtime/software

设置完成之后cd到ev_runtime/software

cd ev_runtime/software

然后使用make命令直接编译

make -j14 install EVSS_CFG=EV61_full_cnn880

这条命令的参数:

-j14:多线程编译,使用14个线程编译当前项目(根据你机器性能而定)

install:编译后安装到当前环境

EVSS_CFG:芯片描述目录,就是刚刚说到的“ev_runtime/software/config/set”里的描述目录,注意芯片描述目录只能放入到这个文件夹里,不能是绝对路径

编译cnn_tools

如果你的项目需要用到CNN人工智能方面的API,那么需要编译这个TOOLS

编译cnn_tools需要Synopsys Caffe的模型

你可以在: GitHub - foss-for-synopsys-dwc-arc-processors/synopsys-caffe-models: Caffe models for use with Synopsys DesignWare EV6x Processors 下载到它,可以使用git clone下来,文件比较大,因为包含了ssd等不同的模型集合。

下载下来以后你可以看到如下文件体系:

zhihao@zhihao-Z590-UD-AC:~/synopsys-caffe-models$ ls
archived_models  caffe_models  git_sparse_download.bat  git_sparse_download.sh  README.md

其中的“caffe_models”目录就是Synopsys Caffe的模型文件,打开这个文件夹可以看到许多不同的文件模型:

zhihao@zhihao-Z590-UD-AC:~/synopsys-caffe-models/caffe_models$ ls
alexnet          facedetect_v1          icnet                inception_v2   mtcnn_v1    resnet_152    retinanet      srgan                  yolo_tiny
DAN              facedetect_v2          imagenet_mean        inception_v3   openpose    resnet_50     segnet         ssd                    yolo_v1
deeplab          face_net               images               inception_v4   pspnet      resnet50_ssd  shufflenet_v1  ssd_mobilenet_v2_coco  yolo_v2_coco
denoiser         faster_rcnn_resnet101  inception_resnet_v1  lenet          pvanet      ResNeXt_101   shufflenet_v2  unet                   yolo_v2_tiny
densenet         fcn                    inception_resnet_v2  mobilenet      README.md   ResNeXt_152   squeeze        vdsr                   yolo_v2_voc
evgen_util.bash  googlenet              inception_v1         mobilenet_ssd  resnet_101  ResNeXt_50    srcnn          vgg16                  yolo_v3

其中可以看到facedetect人脸,以及yolo物体识别方面的模型,这些模型文件是转化为Synopsys Caffe模型格式后的模型文件。

我们将这个“caffe_models”文件夹copy到cnn_tools文件夹中

首先在cnn_tools目录下创建一个"cnn_models"文件夹

mkdir cnn_models

然后将caffe_models文件夹copy到刚刚创建的cnn_models文件夹中

cp -r ~/synopsys-caffe-models/caffe_models ./cnn_models

然后设置两个环境变量:

EV_CNNMODELS_HOME:这个环境变量指向模型文件存在的文件夹,在编译cnn时,cmake脚本会自动读取这个变量获取models的地址

EV_CNNSDK_HOME:指向cnn_tools的完整路径

export EV_CNNMODELS_HOME=~/ARC/cnn_tools/cnn_models
export EV_CNNSDK_HOME==~/ARC/cnn_tools

设置完成之后cd进入到cnn_tools的目录中

cd cnn_tools

然后输入如下命令:

make -j14 install EVSS_CFG=EV61_full_cnn880

编译examples

我们可以编译一个cnn_tools里的一个演示项目

首先cd到examples目录中

cd cnn_tools/

然后ls可以查看下面有多少演示项目

zhihao@zhihao-Z590-UD-AC:~/ARC/cnn_tools/examples$ ls
classification  common  demos  detection  face_recognition  getting_started  image_processing  Makefile  pose_estimation  README.md  scene_segmentation

我这里编译getting_started里的项目

这里编译FaceDetect-V1项目,是一个面部识别的项目

zhihao@zhihao-Z590-UD-AC:~/ARC/cnn_tools/examples/getting_started$ ls
FaceDetect-V1  FaceDetect-V2  LeNet

cd进入这个目录

cd FaceDetect-V1

然后输入如下命令

make build EVSS_CFG=intel_mcf_ev71_dnn880 CNN_ABSTRACTION=host_fixed

编译完成之后会在当前目录下生成build目录,进去之后就可以看到生成的out文件:

CMakeCache.txt  cmake_install.cmake  cnn_src                evgencnn           Makefile  run_arc.args
CMakeFiles      cnn_obj              compile_commands.json  facedetect_v1.out  map.txt   run_arguments.mk

facedetect_v1.out就是可以烧录到芯片里去的文件

如果你想重新编译库的话,可以加上“EVSS_PROFILE=small”就可以快速编译,不需要完全重新编译,这个情况只在没有特别大的改动的情况下。

如果想要编译Debug版本的话可以加上“EVSS_DBG=1

如果不想每次编译都重新设置环境变量,可以将你的环境变量添加到bashrc文件中:

export LM_LICENSE_FILE=密钥
export SNPSLMD_LICENSE_FILE=密钥
export VG_GNU_PACKAGE=~/linux
source $VG_GNU_PACKAGE/source_me_gcc730.sh
source ~/ARC/setup.sh
export EV_CNNMODELS_HOME=~/ARC/cnn_tools/cnn_models
export EVSS_RT_HOME=~/ARC/ev_runtime/software
export EV_CNNSDK_HOME=~/ARC/cnn_tools

Synopsys MetaWare for Linux 安装与编译指南相关推荐

  1. Oracle Grid Control 11g for linux安装和配置指南

    2019独角兽企业重金招聘Python工程师标准>>> Oracle Grid Control 11g for linux安装和配置指南 原创 candon123 2010-07-1 ...

  2. linux 安装库 编译提示-lcrypto 无法链接,缺少 crypto 库

    linux 安装库 缺少 crypto 库 编译提示-lcrypto 无法链接,缺少 crypto 库 方法一 ------------------------------------- crypto ...

  3. Oracle Grid Control 10.2.0.5 for Linux 安装和配置指南

    一.概述: Grid Control的组件包括Management Agent, Management Service (OMS), Management Repository. 系统架构如下: 10 ...

  4. linux安装perl编译环境,CentOS7 安装 perl 环境

    1. 下载安装包 [root@node1 ~]# wget http://search.cpan.org/CPAN/authors/id/S/SH/SHAY/perl-5.26.1.tar.gz -- ...

  5. v8 编译 linux,安装与编译 Javascript V8 Engine

    安装 gclient gclient 是一个可以同时支援 SVN 与 GIT 的工具,因为编辑 V8 Engine 时,必须用到这个小工具,所以我们得先安装它,安装的方式如下: 安装好后,输入 gcl ...

  6. kali-linux中文指南,Kali Linux安装及中文指南

    Java的异步HttpClient 上篇提到了高性能处理的关键是异步,而我们当中许多人依旧在使用同步模式的HttpClient访问第三方Web资源,我认为原因之一是:异步的HttpClient诞生较晚 ...

  7. Fedora/RHEL/openSUSE等Linux安装vivaldi——vivaldi浏览器

    Fedora/RHEL/openSUSE等Linux安装vivaldi浏览器指南. 个人认为vivaldi浏览器比较好用,也比较漂亮,适合小清新们使用,功能比较强大. 1.下载 vivaldi.rep ...

  8. Data Masking安装和使用指南

    Data Masking安装和使用指南 1. Data masking 简介 软件开发的最后阶段,是需要尽量真实的数据来作为基础测试软件的一系列功能.尤其是企业信息化系统,ERP.BI.EPM等这些大 ...

  9. linux编译准备,Linux 下编译指南

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 首先,我们需要获取最新的源码. 使用如下命令即可: git clone -b master --depth=1 https://github.com/Cl ...

最新文章

  1. Redis Scan命令
  2. 自主云服务器处理器_云服务器哪家的CPU最便宜且好用
  3. ICCV2017 论文解读:基于图像检索的行人重识别 | PaperDaily #13
  4. 深入React事件系统(React点击空白部分隐藏弹出层;React阻止事件冒泡失效)
  5. 厉害了,Spring中bean的12种定义方法!
  6. shell类型、添加PATH环境变量、.bashrc、.profile、/etc/profile、/etc/environment
  7. 同心抗疫,IBM中国有限公司致客户的一封信
  8. Linux中修改PATH环境变量(只在当前窗口下生效)
  9. jsp中为什么有时out.write不能写,为什么?
  10. response.contenttype
  11. setuna软件安装_401.5KB的电脑窗口截取软件,是否超实用?你说了算
  12. Matlab R2010b 安装使用教程 【详细】
  13. 消息: Automation 服务器不能创建对象
  14. iOS开发之获取实时气压、相对高度
  15. 全球公开的DEM数据产品
  16. 区块链经济学:制度加密经济学入门指南
  17. 百度“好看”与字节“西瓜”之间,差了几个B站?
  18. 小巫的Android视频教学出来啦,欢迎大家关注和指正!!!
  19. C#之WinForms入门
  20. HttpWatch功能详细介绍

热门文章

  1. springboot传入json和文件_SpringBoot中文参考指南(2.1.6)29.1.13、CORS 支持
  2. 进阶 2 日期时间类
  3. 世界上最有能量的语言,一定要经常说!
  4. 上岸后如何选择一个好的导师
  5. spring学习--基于注解方式创建对象AOP
  6. Java中找出s字符串的回文_给定一个字符串 s,找到 s 中最长的回文子串。
  7. 项目管理文档_项目管理和团队协同的轻量级工具——PMS,来了
  8. redis php高级使用_项目中应用Redis+Php的场景
  9. python消费kafka逻辑处理导致cpu升高_Kafka 消费迟滞监控工具 Burrow
  10. 学习 尚硅谷_宋红康_第2章_Java基本语法(下):程序流程控制超详细课件