BM1684X开发环境搭建--SOC mode

news2024/9/28 10:50:23

环境配置-SOC模式----------------------------------------

1:对于SoC模式,模型转换也需要在docker开发容器中完成;C/C++程序建议在x86主机上使用交叉编译工具链编译生成可执行文件后,再拷贝到SoC目标平台运行;

2:对于SoC平台,内部已经集成了相应的libsophon、sophon-opencv和sophon-ffmpeg运行库包,位于/opt/sophon/下。只需设置环境变量即可;

# 设置环境变量

export PYTHONPATH=$PYTHONPATH:/opt/sophon/sophon-opencv_<x.y.z>/opencv-python

安装docker---------------------------------------------------------------------------------------------

sudo apt-get install docker.io

# docker命令免root权限执行

# 创建docker用户组,若已有docker组会报错,没关系可忽略

sudo groupadd docker

# 将当前用户加入docker组

sudo gpasswd -a ${USER} docker

# 重启docker服务

sudo service docker restart

# 切换当前会话到新group或重新登录重启X会话

newgrp docker​

tpu-Mlir环境搭建--BM1684X请使用MLIR工具链!!!!---------------------

1:进入docker

docker run --privileged --name tpu-mlir -v $PWD:/workspace -it sophgo/tpuc_dev:v2.2

原因:该镜像已创建,要么重新创建一个新进程,要么杀死老进程;

解决办法如下:

查看当前创建的docker

2:tar zxf tpu-mlir_v0.9.9-g29bbf954-20230327.tar.gz

3:source envsetup.sh

libsophen环境搭建------------------------------------------------

获取当前pc的架构

# 安装依赖库,只需要执行一次

sudo apt install dkms libncurses5

sudo dpkg -i sophon-*.deb

# 在终端执行如下命令,或者log out再log in当前用户后即可使用bm-smi等命令

source /etc/profile

使用手册

->LIBSOPHON使用手册 — LIBSOPHON-GUIDE v23.03.01 文档

sophon-MW安装----------------------------------------------------

sudo dpkg -i sophon-mw-sophon-ffmpeg_0.6.0_amd64.deb sophon-mw-sophon-ffmpeg-dev_0.6.0_amd64.deb

sudo dpkg -i sophon-mw-sophon-opencv_0.6.0_amd64.deb sophon-mw-sophon-opencv_0.6.0_amd64.deb

使用手册

-->3. 安装sophon-mw — Multimedia Manual v23.03.01 文档

交叉编译环境搭建:---------------------------------------------------------

首先安装交叉编译工具:sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu

其次解压sophon-img包里的libsophon_soc_<x.y.z>_aarch64.tar.gz,将lib和include的所有内容拷贝到soc-sdk文件夹

cd sophon-img_<date>_<hash>

# 创建依赖文件的根目录

mkdir -p soc-sdk

# 解压sophon-img release包里的libsophon_soc_${x.y.z}_aarch64.tar.gz,其中x.y.z为版本号

tar -zxf libsophon_soc_<x.y.z>_aarch64.tar.gz

# 将相关的库目录和头文件目录拷贝到依赖文件根目录下

cp -rf libsophon_soc_<x.y.z>_aarch64/opt/sophon/libsophon-<x.y.z>/lib ./soc-sdk

cp -rf libsophon_soc_<x.y.z>_aarch64/opt/sophon/libsophon-<x.y.z>/include ./soc-sdk

接着解压sophon-mw包里的sophon-mw-soc_<x.y.z>_aarch64.tar.gz,将sophon-mw下lib和include的所有内容拷贝到soc-sdk文件夹

cd sophon-mw_<date>_<hash>

# 解压sophon-mw包里的sophon-mw-soc_<x.y.z>_aarch64.tar.gz,其中x.y.z为版本号

tar -zxf sophon-mw-soc_<x.y.z>_aarch64.tar.gz

# 将ffmpeg和opencv的库目录和头文件目录拷贝到依赖文件根目录下

cp -rf sophon-mw-soc_<x.y.z>_aarch64/opt/sophon/sophon-ffmpeg_<x.y.z>/lib ${soc-sdk}

cp -rf sophon-mw-soc_<x.y.z>_aarch64/opt/sophon/sophon-ffmpeg_<x.y.z>/include ${soc-sdk}

cp -rf sophon-mw-soc_<x.y.z>_aarch64/opt/sophon/sophon-opencv_<x.y.z>/lib ${soc-sdk}

cp -rf sophon-mw-soc_<x.y.z>_aarch64/opt/sophon/sophon-opencv_<x.y.z>/include ${soc-sdk}

验证

which aarch64-linux-gnu-g++

终端输出内容

/usr/bin/aarch64-linux-gnu-g++

安装sophon_sail(即可在板端使用python进行bmodel模型推理)--------------------------------------

参考-->2. 编译安装指南 — sophon-sail v23.03.01 文档

1:首先解压sophon-sail_3.4.0.tar.gz

2:进入到解压出来的sophon-sail

3:创建一个build目录并进入

mkdir build && cd build

4:执行以下命令

 cmake -DBUILD_TYPE=soc  \

    -DCMAKE_TOOLCHAIN_FILE=../cmake/BM168x_SOC/ToolChain_aarch64_linux.cmake \

    -DPYTHON_EXECUTABLE=python_3.8.2/bin/python3 \

    -DCUSTOM_PY_LIBDIR=python_3.8.2/lib \

    -DLIBSOPHON_BASIC_PATH=libsophon_0.4.6_aarch64/opt/sophon/libsophon-0.4.6 \

    -DFFMPEG_BASIC_PATH=sophon-mw-soc_0.6.0_aarch64/opt/sophon/sophon-ffmpeg_0.6.0 \

-DOPENCV_BASIC_PATH=sophon-mw-soc_0.6.0_aarch64/opt/sophon/sophon-opencv_0.6.0 ..

这里需要注意一下红色的路径需要根据自身情况进行更改,这里的python包建议直接下载官方编译好的SOPHGO(python版本需与板端一致,可以使用python --version进行查看)

5:执行make即可

6:make install

 

 

7:此时会在build同级目录下生成一个build_soc文件夹,将该目录下的sophon-sail文件推至板端的/opt/sophon目录下

scp -r sophon-sail/ linaro@10.12.13.105:/opt/sophon

8:将sail进行打包,

cd sophon-sail_20230327_085400/sophon-sail/python/soc

chmod a+x  sophon_soc_whl.sh

./sophon_soc_whl.sh

可能会遇到如下问题,sudo pip3 install wheel即可

9:将生成的sophon_arm-3.4.0-py3-none-any.whl拷贝到目标SOC上,然后在板端执行如下安装命令

pip3 install sophon_arm-3.4.0-py3-none-any.whl --force-reinstall

10:检测是否安装成功,不报错即成功

至此sophon-sail安装成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/586627.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

macOS运行软件提示:“嘉立创EDA.app” 已损坏,无法打开。你应该将它移到废纸篓。

一、问题描述 macOS运行软件提示&#xff1a;“嘉立创EDA.app” 已损坏&#xff0c;无法打开。你应该将它移到废纸篓。 二、问题分析 macOS安全性问题导致的。 三、解决方案 1、在系统设置、隐私与安全性、安全性、允许从以下位置下载的应用程序中&#xff0c;选择“任何来…

OpenLDAP 搭建及简单使用

文章目录 1、前言LDAPOpenLDAP 2、安装&#xff08;通过 Docker 部署&#xff09;环境说明镜像说明部署客户端&验证连接示例 总结 1、前言 LDAP 轻型目录访问协议&#xff08;英文&#xff1a;Lightweight Directory Access Protocol&#xff0c;缩写&#xff1a;LDAP&am…

java.awt.datatransfer.Clipboard剪切板复制粘贴String

java.awt.datatransfer.Clipboard剪切板复制粘贴String java.awt.Toolkit 是一个可用来获取操作剪切板的工具 Toolkit toolkit Toolkit.getDefaultToolkit(); 获得 tookit Clipboard systemClipboard toolkit.getSystemClipboard(); 获得操作系统级的剪切板 Toolkit toolk…

算法基础学习笔记——⑬高斯消元\组合计数\容斥原理

✨博主&#xff1a;命运之光 ✨专栏&#xff1a;算法基础学习 目录 ✨高斯消元 ✨组合计数 &#x1f353;通过预处理逆元的方式求组合数: &#x1f353;Lucas定理: &#x1f353;分解质因数法求组合数&#xff1a; 前言&#xff1a;算法学习笔记记录日常分享&#xff0c;需…

【小可爱专属教程】服务器配置环境

【小可爱专属教程】服务器配置环境 安装CUDA和CUDNN安装CUDA安装CUDNN 安装Anaconda3安装Pytorch 安装CUDA和CUDNN 安装CUDA 文件已经上传至百度网盘 链接&#xff1a;https://pan.baidu.com/s/1LKzZXtSr1kXOnlfbO0cmEw?pwdgfbb 提取码&#xff1a;gfbbsudo sh cuda_11.3.…

【技术解决方案】(多级)缓存架构最佳实践

凌晨三点半了&#xff0c;太困了&#xff0c;还差一些&#xff0c;明天补上… 因为自己最近做的项目涉及到了缓存&#xff0c;所以水一篇缓存相关的文章&#xff0c;供大家作为参考&#xff0c;若发现文章有纰漏&#xff0c;希望大家多指正。 缓存涉及到的范围颇广&#xff0c…

spring boot整合Swagger2(2.9.2版本)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

计算机组成原理-中央处理器-指令流水线和多处理器

目录 一、指令流水线基本概念 1.1影响流水线的因素 1.1.1结构相关(资源冲突) 1.1.2 数据相关(数据冲突) 1.1.3 控制相关(控制冲突) 1. 2 流水线分类 二、流水线的多发技术 2.1 超标量技术 2.2 超流水技术 2.3 超长指令字 三、五段式指令流水线 四、多处理器系统基本概念…

I.MX RT1170加密启动详解(1):Encrypted Boot image组成

使用RT1170芯片构建的所有平台一般都是高端场合&#xff0c;我们需要考虑软件的安全需求。该芯片集成了一系列安全功能。这些特性中的大多数提供针对特定类型攻击的保护&#xff0c;并且可以根据所需的保护程度配置为不同的级别。这些特性可以协同工作&#xff0c;也可以独立工…

chatgpt赋能python:Python中的区间:什么是区间(Interval),如何使用区间

Python 中的区间&#xff1a;什么是 区间&#xff08;Interval&#xff09;&#xff0c;如何使用区间 在Python中&#xff0c;区间&#xff08;Interval&#xff09;是一个广泛使用的数据结构&#xff0c;用于表示一段连续的数据范围。使用区间可以更方便地处理各种数据类型&a…

本地搭建CFimagehost私人图床【公网远程访问】

文章目录 1.前言2. CFImagehost网站搭建2.1 CFImagehost下载和安装2.2 CFImagehost网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar临时数据隧道3.2 Cpolar稳定隧道&#xff08;云端设置&#xff09;3.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 4.公网访问测…

代码随想录算法训练营第四十一天 | 力扣 343. 整数拆分, 96.不同的二叉搜索树

343. 整数拆分 题目 343. 整数拆分 给定一个正整数 n &#xff0c;将其拆分为 k 个 正整数 的和&#xff08; k > 2 &#xff09;&#xff0c;并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 解析 1.确定dp数组&#xff08;dp table&#xff09;以及下标的…

史上最详细的使用Claude和接入Claude-api教程

是什么&#xff08;What&#xff09; Claude 是最近新开放的一款 AI 聊天机器人&#xff0c;是世界上最大的语言模型之一&#xff0c;比之前的一些模型如 GPT-3 要强大得多&#xff0c;因此 Claude 被认为是 ChatGPT 最有力的竞争对手。Claude 的研发公司是专注人工智能安全和研…

Java制作520表白代码——爱一个人需要理由吗?

✨博主&#xff1a;命运之光 ✨专栏&#xff1a;Java经典程序设计 520表白日&#xff0c;每个人都期待着浪漫的表白&#xff0c;而作为一名热爱编程的程序员&#xff0c;我决定用程序员的方式来向你表达我的爱意。 在2023年5月20日这个特殊的日子里&#xff0c;我要用一段特别的…

BM1684X-onnx模型转化为bmodel

1&#xff1a;在tpu-mlir目录下进入docker docker run --privileged --name tpu-mlir -v $PWD:/workspace -it sophgo/tpuc_dev:v2.2 原因&#xff1a;该镜像已创建&#xff0c;要么重新创建一个新进程&#xff0c;要么杀死老进程&#xff1b; 解决办法如下&#xff1a; 2:接着…

夜深人静学32系列17——OLED

夜深人静学32系列17——OLED OLED简介接口定义OLED驱动原理驱动函数OLED.COLED.HCubeMX配置 实战部分效果展示驱动代码 OLED简介 LED&#xff0c;即有机发光二极管&#xff08;Organic Light-Emitting Diode&#xff09;&#xff0c;又称为有机激光显示&#xff08;Organic El…

基于YOLOV5的道路损伤(GRDDC‘2020)检测

1. GRDDC2020 数据集介绍 GRDDC2020 数据集是从印度、日本和捷克收集的道路图像。包括三个部分&#xff1a;Train, Test1, Test2。训练集包括带有 PASCAL VOC 格式 XML 文件标注的道路图像。 缺陷类型&#xff1a;D00、D01、D11、D10、D20、D40、D43、D44、D50、D0w0…

Otsu阈值法原理及实现

文章目录 Otsu算法简介Otsu 算法的逻辑源码实现 欢迎访问个人网络日志&#x1f339;&#x1f339;知行空间&#x1f339;&#x1f339; Otsu算法简介 Otsu阈值法发表于1979年&#xff0c;论文为A threshold selection method from gray level histograms,作者是日本东京大学的…

序列模型基础概念

一、公式定义 在时间 t t t观察到 x t x_{t} xt​&#xff0c;那么得到 T T T个不独立的随机变量 ( x 1 , . . . , x T ) − p ( X ) (x_{1},...,x_{T})-p(X) (x1​,...,xT​)−p(X) 由条件概率公式&#xff1a; p ( a , b ) p ( a ) p ( b ∣ a ) p ( b ) p ( a ∣ b ) p(a,…

chatgpt赋能python:Python中局部变量的介绍

Python中局部变量的介绍 在Python中&#xff0c;局部变量是在函数中定义的变量&#xff0c;其范围限制在该函数内部。每当函数被调用时&#xff0c;局部变量将被创建并且只在函数的执行期间存在。当函数执行结束时&#xff0c;局部变量将被销毁。 局部变量是在函数内部定义的…