Please enable javascript, or click here to visit my ecommerce web site powered by Shopify.
Jump to: navigation, search


< Rock3‎ | dev
    ROCK 3 >  Development >  NPU Run Test


SoC RK3568 is equipped with 0.8TOPS NPU. This tutorial shows how to make the NPU run on ROCK 3 A, and provides an example and test results.

Hardware supported

  • ROCK 3A
  • ROCK 3B
  • Radxa CM3 IO Board
  • Radxa E23
  • Radxa E25

Now follow me to make the NPU run.

Setup steps

Step 1: Get system image

You can get system image from ROCK 3 A System images.

Here we are concerned about the kernel version. Make sure that kernel is at least 4.19.193-25-rockchip.

root@rock-3a:/home/rock# uname -r

If not, try to upgrade the kernel via the following commands.

Uncomment "deb buster main" in file /etc/apt/sources.list.d/apt-radxa-com.list. Here I use debian buster image. So its content is

deb buster main
deb buster main

If you use ubuntu focal image, It should be like this

deb focal main
deb focal main

After saving that file, now we install the latest kernel packages.

root@rock-3a:/home/rock# apt update
root@rock-3a:/home/rock# apt install -y linux-4.19-rock-3-latest

Then reboot the device. Use command 'uname -a' to check the kernel verison again.

Step 2: Get Prebuilt RKNN2 SSD DEMO

Install curl tool.

root@rock-3a:/home/rock# apt update
root@rock-3a:/home/rock# apt install -y curl

Get package, check the md5 of file. It should be b03a1b3c236b83def933090c846d24f5. And extract it.

root@rock-3a:/home/rock# curl > rknn_ssd_demo_linux_20211228.tar.gz
root@rock-3a:/home/rock# md5sum rknn_ssd_demo_linux_20211228.tar.gz
b03a1b3c236b83def933090c846d24f5  rknn_ssd_demo_linux_20211228.tar.gz
root@rock-3a:/home/rock# tar zxvf rknn_ssd_demo_linux_20211228.tar.gz

Check RKNN runtime version. Here it is 1.1.0.

root@rock-3a:/home/rock# cd rknn_ssd_demo_Linux
root@rock-3a:/home/rock/rknn_ssd_demo_Linux# strings lib/ | grep version
librknnrt version: 1.1.0 (8a9d6f66@2021-08-19T15:09:11)
rknn_query, info_len(%d) != sizeof(rknn_sdk_version)(%d)!
RKNN Driver Information: version: %d.%d.%d
Mismatch driver version, %s requires driver version >= %d.%d.%d, but you have driver version: %d.%d.%d which is incompatible!
Current driver version: %d.%d.%d, recommend to upgrade the driver to the new version: >= %d.%d.%d
wrong version
Invalid RKNN model version 
RKNN Model version: %d.%d.%d not match with rknn runtime version: %d.%d.%d
RKNN Model Information: version: %d, toolkit version: %s, target platform: %s, framework name: %s, framework layout: %s
Generated from compiler version: 
(compiler version: 
incompatible version


These are test commands and result.

root@rock-3a:/home/rock/rknn_ssd_demo_Linux# export LD_LIBRARY_PATH=./lib/
root@rock-3a:/home/rock/rknn_ssd_demo_Linux# ./rknn_ssd_demo model/ssd_inception_v2.rknn model/road.bmp
Loading model ...
rknn_init ...
model input num: 1, output num: 2
input tensors:
index=0 name=Preprocessor/sub:0 n_dims=4 dims=[1 300 300 3] n_elems=270000 size=270000 fmt=0 type=3 qnt_type=2 fl=0 zp=0 scale=0.007812
output tensors:
index=0 name=concat:0 n_dims=4 dims=[1 1917 1 4] n_elems=7668 size=30672 fmt=0 type=0 qnt_type=2 fl=0 zp=53 scale=0.089455
index=1 name=concat_1:0 n_dims=4 dims=[1 1917 91 1] n_elems=174447 size=697788 fmt=0 type=0 qnt_type=2 fl=0 zp=53 scale=0.143593
ssd - loadLabelName ./model/coco_labels_list.txt
person @ (13 125 59 212) 0.984696
person @ (110 119 152 197) 0.969119
bicycle @ (171 165 278 234) 0.969119
person @ (206 113 256 216) 0.964519
car @ (146 133 216 170) 0.959264
person @ (49 133 58 156) 0.606060
person @ (83 134 92 158) 0.606060
person @ (96 135 106 162) 0.464163

You would also get the output image, out.jpg, under /home/rock/rknn_ssd_demo_Linux directory.


Step4: Run Your Own Built RKNPU Demo

You can get more rknpu demo from RK356X NPU SDK.


Check ROCK 3 FAQs first, if it doesn't help, start a new post on the forum