1. 首先要在虛擬機上創(chuàng)建一個共享路徑
a) vi /etc/exports
b) 在文件最后追加: share_dir(如/media/new_disk) *(rw,sync,no_subtree_check)
2. 安裝交叉編譯環(huán)境
在攝像頭上跑程序需要安裝海思的sdk:Hi3516CV500_SDK_V2.0.0.3.tgz和交叉編譯環(huán)境arm-himix200-linux.tgz,分別上傳至/media/new_disk/package。安裝包鏈接
(1) sdk解壓之后,在/media/new_disk/package/Hi3516CV500_SDK_V2.0.0.3/package下面解壓mpp_smp_linux.tgz, 最后將模型工程里所有CMakeList.txt的sdk路徑替換為/media/new_disk/package/Hi3516CV500_SDK_V2.0.0.3/package/mpp_smp_linux.tgz
(2)安裝arm-himix200-linux
a)解壓arm-himix200-linux.tgz,
b) 然后根據(jù)README.md文件提示安裝:
source ./arm-himix200-linux.install install_dir
注意 :安裝路徑install_dir為虛擬機絕對路徑
c) 設置模型工程在CLion中的環(huán)境變量
setting-Build,Execution,Deployment-CMake-Environment: LC_ALL=C
3. 制作運行工程所需文件
a) 將工程放到共享路徑/media/new_disk下
b) 在虛擬機上線編譯算法部分,生成libjdagralg.so
c) 編輯工程生成可執(zhí)行文件(如alg_test)
d) 在虛擬機共享路徑下創(chuàng)建test文件夾,結(jié)構(gòu)如下:
|-- test
|-- lib
|-- libjdagralg.so
|-- models(此路徑下存放模型文件及配置文件)
|-- alg_test
|-- gdb_himix200(忘記如何得到和具體作用了。。。)
|-- start.sh(為執(zhí)行腳本)
其中start.sh具體內(nèi)容如下:
#export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/tdfs/lib:./lib
export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:./lib
#./gdb16 camera_app
#./gdb_himix200 camera_app
#./gdb-16c-v500 camera_app
#./camera_app
./alg_test # 測試命令
#./gdb_himix200 alg_test # debug命令
4. 起nfs服務
sudo /etc/init.d/nfs-kernel-server restart
5. 連接攝像頭
telnet 攝像頭ip(如192.168.100.2)
6. 將共享路徑掛載到攝像頭
mkdir camera_dir(如/root/mnt/zwm)
mount -t nfs -o nolock 192.168.1.200:virtual_dir(如/media/new_disk) camera_dir
7. 在攝像頭端跑模型
a) 進入到攝像頭掛載的test路徑下
b) 執(zhí)行./start.sh即可
8. 注意事項:
(1) 需保證所有用到的文件及路徑是有權(quán)限的?。?!包括圖片、so和可執(zhí)行文件!
(2) 由于交叉編譯包和sdk比較大,虛擬機空間不夠,進行了擴容,具體見:
VM虛擬機擴展硬盤容量
(3)
Q: 編譯工程時,報錯not found arm-himix200-linux-g++
A: sudo apt install lib32z1-dev