(一)海思3519av100开发:linux环境搭建_hi3519av100环境-程序员宅基地

技术标签: 海思  嵌入式  

海思文档+nfsAxe+SecureCRT 8.1破解版资源网盘链接提取码:pzxg

1.Linux环境搭建

参考文档: ReleaseDoc\zh\01.software\board\SVP\HiSVP 开发指南.pdf
概念:NNIE(Neural Network Inference Engine)
其他概念和开发流程等等都省略,只为安装好对应的环境,和记录自己踩过的坑。

1.1 环境介绍

1.windows10系统
2.虚拟机下的Ubuntu18.04
3.gcc4.8.5
关于gcc的版本要多注意下,因为我最开始使用的是默认的版本,7.x的,在运行nnie_mapper_12时遇到了未定义符号问题,后续会讲到。
ubuntu18.04默认的gcc版本是7.5.0的,也可以用gcc --version查看
建议直接跳到1.5.1安装gcc4.8.5

1.2.安装海思交叉编译器

1.2.1 准备文件

先将交叉编译器文件arm-himix200-linux.tgz拷贝到linux(本例使用ubuntu18.04),移动到某个目录下。

1.2.2 解压压缩包

tar zxvf arm-himix200-linux.tgz

1.2.3 安装

当前目录解压出来一个文件夹arm-himix200-linux,进入之后看到readme.txt提示如何安装
切换超级用户执行

source ./arm-himix200-linux.install  /opt/hisi-linux-x86-arm

安装到 /opt/hisi-linux-x86-arm目录下

1.2.4 环境变量生效

(防止每次登录都需要重新输入,可以将该命令放入 ~/.bashrc文件末尾,登录后自动执行)

source /etc/profile

1.2.5 验证

输入arm后按table键验证环境变量是否生效
在这里插入图片描述

1.2.下载和安装protobuf

1.2.1 概念:protobuf(Google提供的一种具有高效的协议数据交换格式工具库)

类比xml协议、json格式文本等。

1.2.2 下载源码

地址: https://github.com/google/protobuf/releases/tag/v3.5.1
下载压缩包名 protobuf-all-3.5.1.tar.gz

1.2.3 编译和安装

将压缩包移动到指定目录后

解压:tar xvzf protobuf-all-3.5.1.tar.gz

此时会解压出来一个目录protobuf-3.5.1

进入目录:cd protobuf-3.5.1

创建构建目录

mkdir build

进入构建目录(后续命令全在这个目录下进行)

cd build

配置:打开动态库和目标路径(/home/he/protobuf/install 根据个人实际路径进行调整)没有装cmake的 sudo apt-get install cmake即可

cmake -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_BUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/home/he/protobuf/install/ ../cmake

编译

make -j4

安装到目标路径(/home/he/protobuf/install)

make install

设置环境变量

vim ~/.bashrc

文尾添加(添加安装的目标路径):

export PATH=/home/he/protobuf/install/bin:$PATH
export LD_LIBRARY_PATH=/home/he/protobuf/install/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/home/he/protobuf/install/lib/pkgconfig

使环境变量生效

source ~/.bashrc

测试:

protoc --version

在这里插入图片描述

1.3 下载和安装opencv

1.3.1 概念

开源的跨平台计算机视觉和机器学习软件库

1.3.2 下载源码

版本选择3.4.0
具体参考我的另一个博客(评论区也有现成的网盘链接):使用vs2019编译和调试开源项目opencv3.4.0版本+opencv3.4.0源码网盘链接
下载 opencv-3.4.0.zip

1.3.3 安装前环境准备

使用脚本安装如下工具install_opencv.sh

#!/bin/sh
# cmake 假如在安装protobuf时安装了cmake可以注释掉下面这行
sudo apt-get install cmake -y
# GTK+2.0
sudo apt-get install libgtk2.0-dev -y
# libav
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev -y
# pkgconf
sudo apt install pkgconf -y

1.3.4 编译和安装

拷贝opencv-3.4.0.zip至指定目录后解压得到opencv-3.4.0 文件夹

unzip opencv_3.4.0.zip

进入opencv-3.4.0 文件夹

cd opencv-3.4.0

创建build目录并cd进入(后续命令全在这个目录下进行)

mkdir build
cd build

cmake配置(目标路径/home/he/opencv/install/看个人实际进行调整)

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/home/he/opencv/install/ -D WITH_GPHOTO2=OFF –D WITH_GTK=OFF -D WITH_CUDA=OFF -D WITH_FFMPEG=OFF -D WITH_LAPACK=OFF ../

编译

make -j4

安装

make install

设置环境变量

vim ~/.bashrc

文末添加

#opencv3.4.0
export PATH=/home/he/opencv/install/bin:$PATH
export LD_LIBRARY_PATH=/home/he/opencv/install/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/home/he/opencv/install/lib/pkgconfig

环境变量生效

source ~/.bashrc

测试是否安装成功:返回上级目录(opencv解压后的目录)然后进入sample/cpp目录
编译测试例子(检测是否可以正常链接动态库)

gcc `pkg-config --cflags opencv` -o facedetect facedetect.cpp `pkg-config --libs opencv` -lstdc++

测试

./facedetect ../data/lena.jpg

1.4 mapper 本体安装

将 HiSVP_PC_Vx.y.z.w \tool\nnie\linux\mapper\文件夹中的所有文件拷贝到某路径(我这里是/home/he/mapper/bin)
在这里插入图片描述
设置环境变量vim ~/.bashrc
文末添加

#mapper
export PATH=/home/he/mapper/bin/:$PATH

环境变量生效

source ~/.bashrc

在终端输入nnie_map后按tab查看是否出现/home/he/mapper/bin目录下可执行文件的提示或全程

拷贝代码HiSVP_PC_V1.2.1.0\software\到某目录下(本例在/home/he目录)
成功后进入/software/data目录开始执行
nnie_mapper_12 classification/alexnet/alexnet_no_group_func.cfg
在这里插入图片描述

1.5 错误提示

1.5.1运行mapper例子未定义符号(HiSVP_PC_V1.2.1.0\software\data\classification\alexnet)

nnie_mapper_12: symbol lookup error: nnie_mapper_12: undefined symbol: _ZN6google8protobuf8internal26fixed_address_empty_stringE
这是由于gcc版本过高,需要用到gcc4.8.5版本

先安装gcc4.8

sudo apt install gcc-4.8 gcc-4.8-multilib g++-4.8 g++-4.8-multilib

update-alternatives是ubuntu系统中专门维护系统命令链接符的工具,通过它可以很方便的设置系统默认使用哪个命令、哪个软件版本。
其中40 70是优先级数值可以自己设定,
–slave能保证gcc和g++保持相同的版本

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 100 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 40 --slave /usr/bin/g++ g++ /usr/bin/g++-7
sudo update-alternatives --config gcc

选择要使用的版本,然后输入gcc --version查看版本

删除protobuf的build目录
重新编译protobuf
cmake -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_BUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/home/he/protobuflib/ …/cmake
make -j4
make install
检查环境变量 protoc --version

1.5.2 运行mapper例子文件错误

出现如下错误提示(路径不正确)

nnie_mapper_12 ./data/classification/alexnet/alexnet_no_group_func.cfg 
Mapper Version 1.2.1.0_B020 (NNIE_1.2) 19010713221682

**********************************************************
ERROR: file: fileCheck  line: 1214
./../data/classification/alexnet/model/bvlc_alexnet_no_group_deploy.prototxt is not a file!



**********************************************************
ERROR: file: processCfgParseLow  line: 198
ERROR: RUN FAILURE in line 198. Return = 65563



**********************************************************
ERROR: file: dealLine  line: 703
ERROR: RUN FAILURE in line 703. Return = 65563



**********************************************************
ERROR: file: main  line: 67
ERROR: RUN FAILURE in line 67. Return = 65563

解决方法:打开/software/data/classification/alexnet/alexnet_no_group_func.cfg文件看到路径是
./../data

表明是在data目录上一级目录执行的
解决方法就是修改这个路径,或者直接去改路径的上一级目录执行
在这里插入图片描述

1.6 Caffe1.0安装

caffe安装官网文档
因为我的版本是18.04,所以一行命令搞定 sudo apt-get install caffe-cpu
手动编译参考我的另外一篇博客ubuntu18.04编译使用 caffe cpu 使用工具示例 训练示例
其他版本参考
https://blog.csdn.net/qq_20965753/article/details/77033300
https://blog.csdn.net/weixin_43826475/article/details/97374680

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/hhl_work/article/details/118680007

智能推荐

使用nginx解决浏览器跨域问题_nginx不停的xhr-程序员宅基地

文章浏览阅读1k次。通过使用ajax方法跨域请求是浏览器所不允许的,浏览器出于安全考虑是禁止的。警告信息如下:不过jQuery对跨域问题也有解决方案,使用jsonp的方式解决,方法如下:$.ajax({ async:false, url: 'http://www.mysite.com/demo.do', // 跨域URL ty..._nginx不停的xhr

在 Oracle 中配置 extproc 以访问 ST_Geometry-程序员宅基地

文章浏览阅读2k次。关于在 Oracle 中配置 extproc 以访问 ST_Geometry,也就是我们所说的 使用空间SQL 的方法,官方文档链接如下。http://desktop.arcgis.com/zh-cn/arcmap/latest/manage-data/gdbs-in-oracle/configure-oracle-extproc.htm其实简单总结一下,主要就分为以下几个步骤。..._extproc

Linux C++ gbk转为utf-8_linux c++ gbk->utf8-程序员宅基地

文章浏览阅读1.5w次。linux下没有上面的两个函数,需要使用函数 mbstowcs和wcstombsmbstowcs将多字节编码转换为宽字节编码wcstombs将宽字节编码转换为多字节编码这两个函数,转换过程中受到系统编码类型的影响,需要通过设置来设定转换前和转换后的编码类型。通过函数setlocale进行系统编码的设置。linux下输入命名locale -a查看系统支持的编码_linux c++ gbk->utf8

IMP-00009: 导出文件异常结束-程序员宅基地

文章浏览阅读750次。今天准备从生产库向测试库进行数据导入,结果在imp导入的时候遇到“ IMP-00009:导出文件异常结束” 错误,google一下,发现可能有如下原因导致imp的数据太大,没有写buffer和commit两个数据库字符集不同从低版本exp的dmp文件,向高版本imp导出的dmp文件出错传输dmp文件时,文件损坏解决办法:imp时指定..._imp-00009导出文件异常结束

python程序员需要深入掌握的技能_Python用数据说明程序员需要掌握的技能-程序员宅基地

文章浏览阅读143次。当下是一个大数据的时代,各个行业都离不开数据的支持。因此,网络爬虫就应运而生。网络爬虫当下最为火热的是Python,Python开发爬虫相对简单,而且功能库相当完善,力压众多开发语言。本次教程我们爬取前程无忧的招聘信息来分析Python程序员需要掌握那些编程技术。首先在谷歌浏览器打开前程无忧的首页,按F12打开浏览器的开发者工具。浏览器开发者工具是用于捕捉网站的请求信息,通过分析请求信息可以了解请..._初级python程序员能力要求

Spring @Service生成bean名称的规则(当类的名字是以两个或以上的大写字母开头的话,bean的名字会与类名保持一致)_@service beanname-程序员宅基地

文章浏览阅读7.6k次,点赞2次,收藏6次。@Service标注的bean,类名:ABDemoService查看源码后发现,原来是经过一个特殊处理:当类的名字是以两个或以上的大写字母开头的话,bean的名字会与类名保持一致public class AnnotationBeanNameGenerator implements BeanNameGenerator { private static final String C..._@service beanname

随便推点

二叉树的各种创建方法_二叉树的建立-程序员宅基地

文章浏览阅读6.9w次,点赞73次,收藏463次。1.前序创建#include<stdio.h>#include<string.h>#include<stdlib.h>#include<malloc.h>#include<iostream>#include<stack>#include<queue>using namespace std;typed_二叉树的建立

解决asp.net导出excel时中文文件名乱码_asp.net utf8 导出中文字符乱码-程序员宅基地

文章浏览阅读7.1k次。在Asp.net上使用Excel导出功能,如果文件名出现中文,便会以乱码视之。 解决方法: fileName = HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8);_asp.net utf8 导出中文字符乱码

笔记-编译原理-实验一-词法分析器设计_对pl/0作以下修改扩充。增加单词-程序员宅基地

文章浏览阅读2.1k次,点赞4次,收藏23次。第一次实验 词法分析实验报告设计思想词法分析的主要任务是根据文法的词汇表以及对应约定的编码进行一定的识别,找出文件中所有的合法的单词,并给出一定的信息作为最后的结果,用于后续语法分析程序的使用;本实验针对 PL/0 语言 的文法、词汇表编写一个词法分析程序,对于每个单词根据词汇表输出: (单词种类, 单词的值) 二元对。词汇表:种别编码单词符号助记符0beginb..._对pl/0作以下修改扩充。增加单词

android adb shell 权限,android adb shell权限被拒绝-程序员宅基地

文章浏览阅读773次。我在使用adb.exe时遇到了麻烦.我想使用与bash相同的adb.exe shell提示符,所以我决定更改默认的bash二进制文件(当然二进制文件是交叉编译的,一切都很完美)更改bash二进制文件遵循以下顺序> adb remount> adb push bash / system / bin /> adb shell> cd / system / bin> chm..._adb shell mv 权限

投影仪-相机标定_相机-投影仪标定-程序员宅基地

文章浏览阅读6.8k次,点赞12次,收藏125次。1. 单目相机标定引言相机标定已经研究多年,标定的算法可以分为基于摄影测量的标定和自标定。其中,应用最为广泛的还是张正友标定法。这是一种简单灵活、高鲁棒性、低成本的相机标定算法。仅需要一台相机和一块平面标定板构建相机标定系统,在标定过程中,相机拍摄多个角度下(至少两个角度,推荐10~20个角度)的标定板图像(相机和标定板都可以移动),即可对相机的内外参数进行标定。下面介绍张氏标定法(以下也这么称呼)的原理。原理相机模型和单应矩阵相机标定,就是对相机的内外参数进行计算的过程,从而得到物体到图像的投影_相机-投影仪标定

Wayland架构、渲染、硬件支持-程序员宅基地

文章浏览阅读2.2k次。文章目录Wayland 架构Wayland 渲染Wayland的 硬件支持简 述: 翻译一篇关于和 wayland 有关的技术文章, 其英文标题为Wayland Architecture .Wayland 架构若是想要更好的理解 Wayland 架构及其与 X (X11 or X Window System) 结构;一种很好的方法是将事件从输入设备就开始跟踪, 查看期间所有的屏幕上出现的变化。这就是我们现在对 X 的理解。 内核是从一个输入设备中获取一个事件,并通过 evdev 输入_wayland

推荐文章

热门文章

相关标签