Linux SDK入门指南

准备工作

本文需要使用以下设备(或其代替品):

  • ROC-RK3399-PC
  • TF卡
    • 建议使用8GB及以上的容量
  • 串口或支持HDMI的显示器
    • 用于连接开发板进行操作,串口连接可参考 - 串口调试
  • 键盘和鼠标
    • 如果使用串口则不需要。
  • 电源
    • 15V/3A,45W 电源适配器
  • 神经网络计算卡
    • 本文使用Firefly开发板配套的NCC S1模块或USB Dongle模块,对于其它模块不适用。
  • 可上网的电脑
    • 可为Windows或Linux系统。如需要进行交叉编译推荐使用Ubuntu 16.04,Windows系统不适用,其它Linux分支请自行测试。

其操作人员需具备Linux系统的基本使用技能,同时需购买AI资料U盘

环境配置

电脑操作

此小节的操作在电脑中。

1. 烧写固件

ROC-RK3399-PC测试的环境为Ubuntu 16.04,包含完整编译及运行环境的系统可从这里下载,或从购买的AI资料U盘中获取。

烧写完SD卡后,可以先上电测试一下是否烧写成功。

2. 交叉编译环境配置(可选)

这里以Ubuntu 16.04为例,其它系统环境请自行测试。

交叉编译的工具链推荐使用Linaro aarch64 7.2.1及更高版本,7.2.1下载地址:https://releases.linaro.org/components/toolchain/binaries/7.2-2017.11/aarch64-linux-gnu/

在编译前请将aarch64 gcc添加到环境变量PATH中,示例如下:

ubunut16.04:~$ sudo tar xJf gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu.tar.xz -C /opt
ubunut16.04:~$ export PATH=/opt/gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu/bin:$PATH
ubunut16.04:~$ aarch64-linux-gnu-g++ -v

从AI资料U盘中复制并解压GTISDK_Linux_aarch64_v3-1-2a.tar.gz,假设SDK复制到用户主目录下,解压命令参考操作如下:

ubunut16.04:~$ tar zxvf GTISDK_Linux_aarch64_v3-1-2a.tar.gz -C ~/

开发板操作

请将烧写了固件的SD卡插入ROC-RK3399-PC并连接鼠标和键盘,然后上电开机。将AI资料U盘中的GTISDK_Linux_aarch64_v3-1-2a.tar.gz复制到开发板中,并解压。 假设SDK复制到用户主目录下,如下为解压参考操作:

firefly@firefly:~$ tar zxvf GTISDK_Linux_aarch64_v3-1-2a.tar.gz -C ~/

这里解压GTISDK到/home/firefly/目录即firefly用户主目录下。

编译及运行

交叉编译(可选)

进行交叉编译前请先配置环境 - 交叉编译环境配置

进行交叉编译首先进入GTISDK目录下,然后导入编译需要的环境编译,其操作如下:

ubunut16.04:~$ cd ~/GTISDK
ubunut16.04:~GTISDK$ source Build/aarch64_cross.env

CROSS COMPILE for aarch64:
CPU_ARCH   =  aarch64
OS_TYPE    =  Linux
GTI_CC     =  aarch64-linux-gnu-g++

紧接着就可以进行编译了,最终生成的可执行文件为liteSample,在Samples/Sample目录下。编译命令如下:

ubunut16.04:~$ make -C Samples/Sample

将liteSample复制进ROC-RK3399-PC中即可进行运行测试,参考如下:

ubunut16.04:~$ scp Samples/Sample/liteSample firefly@<board_ip>:GTISDK/Bin/Linux/aarch64/

其中<board_ip>为开发板的ip地址,使用此方法请确认开发板与电脑同一网段。

在开发板中编译

在配置好的Ubuntu中编译很简单,操作如下:

firefly@firefly:~$ cd ~/GTISDK
firefly@firefly:~GTISDK$ make -C Samples/Sample
firefly@firefly:~GTISDK$ cp Samples/Sample/liteSample Bin/Linux/aarch64/

运行

liteSample的运行需要环境变量GTISDKPATH,运行前请先进行设置。示例如下:

firefly@firefly:~$ export GTISDKPATH=/home/firefly/GTISDK
firefly@firefly:~$ cd GTISDK/Bin/Linux/aarch64/
firefly@firefly:~GTISDK/Bin/Linux/aarch64$ ./liteSample

如果神经网络计算卡是NCC S1的请修改data/Models/gti2801/gnet2_3/cnn_3/userinput.txt中的/dev/sg0/dev/mmcblk1,同时请在root用户下运行liteSample,使用sudo ./liteSample,会出现找不到GTISDKPATH的情况。

liteSample默认使用SDK下data/Image_Lite/中的数据,如果想使用其它图片数据需要先对图片进行转换。图片转换工具可在 SDK的Tools/image_tool/中找到。工具依赖python2.x和opencv,可以在开发板或电脑中使用。以下安装操作在开发板和电脑Ubuntu 16.04中通用:

firefly@firefly:~$ sudo apt-get install python python-opencv

image_tool的使用方法如下:

firefly@firefly:~/GTISDK/Tools/image_tool$ python2 gtiConvtImage2BGR_plannar.py Beagle-On-White.jpg 224 Beagle-On-White.bin

其转换结果为Beagle-On-White.bin,使用liteSample进行分类可执行以下操作:

firefly@firefly:~/GTISDK/Tools/image_tool$ cd ~/GTISDK/Bin/Linux/aarch64
firefly@firefly:~/GTISDK/Bin/Linux/aarch64$ ./liteSample -i ../../../Tools/image_tool/Beagle-On-White.bin

2018-11-16的固件默认带有使用摄像头获取图片的预编译例程,运行此例程需要图形界面和摄像头,请连接显示器和摄像头后在开发板中操作。 可通过以下操作进行运行测试:

firefly@firefly:~$ cd ~/ncc_demo
firefly@firefly:~/ncc_demo$ sudo ./run.sh 1

2019-01-27的固件内置示例为SSD,通过以下操作进行运行测试:

firefly@firefly:~$ cd ~/ncc_demo/ssd
firefly@firefly:~/ncc_demo/ssd$ sudo ./ssdSample