SOPHON算能科技新版SDK环境配置以及C++ demo使用过程

目录

[1 SDK大包下载](#1 SDK大包下载)

[2 获取SDK中的库文件和头文件](#2 获取SDK中的库文件和头文件)

[2.1 注意事项](#2.1 注意事项)

[2.2 交叉编译环境搭建](#2.2 交叉编译环境搭建)

[2.2.1 首先安装工具链](#2.2.1 首先安装工具链)

[2.2.2 解压sophon-img包里的libsophon_soc__aarch64.tar.gz,将lib和include的所有内容拷贝到soc-sdk文件夹](#2.2.2 解压sophon-img包里的libsophon_soc__aarch64.tar.gz,将lib和include的所有内容拷贝到soc-sdk文件夹)

[2.2.3 解压sophon-mw包里的sophon-mw-soc__aarch64.tar.gz,将sophon-mw下lib和include的所有内容拷贝到soc-sdk文件夹。](#2.2.3 解压sophon-mw包里的sophon-mw-soc__aarch64.tar.gz,将sophon-mw下lib和include的所有内容拷贝到soc-sdk文件夹。)

[2.3 运行环境配置](#2.3 运行环境配置)

[2.3.1 格式化内存卡问题](#2.3.1 格式化内存卡问题)

[3 C++推理demo代码](#3 C++推理demo代码)

参考文献:


1 SDK大包下载

技术资料

从上面网址下载

下载完之后解压,里面包含很多内容

这篇博客主要记录下自己使用新的C++推理demo以及新的SDK库和头文件的过程,至于使用SDK大包里面的mlir进行模型转换的方法步骤在另一篇博客里面:利用tpu-mlir工具将深度学习算法模型转成算能科技平台.bmodel模型的方法步骤_mlir tpu-CSDN博客

2 获取SDK中的库文件和头文件

要想编译或者运行C++ demo,那么都需要用到SDK里面的库文件或者头文件,因此首先要获取头文件或者库文件,下面的操作都是基于第一步下载的SDK大包的基础上进行的。

2.1 注意事项

先简单看一下SDK引言里面的注意事项

  • 新的SOPHONSDK不再提供官方docker,可直接在宿主机上使用deb包安装软件库包,也可以参考《LIBSOPHON使用手册》第6章构建自己的镜像。

  • PCIe模式下,如果已经装了BM1684 SDK 的驱动,请先卸载旧的 BM1684 SDK 的驱动,再安装sophon-driver_x.y.z_amd64.deb包,具体可参考《LIBSOPHON使用手册》第3章。

  • sophon-mw-sophon-ffmpeg 依赖 sophon-libsophon 包,而 sophon-mw-sophon-opencv 依赖 sophon-mw-sophon-ffmpeg,因此在安装次序上必须先安装 libsophon,然后 sophon-mw-sophon-ffmpeg,最后安装 sophon-mw-sophon-opencv。

  • 推荐使用cmake中的find_package查找libsophon和sophon-mw的库包,并链接到自己的程序中。

  • 部分头文件不包含于libsophon,如bm_wrapper.hpp、utils.hpp。

  • SoC模式下,原来/system下的软件库包,现位于/opt/sophon/下。

  • SoC模式下,通过开机时的systemd服务,自动加载/opt/sophon/libsophon-current/data下的ko内核模块。如用户定义的自启动服务,并且依赖BM168X,请确保在ko加载后启动。

  • 新的TPU-MLIR和TPU-NNTC使用tpu_model替换原来的bm_model.bin,使用方法相同。

2.2 交叉编译环境搭建

2.2.1 首先安装工具链

bash 复制代码
sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu

这个我电脑中之前就有

bash 复制代码
which aarch64-linux-gnu-g++
/data/chw/gcc-linaro-11.3.1-2022.06-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++

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

bash 复制代码
cd Release_v2312-LTS/
cd sophon-img_20231116_213307/
mkdir -p soc-sdk
tar -zxf libsophon_soc_0.5.0_aarch64.tar.gz 
cp -drf libsophon_soc_0.5.0_aarch64/opt/sophon/libsophon-0.5.0/include/  ./soc-sdk/
cp -drf libsophon_soc_0.5.0_aarch64/opt/sophon/libsophon-0.5.0/lib/  ./soc-sdk/
ll soc-sdk/

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

bash 复制代码
cd sophon-mw_20231116_113811/
tar -zxf sophon-mw-soc_0.7.3_aarch64.tar.gz 
cp -drf sophon-mw-soc_0.7.3_aarch64/opt/sophon/sophon-ffmpeg_0.7.3/lib ../sophon-img_20231116_213307/soc-sdk/
cp -drf sophon-mw-soc_0.7.3_aarch64/opt/sophon/sophon-ffmpeg_0.7.3/include  ../sophon-img_20231116_213307/soc-sdk/
cp -drf sophon-mw-soc_0.7.3_aarch64/opt/sophon/sophon-opencv_0.7.3/lib/  ../sophon-img_20231116_213307/soc-sdk/
cp -drf sophon-mw-soc_0.7.3_aarch64/opt/sophon/sophon-opencv_0.7.3/include/  ../sophon-img_20231116_213307/soc-sdk/

2.3 运行环境配置

我使用的是SOC模式,而非PCIE模式,因此参考文档中的环境配置-SOC章节。

使用sdk大包中sophon-img下的sdcard刷机包刷机,然后/opt/sophon/下就会有libsophon、sophon-opencv和sophon-ffmpeg运行库包。只需用export PYTHONPATH=$PYTHONPATH:设置环境变量即可。

2.3.1 格式化内存卡问题

我想用内存卡对算能科技的BM1684盒子进行刷机,结果没有刷机成功,问题在于我的内存卡是用windows系统格式化的,然后格式化之后的内存卡有个多余的分区

而盒子要求这里比如只能有sdb不能有sdb1.

bash 复制代码
a、显示sd卡状态。执行命令 lsblk 会显示sd卡会有分区,比如sdb1
b、取消挂载。umount /dev/sdb1
c、格式化TF卡,sudo mkfs.vfat -I /dev/sdb(合并所有分区,例如:/dev/sdb设备下 sdb1 、sdb2分区,使用-I参数可以合并格式化所有分区 )
d、检查sd卡是否合并成功, lsblk -f 只有sdb,没有sdb1等分区,-f参数还可以看到格式是不是vfat。

3 C++推理demo代码

C++推理demo在github上有:https://github.com/sophgo/sophon-demo/tree/release/sample/YOLOv5/cpp/yolov5_bmcv

在上面下载的SDK大包里面也有C++推理demo代码

但是这时候如果想编译,那么还缺少算能的库和头文件,在前面soc-sdk的时候已经把库和头文件全都拷贝过去了,这里把前面的库和头文件都拷贝过来,

bash 复制代码
 2037  cp -drf  /data/chw/bitedalu_20220713/Release_230701-public/sophon-img_20230810_221353/soc-sdk/include/* ./include/
 2038  cp -drf  /data/chw/bitedalu_20220713/Release_230701-public/sophon-img_20230810_221353/soc-sdk/lib/* ./lib/

然后还有一些头文件也需要拷贝过来,就是在

还有个源文件也要拷贝过来

然后,我这里创建了个demo文件夹把mainc.pp放里面,

创建了cpp文件件把yolov5.cpp和ff_decode.cpp放里面。

最后的整体目录如下

bash 复制代码
├── chw_makefile
├── CMakeLists.txt
├── cpp
│   ├── ff_decode.cpp
│   ├── ff_decode.o
│   ├── yolov5.cpp
│   └── yolov5.o
├── data
│   ├── coco.names
│   ├── images
│   │   ├── 1111bus.jpg
│   │   ├── 1.jpg
│   │   ├── accident.mp4
│   │   ├── bus.jpg
│   │   ├── conflict   .mp4
│   │   ├── overflow.mp4
│   │   └── 南京路-东海路南电警-EQ.mp4
│   └── models
│       ├── easnet_fp8_640_1.bmodel_new
│       ├── easnet_fp8_640_1.bmodel_old
│       └── yolov5s_1684_f32_sym.bmodel
├── demo
│   └── main.cpp
├── env_demo
├── include
│   ├── bm1682_profile.h
│   ├── bm1684_profile.h
│   ├── bm1684x_profile.h
│   ├── bmblob.h
│   ├── bmcnnctx.h
│   ├── bmcpu_common.h
│   ├── bmcpu_dev.h
│   ├── bmcpu.h
│   ├── bmcv_api_ext_c.h
│   ├── bmcv_api_ext.h
│   ├── bmcv_api.h
│   ├── bmdef.h
│   ├── bmfunc
│   │   ├── bmdnn_func.h
│   │   └── bmfunc.h
│   ├── bm_ion.h
│   ├── bmjpuapi.h
│   ├── bmjpuapi_jpeg.h
│   ├── bmlib_runtime.h
│   ├── bmlog.hpp
│   ├── bmnet.h
│   ├── bmnn_utils.h
│   ├── bmodel.hpp
│   ├── bmqueue.h
│   ├── bmrt_arch_info.h
│   ├── bmruntime_common.h
│   ├── bmruntime_cpp.h
│   ├── bmruntime.h
│   ├── bmruntime_interface.h
│   ├── bmruntime_legacy.h
│   ├── bmruntime_profile.h
│   ├── bmtap2
│   │   ├── bmruntime_bmnet.h
│   │   ├── bmruntime.hpp
│   │   └── bmruntime_inner.h
│   ├── bm_video_interface.h
│   ├── bmvppapi.h
│   ├── bmvpp.h
│   ├── bmvpuapi_common.h
│   ├── bmvpuapi_enc.h
│   ├── bmvpuapi.h
│   ├── bmvpu.h
│   ├── bmvpu_logging.h
│   ├── bmvpu_types.h
│   ├── bm_wrapper.hpp
│   ├── ff_decode.hpp
│   ├── flatbuffers
│   │   ├── base.h
│   │   ├── code_generators.h
│   │   ├── flatbuffers.h
│   │   ├── flatc.h
│   │   ├── flexbuffers.h
│   │   ├── grpc.h
│   │   ├── hash.h
│   │   ├── idl.h
│   │   ├── minireflect.h
│   │   ├── reflection_generated.h
│   │   ├── reflection.h
│   │   ├── registry.h
│   │   ├── stl_emulation.h
│   │   └── util.h
│   ├── jpu_io.h
│   ├── jpu_lib.h
│   ├── jpu_logging.h
│   ├── json.hpp
│   ├── libavcodec
│   │   ├── ac3_parser.h
│   │   ├── adts_parser.h
│   │   ├── avcodec.h
│   │   ├── avdct.h
│   │   ├── avfft.h
│   │   ├── d3d11va.h
│   │   ├── dirac.h
│   │   ├── dv_profile.h
│   │   ├── dxva2.h
│   │   ├── jni.h
│   │   ├── mediacodec.h
│   │   ├── qsv.h
│   │   ├── vaapi.h
│   │   ├── vdpau.h
│   │   ├── version.h
│   │   ├── videotoolbox.h
│   │   ├── vorbis_parser.h
│   │   └── xvmc.h
│   ├── libavdevice
│   │   ├── avdevice.h
│   │   └── version.h
│   ├── libavfilter
│   │   ├── avfilter.h
│   │   ├── buffersink.h
│   │   ├── buffersrc.h
│   │   └── version.h
│   ├── libavformat
│   │   ├── avformat.h
│   │   ├── avio.h
│   │   └── version.h
│   ├── libavutil
│   │   ├── adler32.h
│   │   ├── aes_ctr.h
│   │   ├── aes.h
│   │   ├── attributes.h
│   │   ├── audio_fifo.h
│   │   ├── avassert.h
│   │   ├── avconfig.h
│   │   ├── avstring.h
│   │   ├── avutil.h
│   │   ├── base64.h
│   │   ├── blowfish.h
│   │   ├── bprint.h
│   │   ├── bswap.h
│   │   ├── buffer.h
│   │   ├── camellia.h
│   │   ├── cast5.h
│   │   ├── channel_layout.h
│   │   ├── common.h
│   │   ├── cpu.h
│   │   ├── crc.h
│   │   ├── des.h
│   │   ├── dict.h
│   │   ├── display.h
│   │   ├── downmix_info.h
│   │   ├── encryption_info.h
│   │   ├── error.h
│   │   ├── eval.h
│   │   ├── ffversion.h
│   │   ├── fifo.h
│   │   ├── file.h
│   │   ├── frame.h
│   │   ├── hash.h
│   │   ├── hmac.h
│   │   ├── hwcontext_bmcodec.h
│   │   ├── hwcontext_cuda.h
│   │   ├── hwcontext_d3d11va.h
│   │   ├── hwcontext_drm.h
│   │   ├── hwcontext_dxva2.h
│   │   ├── hwcontext.h
│   │   ├── hwcontext_mediacodec.h
│   │   ├── hwcontext_qsv.h
│   │   ├── hwcontext_vaapi.h
│   │   ├── hwcontext_vdpau.h
│   │   ├── hwcontext_videotoolbox.h
│   │   ├── imgutils.h
│   │   ├── intfloat.h
│   │   ├── intreadwrite.h
│   │   ├── lfg.h
│   │   ├── log.h
│   │   ├── lzo.h
│   │   ├── macros.h
│   │   ├── mastering_display_metadata.h
│   │   ├── mathematics.h
│   │   ├── md5.h
│   │   ├── mem.h
│   │   ├── motion_vector.h
│   │   ├── murmur3.h
│   │   ├── opt.h
│   │   ├── parseutils.h
│   │   ├── pixdesc.h
│   │   ├── pixelutils.h
│   │   ├── pixfmt.h
│   │   ├── random_seed.h
│   │   ├── rational.h
│   │   ├── rc4.h
│   │   ├── replaygain.h
│   │   ├── ripemd.h
│   │   ├── samplefmt.h
│   │   ├── sha512.h
│   │   ├── sha.h
│   │   ├── spherical.h
│   │   ├── stereo3d.h
│   │   ├── tea.h
│   │   ├── threadmessage.h
│   │   ├── timecode.h
│   │   ├── time.h
│   │   ├── timestamp.h
│   │   ├── tree.h
│   │   ├── twofish.h
│   │   ├── version.h
│   │   └── xtea.h
│   ├── libswresample
│   │   ├── swresample.h
│   │   └── version.h
│   ├── libswscale
│   │   ├── swscale.h
│   │   └── version.h
│   ├── libyuv
│   │   ├── basic_types.h
│   │   ├── compare.h
│   │   ├── compare_row.h
│   │   ├── convert_argb.h
│   │   ├── convert_from_argb.h
│   │   ├── convert_from.h
│   │   ├── convert.h
│   │   ├── cpu_id.h
│   │   ├── macros_msa.h
│   │   ├── mjpeg_decoder.h
│   │   ├── planar_functions.h
│   │   ├── rotate_argb.h
│   │   ├── rotate.h
│   │   ├── rotate_row.h
│   │   ├── row.h
│   │   ├── scale_argb.h
│   │   ├── scale.h
│   │   ├── scale_row.h
│   │   ├── version.h
│   │   └── video_common.h
│   ├── libyuv.h
│   ├── md5
│   │   └── md5.h
│   ├── model_generated.h
│   ├── opencv4
│   │   └── opencv2
│   │       ├── calib3d
│   │       │   ├── calib3d_c.h
│   │       │   └── calib3d.hpp
│   │       ├── calib3d.hpp
│   │       ├── core
│   │       │   ├── affine.hpp
│   │       │   ├── av.hpp
│   │       │   ├── base.hpp
│   │       │   ├── bindings_utils.hpp
│   │       │   ├── bmcv.hpp
│   │       │   ├── bufferpool.hpp
│   │       │   ├── check.hpp
│   │       │   ├── core_c.h
│   │       │   ├── core.hpp
│   │       │   ├── cuda
│   │       │   │   ├── block.hpp
│   │       │   │   ├── border_interpolate.hpp
│   │       │   │   ├── color.hpp
│   │       │   │   ├── common.hpp
│   │       │   │   ├── datamov_utils.hpp
│   │       │   │   ├── detail
│   │       │   │   │   ├── color_detail.hpp
│   │       │   │   │   ├── reduce.hpp
│   │       │   │   │   ├── reduce_key_val.hpp
│   │       │   │   │   ├── transform_detail.hpp
│   │       │   │   │   ├── type_traits_detail.hpp
│   │       │   │   │   └── vec_distance_detail.hpp
│   │       │   │   ├── dynamic_smem.hpp
│   │       │   │   ├── emulation.hpp
│   │       │   │   ├── filters.hpp
│   │       │   │   ├── funcattrib.hpp
│   │       │   │   ├── functional.hpp
│   │       │   │   ├── limits.hpp
│   │       │   │   ├── reduce.hpp
│   │       │   │   ├── saturate_cast.hpp
│   │       │   │   ├── scan.hpp
│   │       │   │   ├── simd_functions.hpp
│   │       │   │   ├── transform.hpp
│   │       │   │   ├── type_traits.hpp
│   │       │   │   ├── utility.hpp
│   │       │   │   ├── vec_distance.hpp
│   │       │   │   ├── vec_math.hpp
│   │       │   │   ├── vec_traits.hpp
│   │       │   │   ├── warp.hpp
│   │       │   │   ├── warp_reduce.hpp
│   │       │   │   └── warp_shuffle.hpp
│   │       │   ├── cuda.hpp
│   │       │   ├── cuda.inl.hpp
│   │       │   ├── cuda_stream_accessor.hpp
│   │       │   ├── cuda_types.hpp
│   │       │   ├── cv_bmcpu.hpp
│   │       │   ├── cv_cpu_dispatch.h
│   │       │   ├── cv_cpu_helper.h
│   │       │   ├── cvdef.h
│   │       │   ├── cvstd.hpp
│   │       │   ├── cvstd.inl.hpp
│   │       │   ├── cvstd_wrapper.hpp
│   │       │   ├── directx.hpp
│   │       │   ├── eigen.hpp
│   │       │   ├── fast_math.hpp
│   │       │   ├── hal
│   │       │   │   ├── hal.hpp
│   │       │   │   ├── interface.h
│   │       │   │   ├── intrin_avx.hpp
│   │       │   │   ├── intrin_cpp.hpp
│   │       │   │   ├── intrin_forward.hpp
│   │       │   │   ├── intrin.hpp
│   │       │   │   ├── intrin_neon.hpp
│   │       │   │   ├── intrin_sse_em.hpp
│   │       │   │   ├── intrin_sse.hpp
│   │       │   │   └── intrin_vsx.hpp
│   │       │   ├── hal.hpp
│   │       │   ├── ion.hpp
│   │       │   ├── mat.hpp
│   │       │   ├── mat.inl.hpp
│   │       │   ├── matx.hpp
│   │       │   ├── neon_utils.hpp
│   │       │   ├── ocl_genbase.hpp
│   │       │   ├── ocl.hpp
│   │       │   ├── opencl
│   │       │   │   ├── ocl_defs.hpp
│   │       │   │   ├── opencl_info.hpp
│   │       │   │   ├── opencl_svm.hpp
│   │       │   │   └── runtime
│   │       │   │       ├── autogenerated
│   │       │   │       │   ├── opencl_clamdblas.hpp
│   │       │   │       │   ├── opencl_clamdfft.hpp
│   │       │   │       │   ├── opencl_core.hpp
│   │       │   │       │   ├── opencl_core_wrappers.hpp
│   │       │   │       │   ├── opencl_gl.hpp
│   │       │   │       │   └── opencl_gl_wrappers.hpp
│   │       │   │       ├── opencl_clamdblas.hpp
│   │       │   │       ├── opencl_clamdfft.hpp
│   │       │   │       ├── opencl_core.hpp
│   │       │   │       ├── opencl_core_wrappers.hpp
│   │       │   │       ├── opencl_gl.hpp
│   │       │   │       ├── opencl_gl_wrappers.hpp
│   │       │   │       ├── opencl_svm_20.hpp
│   │       │   │       ├── opencl_svm_definitions.hpp
│   │       │   │       └── opencl_svm_hsa_extension.hpp
│   │       │   ├── opengl.hpp
│   │       │   ├── operations.hpp
│   │       │   ├── optim.hpp
│   │       │   ├── ovx.hpp
│   │       │   ├── persistence.hpp
│   │       │   ├── saturate.hpp
│   │       │   ├── softfloat.hpp
│   │       │   ├── sse_utils.hpp
│   │       │   ├── traits.hpp
│   │       │   ├── types_c.h
│   │       │   ├── types.hpp
│   │       │   ├── utility.hpp
│   │       │   ├── utils
│   │       │   │   ├── filesystem.hpp
│   │       │   │   ├── logger.defines.hpp
│   │       │   │   ├── logger.hpp
│   │       │   │   └── trace.hpp
│   │       │   ├── va_intel.hpp
│   │       │   ├── version.hpp
│   │       │   └── vsx_utils.hpp
│   │       ├── core.hpp
│   │       ├── cvconfig.h
│   │       ├── dnn
│   │       │   ├── all_layers.hpp
│   │       │   ├── dict.hpp
│   │       │   ├── dnn.hpp
│   │       │   ├── dnn.inl.hpp
│   │       │   ├── layer.details.hpp
│   │       │   ├── layer.hpp
│   │       │   ├── shape_utils.hpp
│   │       │   ├── utils
│   │       │   │   └── inference_engine.hpp
│   │       │   └── version.hpp
│   │       ├── dnn.hpp
│   │       ├── features2d
│   │       │   ├── features2d.hpp
│   │       │   └── hal
│   │       │       └── interface.h
│   │       ├── features2d.hpp
│   │       ├── flann
│   │       │   ├── all_indices.h
│   │       │   ├── allocator.h
│   │       │   ├── any.h
│   │       │   ├── autotuned_index.h
│   │       │   ├── composite_index.h
│   │       │   ├── config.h
│   │       │   ├── defines.h
│   │       │   ├── dist.h
│   │       │   ├── dummy.h
│   │       │   ├── dynamic_bitset.h
│   │       │   ├── flann_base.hpp
│   │       │   ├── flann.hpp
│   │       │   ├── general.h
│   │       │   ├── ground_truth.h
│   │       │   ├── heap.h
│   │       │   ├── hierarchical_clustering_index.h
│   │       │   ├── index_testing.h
│   │       │   ├── kdtree_index.h
│   │       │   ├── kdtree_single_index.h
│   │       │   ├── kmeans_index.h
│   │       │   ├── linear_index.h
│   │       │   ├── logger.h
│   │       │   ├── lsh_index.h
│   │       │   ├── lsh_table.h
│   │       │   ├── matrix.h
│   │       │   ├── miniflann.hpp
│   │       │   ├── nn_index.h
│   │       │   ├── object_factory.h
│   │       │   ├── params.h
│   │       │   ├── random.h
│   │       │   ├── result_set.h
│   │       │   ├── sampling.h
│   │       │   ├── saving.h
│   │       │   ├── simplex_downhill.h
│   │       │   └── timer.h
│   │       ├── flann.hpp
│   │       ├── freetype.hpp
│   │       ├── gapi
│   │       │   ├── core.hpp
│   │       │   ├── cpu
│   │       │   │   ├── core.hpp
│   │       │   │   ├── gcpukernel.hpp
│   │       │   │   └── imgproc.hpp
│   │       │   ├── fluid
│   │       │   │   ├── core.hpp
│   │       │   │   ├── gfluidbuffer.hpp
│   │       │   │   ├── gfluidkernel.hpp
│   │       │   │   └── imgproc.hpp
│   │       │   ├── garg.hpp
│   │       │   ├── garray.hpp
│   │       │   ├── gcall.hpp
│   │       │   ├── gcommon.hpp
│   │       │   ├── gcompiled.hpp
│   │       │   ├── gcompoundkernel.hpp
│   │       │   ├── gcomputation.hpp
│   │       │   ├── gkernel.hpp
│   │       │   ├── gmat.hpp
│   │       │   ├── gmetaarg.hpp
│   │       │   ├── gproto.hpp
│   │       │   ├── gpu
│   │       │   │   ├── core.hpp
│   │       │   │   ├── ggpukernel.hpp
│   │       │   │   └── imgproc.hpp
│   │       │   ├── gscalar.hpp
│   │       │   ├── gtyped.hpp
│   │       │   ├── gtype_traits.hpp
│   │       │   ├── imgproc.hpp
│   │       │   ├── ocl
│   │       │   │   ├── core.hpp
│   │       │   │   ├── goclkernel.hpp
│   │       │   │   └── imgproc.hpp
│   │       │   ├── opencv_includes.hpp
│   │       │   ├── operators.hpp
│   │       │   ├── own
│   │       │   │   ├── assert.hpp
│   │       │   │   ├── convert.hpp
│   │       │   │   ├── cvdefs.hpp
│   │       │   │   ├── exports.hpp
│   │       │   │   ├── mat.hpp
│   │       │   │   ├── saturate.hpp
│   │       │   │   ├── scalar.hpp
│   │       │   │   └── types.hpp
│   │       │   └── util
│   │       │       ├── any.hpp
│   │       │       ├── compiler_hints.hpp
│   │       │       ├── optional.hpp
│   │       │       ├── throw.hpp
│   │       │       ├── util.hpp
│   │       │       └── variant.hpp
│   │       ├── gapi.hpp
│   │       ├── highgui
│   │       │   ├── highgui_c.h
│   │       │   └── highgui.hpp
│   │       ├── highgui.hpp
│   │       ├── imgcodecs
│   │       │   ├── imgcodecs_c.h
│   │       │   ├── imgcodecs.hpp
│   │       │   ├── ios.h
│   │       │   └── legacy
│   │       │       └── constants_c.h
│   │       ├── imgcodecs.hpp
│   │       ├── imgproc
│   │       │   ├── detail
│   │       │   │   └── gcgraph.hpp
│   │       │   ├── hal
│   │       │   │   ├── hal.hpp
│   │       │   │   └── interface.h
│   │       │   ├── imgproc_c.h
│   │       │   ├── imgproc.hpp
│   │       │   ├── types_c.h
│   │       │   └── vpp.hpp
│   │       ├── imgproc.hpp
│   │       ├── ml
│   │       │   ├── ml.hpp
│   │       │   └── ml.inl.hpp
│   │       ├── ml.hpp
│   │       ├── objdetect
│   │       │   ├── detection_based_tracker.hpp
│   │       │   └── objdetect.hpp
│   │       ├── objdetect.hpp
│   │       ├── opencv.hpp
│   │       ├── opencv_modules.hpp
│   │       ├── photo
│   │       │   ├── cuda.hpp
│   │       │   ├── legacy
│   │       │   │   └── constants_c.h
│   │       │   └── photo.hpp
│   │       ├── photo.hpp
│   │       ├── stitching
│   │       │   ├── detail
│   │       │   │   ├── autocalib.hpp
│   │       │   │   ├── blenders.hpp
│   │       │   │   ├── camera.hpp
│   │       │   │   ├── exposure_compensate.hpp
│   │       │   │   ├── matchers.hpp
│   │       │   │   ├── motion_estimators.hpp
│   │       │   │   ├── seam_finders.hpp
│   │       │   │   ├── timelapsers.hpp
│   │       │   │   ├── util.hpp
│   │       │   │   ├── util_inl.hpp
│   │       │   │   ├── warpers.hpp
│   │       │   │   └── warpers_inl.hpp
│   │       │   └── warpers.hpp
│   │       ├── stitching.hpp
│   │       ├── video
│   │       │   ├── background_segm.hpp
│   │       │   ├── legacy
│   │       │   │   └── constants_c.h
│   │       │   ├── tracking.hpp
│   │       │   └── video.hpp
│   │       ├── video.hpp
│   │       ├── videoio
│   │       │   ├── cap_ios.h
│   │       │   ├── legacy
│   │       │   │   └── constants_c.h
│   │       │   ├── registry.hpp
│   │       │   ├── videoio_c.h
│   │       │   └── videoio.hpp
│   │       └── videoio.hpp
│   ├── tpu_bitcasts.h
│   ├── tpu_fp16_base.h
│   ├── tpu_fp16.h
│   ├── tpu_fp16.hpp
│   ├── user_bmcpu_common.h
│   ├── user_bmcpu.h
│   ├── utils.hpp
│   ├── vppion.h
│   ├── vpplib.h
│   └── yolov5.hpp
└── lib
    ├── cmake
    │   ├── FFMPEGConfig.cmake
    │   └── opencv4
    │       ├── OpenCVConfig.cmake
    │       ├── OpenCVConfig-version.cmake
    │       ├── OpenCVModules.cmake
    │       └── OpenCVModules-release.cmake
    ├── libavcodec.a
    ├── libavcodec.so -> libavcodec.so.58.35.100-sophon-0.7.0
    ├── libavcodec.so.58 -> libavcodec.so.58.35.100-sophon-0.7.0
    ├── libavcodec.so.58.35.100-sophon-0.7.0
    ├── libavdevice.a
    ├── libavdevice.so -> libavdevice.so.58.5.100-sophon-0.7.0
    ├── libavdevice.so.58 -> libavdevice.so.58.5.100-sophon-0.7.0
    ├── libavdevice.so.58.5.100-sophon-0.7.0
    ├── libavfilter.a
    ├── libavfilter.so -> libavfilter.so.7.40.101-sophon-0.7.0
    ├── libavfilter.so.7 -> libavfilter.so.7.40.101-sophon-0.7.0
    ├── libavfilter.so.7.40.101-sophon-0.7.0
    ├── libavformat.a
    ├── libavformat.so -> libavformat.so.58.20.100-sophon-0.7.0
    ├── libavformat.so.58 -> libavformat.so.58.20.100-sophon-0.7.0
    ├── libavformat.so.58.20.100-sophon-0.7.0
    ├── libavutil.a
    ├── libavutil.so -> libavutil.so.56.22.100-sophon-0.7.0
    ├── libavutil.so.56 -> libavutil.so.56.22.100-sophon-0.7.0
    ├── libavutil.so.56.22.100-sophon-0.7.0
    ├── libbmcv.a
    ├── libbmcv.so -> libbmcv.so.0
    ├── libbmcv.so.0 -> libbmcv.so.0.7.0
    ├── libbmcv.so.0.7.0
    ├── libbmion.so -> libbmion.so.0
    ├── libbmion.so.0 -> libbmion.so.0.7.0
    ├── libbmion.so.0.7.0
    ├── libbmjpuapi.so -> libbmjpuapi.so.0
    ├── libbmjpuapi.so.0 -> libbmjpuapi.so.0.7.0
    ├── libbmjpuapi.so.0.7.0
    ├── libbmjpulite.so -> libbmjpulite.so.0
    ├── libbmjpulite.so.0 -> libbmjpulite.so.0.7.0
    ├── libbmjpulite.so.0.7.0
    ├── libbmlib.so -> libbmlib.so.0
    ├── libbmlib.so.0
    ├── libbmodel.a
    ├── libbmrt.so -> libbmrt.so.1.0
    ├── libbmrt.so.1.0
    ├── libbmvideo.so -> libbmvideo.so.0
    ├── libbmvideo.so.0 -> libbmvideo.so.0.7.0
    ├── libbmvideo.so.0.7.0
    ├── libbmvppapi.so -> libbmvppapi.so.0
    ├── libbmvppapi.so.0 -> libbmvppapi.so.0.7.0
    ├── libbmvppapi.so.0.7.0
    ├── libbmvpuapi.so -> libbmvpuapi.so.0
    ├── libbmvpuapi.so.0 -> libbmvpuapi.so.0.7.0
    ├── libbmvpuapi.so.0.7.0
    ├── libbmvpulite.so -> libbmvpulite.so.0
    ├── libbmvpulite.so.0 -> libbmvpulite.so.0.7.0
    ├── libbmvpulite.so.0.7.0
    ├── libcpuop.so -> libcpuop.so.0.4.9
    ├── libcpuop.so.0.4.9
    ├── libopencv_calib3d.so -> libopencv_calib3d.so.4.1
    ├── libopencv_calib3d.so.4.1 -> libopencv_calib3d.so.4.1.0-sophon-0.7.0
    ├── libopencv_calib3d.so.4.1.0-sophon-0.7.0
    ├── libopencv_core.so -> libopencv_core.so.4.1
    ├── libopencv_core.so.4.1 -> libopencv_core.so.4.1.0-sophon-0.7.0
    ├── libopencv_core.so.4.1.0-sophon-0.7.0
    ├── libopencv_dnn.so -> libopencv_dnn.so.4.1
    ├── libopencv_dnn.so.4.1 -> libopencv_dnn.so.4.1.0-sophon-0.7.0
    ├── libopencv_dnn.so.4.1.0-sophon-0.7.0
    ├── libopencv_features2d.so -> libopencv_features2d.so.4.1
    ├── libopencv_features2d.so.4.1 -> libopencv_features2d.so.4.1.0-sophon-0.7.0
    ├── libopencv_features2d.so.4.1.0-sophon-0.7.0
    ├── libopencv_flann.so -> libopencv_flann.so.4.1
    ├── libopencv_flann.so.4.1 -> libopencv_flann.so.4.1.0-sophon-0.7.0
    ├── libopencv_flann.so.4.1.0-sophon-0.7.0
    ├── libopencv_freetype.so -> libopencv_freetype.so.4.1
    ├── libopencv_freetype.so.4.1 -> libopencv_freetype.so.4.1.0-sophon-0.7.0
    ├── libopencv_freetype.so.4.1.0-sophon-0.7.0
    ├── libopencv_gapi.so -> libopencv_gapi.so.4.1
    ├── libopencv_gapi.so.4.1 -> libopencv_gapi.so.4.1.0-sophon-0.7.0
    ├── libopencv_gapi.so.4.1.0-sophon-0.7.0
    ├── libopencv_highgui.so -> libopencv_highgui.so.4.1
    ├── libopencv_highgui.so.4.1 -> libopencv_highgui.so.4.1.0-sophon-0.7.0
    ├── libopencv_highgui.so.4.1.0-sophon-0.7.0
    ├── libopencv_imgcodecs.so -> libopencv_imgcodecs.so.4.1
    ├── libopencv_imgcodecs.so.4.1 -> libopencv_imgcodecs.so.4.1.0-sophon-0.7.0
    ├── libopencv_imgcodecs.so.4.1.0-sophon-0.7.0
    ├── libopencv_imgproc.so -> libopencv_imgproc.so.4.1
    ├── libopencv_imgproc.so.4.1 -> libopencv_imgproc.so.4.1.0-sophon-0.7.0
    ├── libopencv_imgproc.so.4.1.0-sophon-0.7.0
    ├── libopencv_ml.so -> libopencv_ml.so.4.1
    ├── libopencv_ml.so.4.1 -> libopencv_ml.so.4.1.0-sophon-0.7.0
    ├── libopencv_ml.so.4.1.0-sophon-0.7.0
    ├── libopencv_objdetect.so -> libopencv_objdetect.so.4.1
    ├── libopencv_objdetect.so.4.1 -> libopencv_objdetect.so.4.1.0-sophon-0.7.0
    ├── libopencv_objdetect.so.4.1.0-sophon-0.7.0
    ├── libopencv_photo.so -> libopencv_photo.so.4.1
    ├── libopencv_photo.so.4.1 -> libopencv_photo.so.4.1.0-sophon-0.7.0
    ├── libopencv_photo.so.4.1.0-sophon-0.7.0
    ├── libopencv_stitching.so -> libopencv_stitching.so.4.1
    ├── libopencv_stitching.so.4.1 -> libopencv_stitching.so.4.1.0-sophon-0.7.0
    ├── libopencv_stitching.so.4.1.0-sophon-0.7.0
    ├── libopencv_videoio.so -> libopencv_videoio.so.4.1
    ├── libopencv_videoio.so.4.1 -> libopencv_videoio.so.4.1.0-sophon-0.7.0
    ├── libopencv_videoio.so.4.1.0-sophon-0.7.0
    ├── libopencv_video.so -> libopencv_video.so.4.1
    ├── libopencv_video.so.4.1 -> libopencv_video.so.4.1.0-sophon-0.7.0
    ├── libopencv_video.so.4.1.0-sophon-0.7.0
    ├── libswresample.a
    ├── libswresample.so -> libswresample.so.3.3.100-sophon-0.7.0
    ├── libswresample.so.3 -> libswresample.so.3.3.100-sophon-0.7.0
    ├── libswresample.so.3.3.100-sophon-0.7.0
    ├── libswscale.a
    ├── libswscale.so -> libswscale.so.5.3.100-sophon-0.7.0
    ├── libswscale.so.5 -> libswscale.so.5.3.100-sophon-0.7.0
    ├── libswscale.so.5.3.100-sophon-0.7.0
    ├── libturing_env.so
    ├── libusercpu.so -> libusercpu.so.0.4.9
    ├── libusercpu.so.0.4.9
    ├── libvideo_bm.so -> libbmvideo.so
    ├── libvpp.a
    ├── libvpp_cmodel.so
    ├── libvpp.so -> libvpp.so.0
    ├── libvpp.so.0 -> libvpp.so.0.7.0
    ├── libvpp.so.0.7.0
    ├── libyuv.a
    ├── libyuv.so -> libyuv.so.0
    ├── libyuv.so.0 -> libyuv.so.0.7.0
    ├── libyuv.so.0.7.0
    ├── pkgconfig
    │   ├── libavcodec.pc
    │   ├── libavdevice.pc
    │   ├── libavfilter.pc
    │   ├── libavformat.pc
    │   ├── libavutil.pc
    │   ├── libswresample.pc
    │   ├── libswscale.pc
    │   └── opencv4.pc
    ├── tpu_module
    │   └── libbm1684x_kernel_module.so
    └── vpu_firmware
        ├── chagall.bin
        └── chagall_dec.bin

另外,makefile内容如下

bash 复制代码
CC      = aarch64-linux-gnu-gcc
CPP     = aarch64-linux-gnu-g++
AR      = ar
RM      = rm -f
 
#Define the resource compiler.
RC = windres
 
## debug flag  
DBG_ENABLE := 0
 
OS = $(shell uname)
 
## source file path  
SRC_PATH  := ./cpp/ #./include/utils/
SRC_PATH_EXT := 
DEMO :=./demo/main.cpp
 
## target file name  
TARGET     := turing_env
DEMO_TARGET := env_demo
 
## get all source files  
SRCS := $(foreach spath, $(SRC_PATH), $(wildcard $(spath)*.c) $(wildcard $(spath)*.cpp))
 
## all .o based on all .c/.cpp
OBJS = $(SRCS:.c=.o)
OBJS := $(OBJS:.cpp=.o) 
 
## macro define
#DEFS := __LINUX__ OS_LINUX _FILE_OFFSET_BITS=64
DEFS := __LINUX__ OS_LINUX 
 
#if freeimage is static-linked use this !
#DEFS += FREEIMAGE_LIB
 
## need libs, add at here  
LIBS := bmrt bmlib bmcv dl \
	opencv_core opencv_imgproc opencv_imgcodecs opencv_videoio  opencv_video \
	bmvideo swresample swscale avformat avutil \
	#protobuf gflags glog boost_system boost_filesystem pthread bmjpuapi bmjpulite #asan
 
DEMO_LIBS = $(LIBS)
DEMO_LIBS += turing_env
 
## used headers  file path  
INCLUDE_PATH := ./include ./include/third /usr/local/cuda/include  ./src  ./include/biz_sdk ./include/biz_common  ./include/spdlog ./include/utils ./include/rapidjson ./  
INCLUDE_PATH += ./include/tcp_pubsub  #add by chw
INCLUDE_PATH += ./include
INCLUDE_PATH += ./include/rapidjson
INCLUDE_PATH += ./include/bmruntime
INCLUDE_PATH += ./include/bmlib
INCLUDE_PATH += ./include/third_party/boost/include
INCLUDE_PATH += ./include/opencv4 
INCLUDE_PATH += ./include/ffmpeg ./include
 
#$(warning $(INCLUDE_PATH))
 
## used include librarys file path  
LIBRARY_PATH := ./  ./lib  ./lib/thirdparty/soc ./lib/bmnn/soc ./lib/opencv/soc ./lib/ffmpeg/soc ./lib/decode/soc

## debug for debug info, when use gdb to debug  
ifeq (1, ${DBG_ENABLE})   
CFLAGS += -D_DEBUG -g -DDEBUG=1 
else
CFLAGS += -O2 -DNDEBUG
endif
 
#for ENCYPT flags
 
ifeq ($(OS), Linux)
LIBS += dl rt
CFLAGS += -fPIC
TARGET_EXT := .so
LIBRARY_PATH += 
LDFLAGS += -Wl,--rpath=./lib 
LDFLAGS += -Wl,--rpath=./lib/thirdparty/soc 
LDFLAGS += -Wl,--rpath=./lib/bmnn/soc
LDFLAGS += -Wl,--rpath=./lib/opencv/soc
LDFLAGS += -Wl,--rpath=./lib/ffmpeg/soc
LDFLAGS += -Wl,--rpath=./lib/decode/soc
endif
 
#CFLAGS += -msse4.2 -march=core2 -pipe $(foreach m, $(DEFS), -D$(m)) 
 
CFLAGS +=  -pipe $(foreach m, $(DEFS), -D$(m)) 
  
## get all include path  
CFLAGS  += $(foreach dir, $(INCLUDE_PATH), -I$(dir))   #-fsanitize=address -g
##CFLAGS  += $(foreach dir, $(INCLUDE_PATH), -I$(dir))  -fvisibility=hidden  
 
CXXFLAGS += $(CFLAGS) -std=c++11 
 
## get all library path  
#LDFLAGS += -lpthread  -fsanitize=address $(foreach lib, $(LIBRARY_PATH), -L$(lib))
LDFLAGS += -lpthread  $(foreach lib, $(LIBRARY_PATH), -L$(lib))
DEMO_LDFLAGS := $(LDFLAGS)
## get all librarys  
LDFLAGS += $(foreach lib, $(LIBS), -l$(lib))
 
DEMO_LDFLAGS += $(foreach lib, $(DEMO_LIBS), -l$(lib))
 
RCFLAGS ?= -DNDEBUG
 
 
default: all
 
%.o: %.c
	$(CC) $(CFLAGS) -g -c $< -o $@
 
%.o: %.cpp
	$(CPP) $(CXXFLAGS) -g -c $< -o $@
    
all: $(OBJS) $(RESOURCE)
    #$(CPP) $(CXXFLAGS) -o $(TARGET) $(OBJS) $(RESOURCE) $(LDFLAGS)
	$(CPP) $(CXXFLAGS) -g -shared -o lib$(TARGET)$(TARGET_EXT) $(OBJS) $(RESOURCE) $(LDFLAGS)
	mv libturing_env.so ./lib
	$(CPP) $(CXXFLAGS) -g -o $(DEMO_TARGET) $(DEMO) $(DEMO_LDFLAGS)
 
clean:  
	$(RM) $(OBJS) $(DEMO_TARGET) $(TARGET).* $(RESOURCE)

参考文献:

利用tpu-mlir工具将深度学习算法模型转成算能科技平台.bmodel模型的方法步骤_mlir tpu-CSDN博客

3.4. 安装SDK --- SOPHONSDKUserGuide v23.10.01 文档

相关推荐
原来4524 天前
配置 Android Studio && cursor/vscode 环境(切换 Flutter 版本)
android·vscode·flutter·android studio·sdk
画江湖Test2 个月前
SDK如何测试
服务器·sdk
自律的kkk2 个月前
2024最新将本地项目发布到maven中央仓库以及踩坑记录(看这一篇就够了)-超详细
java·maven·sdk
习惯就好zz2 个月前
windows msvc2017 x64编译AWS SDK CPP库
sdk·aws·cpp·1024程序员节
_Tenk_2 个月前
springboot 整合 快手 移动应用 授权 发布视频 小黄车
java·spring boot·后端·sdk·快手
Dymc2 个月前
【安装JDK和Android SDK】
android·java·jdk·sdk
WPG大大通3 个月前
【质优价廉】GAP9 AI算力处理器赋能智能可听耳机,超低功耗畅享未来音频体验!
ai·sdk·低功耗·大大通·耳机·智能耳机·tws
丁乾坤的博客3 个月前
Xcode手动安装SDK模拟器
sdk·xcode·模拟器·手动
OH五星上将3 个月前
如何编译OpenHarmony SDK API
嵌入式硬件·移动开发·api·sdk·harmonyos·openharmony·鸿蒙开发
OH五星上将3 个月前
如何更换OpenHarmony SDK API 10
驱动开发·嵌入式硬件·sdk·harmonyos·openharmony·鸿蒙开发