操作系统:ubunu18.04
EAIDK-610系统:Android8.1
1.下载源文件
从https://github.com/OAID/Tengine.git 下载Tengine的源文件
fu@ubuntu:~/openailab$git clone --recurse-submodules https://github.com/OAID/tengine/
再创建一个文件夹。
fu@ubuntu:~/openailab$mkdir eaidk-610-android-tengine
fu@ubuntu:~/openailab$cd eaidk-610-android-tengine
Download Android ndk, OpenBLAS, OpenCV, Protobuf and ComputeLibrary
从 Tengine_Android_build (password:wtcz)下载。
将其放在~/openailab/eaidk-610-android-tengine/目录下
fu@ubuntu:~/openailab/eaidk-610-android-tengine$unzip android-ndk-r16-linux-x86_64.zip
fu@ubuntu:~/openailab/eaidk-610-android-tengine$tar -zxvf Openblas_0220_android.tgz
fu@ubuntu:~/openailab/eaidk-610-android-tengine$ ls
android-ndk-r16b Openblas_0220_android
修改路径配置
修改 example_config/arm_android_cross.config
fu@ubuntu:~/openailab/Tengine$ vim example_config/arm_android_cross.config
如下:
ANDROID_NDK=~/openailab/eaidk-610-android-tengine/android-ndk-r16b
PROTOBUF_LIB_PATH=~/openailab/protobuf/arm64_lib
PROTOBUF_INCLUDE_PATH=~/openailab/protobuf/include
#ACL_ROOT=/acl/path
OPEN_BLAS=n
2.生成Tengine
fu@ubuntu:~/openailab/Tengine$ bash android_build.sh example_config/arm_android_cross.config
如下图所示就表示成功生成Tengine
fu@ubuntu:~/openailab/Tengine$ ./android_pack.sh example_config/arm_android_cross.config
经过上述步骤,Tengine目录下会出现一个android_pack的目录,之后我们的文件都会放入此目录下。
fu@ubuntu:~/openailab/Tengine$ cp -rf ./models/ ./android_pack
fu@ubuntu:~/openailab/Tengine$ cp -rf ./install/benchmark ./android_pack
fu@ubuntu:~/openailab/Tengine$ cp tests android_pack/
3.连接开发板
然后我们需要安装android-tools-adb ,有了它我们可以经由网络连上开发板。
fu@ubuntu:~/openailab/Tengine$ sudo apt-get install android-tools-adb
然后将开发板接入和Ubuntu同一个局域网,在Ubuntu终端下就可以使用adb工具连上开发板了。方法如下:
fu@ubuntu:~/openailab/Tengine$ adb connect 10.11.5.89
列举一下当前连上的设备。可以看到开发板已经连上了。
fu@ubuntu:~/openailab/Tengine$ adb devices
List of devices attached
10.11.5.89:5555 device
把我们刚才打包的文件夹推送到开发板上。
fu@ubuntu:~/openailab/Tengine$ adb push android_pack /data/local/tmp
若出现:failed to copy 'C:\Users\frenc>adb push C:\test\tengine-master /data/local/tmp/openailab/': couldn't create file: Read-only file system
这种push出错,解决办法是
fu@ubuntu:~/openailab/Tengine$ adb shell mount -o remount,rw /data
fu@ubuntu:~/openailab/Tengine$ adb push android_pack /data/local/tmp
'adb remount' 将 '/system' 部分置于可写入的模式,默认情况下 '/system' 部分是只读模式的。pu
这个命令只适用于已被 root 的设备。
在将文件 push 到 '/system' 文件夹之前,必须先输入命令 'adb remount'。
'adb remount' 的作用相当于 'adb shell mount -o rw,remount,rw /system'。
此处我们只用将我们所需的目录改为可读可写模式即可。
4.测试
fu@ubuntu:~/openailab/Tengine$adb root
fu@ubuntu:~/openailab/Tengine$adb shell
fu@ubuntu:~/openailab/Tengine$cd /data/local/tmp/android_pack
rk3399:/data/local/tmp/android_pack # export LD_LIBRARY_PATH=.
rk3399:/data/local/tmp/android_pack # ./benchmark/bench_sqz
识别一只小猫,速度还是很快的。