目錄
1.編譯opencv
2.拷貝SDK源碼到虛擬機
3. 拉取TIM-VX代碼
4.拉取Tengine源碼并配置
1.編譯opencv
編譯opencv是為了,在編譯Tengine時指定OpenCVConfig.cmake,以便尋找特定的opencv動態(tài)庫
01.從github拉取opencv源代碼
git clone -b 4.5.5 https://github.com/opencv/opencv.git?
02.在虛擬機安裝cmake
sudo apt-get update
sudo apt-get install cmake
04.解壓opencv源碼,并進入文件
05.新建文件ax620a.toolchain.cmake配置交叉編譯工具鏈
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)
#如果未設置交叉編譯器到環(huán)境變量,要加入絕對路徑,我這里已經加入到環(huán)境變量中了
set(CMAKE_C_COMPILER "arm-linux-gnueabihf-gcc")
set(CMAKE_CXX_COMPILER "arm-linux-gnueabihf-g++")
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_C_FLAGS "-march=armv7-a -mfloat-abi=hard -mfpu=neon")
set(CMAKE_CXX_FLAGS "-march=armv7-a -mfloat-abi=hard -mfpu=neon")
# cache flags
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "c flags")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "c++ flags")
06.創(chuàng)建build文件夾并配置cmake
mkdir build && cd build
#sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=./build -D OPENCV_ENABLE_NONFREE=True -DCMAKE_TOOLCHAIN_FILE=../ax620a.toolchain.cmake -D WITH_FFMPEG=ON ../
# -D CMAKE_INSTALL_PREFIX指定編譯后的安裝路徑
# -D CMAKE_BUILD_TYPE=Release優(yōu)化編譯,刪除沒必要的調試信息等
# -D OPENCV_ENABLE_NONFREE開啟了非自由模塊的支持
# -DCMAKE_TOOLCHAIN_FILE指定了交叉編譯工具鏈文件的位置
# -D WITH_FFMPEG開啟了FFmpeg的支持
cmake -DCMAKE_TOOLCHAIN_FILE=../ax620a.toolchain.cmake -DCMAKE_INSTALL_PREFIX=$(pwd)/_install -DOPENCV_FORCE_3RDPARTY_BUILD=ON ../
07.編譯并安裝
#sudo make && make install
make -j$(nproc --ignore 1)
查看在build目錄下是否存在OpenCVConfig.cmake文件
2.拷貝SDK源碼到虛擬機
SDK源碼中帶有Tengine需要的動態(tài)庫,所以必須把SDK源碼拷貝到虛擬機
3. 拉取TIM-VX代碼
git clone https://github.com/VeriSilicon/TIM-VX.git
cd TIM-VX
git checkout 68b5acb
4.拉取Tengine源碼并配置
01拉取代碼
git clone https://github.com/OAID/Tengine.git tengine-lite
cd tengine-lite
02.將 TIM-VX 的 include 和 src 目錄復制到 Tengine-Lite 的 source/device/tim-vx 目錄下,以便于 CMake 查找文件完成編譯
cd tengine-lite
cp -rf ../TIM-VX/include ./source/device/tim-vx/
cp -rf ../TIM-VX/src ./source/device/tim-vx/
03.?準備 x86_64 3rdparty 依賴
準備的?
include
?目錄和 VIM3/VIM3L 本地編譯 NPU 最新版本相同,下載一份 perbuild SDK,將其中的?include
?文件夾復制到?3rdparty/tim-vx
?目錄。 依賴的 lib 目錄下的文件需要從前面 SDK 中解壓出來的?external/rknpu/drivers/linux-armhf-puma/usr/lib
?目錄提取。將該目錄下的文件全部(實際上不需要全部復制,F(xiàn)AQ 有文件列表)復制到?3rdparty/tim-vx/lib/aarch32
?文件夾下即可
wget -c https://github.com/VeriSilicon/TIMVX/releases/download/v1.1.28/aarch64_S905D3_D312513_A294074_R311680_T312233_O312045.tgz
tar zxvf aarch64_S905D3_D312513_A294074_R311680_T312233_O312045.tgz
mv aarch64_S905D3_D312513_A294074_R311680_T312233_O312045 prebuild-sdk-s905d3
cd tengine-lite
mkdir -p ./3rdparty/tim-vx/include
mkdir -p ./3rdparty/tim-vx/lib/aarch32
cp -rf ../prebuild-sdk-s905d3/include/* ./3rdparty/tim-vx/include/
cp -rf <rk_sdk_npu_lib>/* ./3rdparty/tim-vx/lib/aarch32/
#<rk_sdk_npu_lib>是external/rknpu/drivers/linux-armhf-puma/usr/lib?
?04.修改cmake文件
cd toolchains
vi arm-linux-gnueabihf.toolchain.cmake
?修改為絕對路徑
05.設置?OpenCV_DIR 環(huán)境變量
設置?OpenCV_DIR 環(huán)境變量是為了指定OpenCVConfig.cmake文件的路徑
exoprt OpenCV_DIR=/home/alientek/opencv-4.x/build
06.編譯
cd tengine-lite-root-dir
mkdir build && cd build
export PATH=<cross_tool_chain>/bin:$PATH
ln -s ../3rdparty/tim-vx/lib/aarch32/libOpenVX.so.1.2 ../3rdparty/tim-vx/lib/aarch32/libOpenVX.so
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/arm-linux-gnueabihf.toolchain.cmake -DTENGINE_ENABLE_TIM_VX=ON -DTENGINE_OPENMP=OFF ..
make -j`nproc` && make install
提取 install 目錄下的文件到板子上測試即可。需要注意的是,不設置OpenCV_DIR環(huán)境變量部分 OpenCV 依賴的 example 在這個過程中不會編譯,需要先準備好交叉編譯的OpenCV,并正確設置 OpenCV_DIR 到環(huán)境變量中方可打開這部分 example 的編譯。(咱們已經設置過了)可以看到,我們把所有組件都編譯出來了文章來源:http://www.zghlxwxcb.cn/news/detail-715990.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-715990.html
到了這里,關于Tengine 邊緣AI計算框架移植RV1126(包括opencv的交叉編譯)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!