一、装机
1.准备
主机、开发板、电源线、TypeC-USB线
2.准备固件
~下载链接:Firefly | 让科技更简单,让生活更智能
~下载完成后,如下红框为所需固件:
3. 安装驱动
~下载链接1:Firefly | 让科技更简单,让生活更智能
~解压后得到如图:
~先点击“驱动卸载”,然后成功后,再点击“驱动安装”,显示成功。
~下载链接2:Firefly | 让科技更简单,让生活更智能
~ 下载好后,如图,此时,下方还不是“Found One ADB Device”,继续接下来的步骤。
4.进入升级模式
~断开电源连接,用Type-C接线和电脑端连接,如图接口。
~按住Recovery键,保持
(此时注意,Recovery键是水平的黑色按键,和左侧黑色接口贴的很死,需要指甲伸进去然后按下。)
~此时接上电源,大概两秒之后,松开手即可。
5.开始升级
~此时进入3中下载的软件,按照如图三步走
~Firmware弹出的框,选择 2里面红框标识的文件。然后点击
~ 开始进行更新,右边白框会显示数据。
~等出现success时,升级结束。此时开发板亮起了蓝色指示灯。
6.adb进入板子
~先下载adb
~下载链接:Firefly | 让科技更简单,让生活更智能
~然后解压到C盘,目录地址为C:\adb
(注意,必须是C,要不还得自己配环境变量)
~键盘快捷键:windows键+R进入cmd界面
~输入
cd C:\adb
adb shell
~如下,即完成本步骤
二、测试前环境安装
1.下载toolkit包
GitHub - rockchip-linux/rknn-toolkit2
2.Linux系统安装miniconda
conda创建环境,并激活
3.安装开发环境
sudo apt-get install python3 python3-dev python3-pip
sudo apt-get install libxslt1-dev zlib1g zlib1g-dev libglib2.0-0 libsm6 \
libgl1-mesa-glx libprotobuf-dev gcc
然后打开下载的toolkit2包,进入package/
这一步记住根据python版本和linux系统选择合适的whl包:
sudo pip3 install rknn_toolkit2.xxxxxx.whl
检查安装是否成功,如图即为成功
4. 上机测试
通过typeC-usb线连接到linux系统,然后查看设备
adb devices
红框为当前连接设备ID号
5.连板调试启动
adb push Linux/rknn_server/${BOARD_ARCH}/usr/bin/ /usr/bin
adb push Linux/librknn_api/${BOARD_ARCH}/librknnrt.so /usr/lib目录
然后输入指令进入串口终端
adb shell
执行
chmod +x /vendor/bin/rknn_server
sync
reboot
此时启动成功
6.测试代码
import os
import urllib
import traceback
import time
import sys
import numpy as np
import cv2
from rknn.api import RKNN
ONNX_MODEL = 'yolov5m6_new.onnx'
RKNN_MODEL = 'yolov5m6_new.rknn'
QUANTIZE_ON = True #是否量化
batch = 16
channel = 3
height = 640
width = 640
output_names=['/24/m.0/Conv_output_0','/24/m.1/Conv_output_0','/24/m.2/Conv_output_0']
input_name = 'images'
DEVICE_ID = '0b269a5507adbdf4' #设备ID号
DATASET = './dataset.txt' #模型输入数据地址保存位置
if __name__ == '__main__':
# Create RKNN object
rknn = RKNN(verbose=True)
# pre-process config
print('--> Config model')
rknn.config(mean_values=[[0, 0, 0]], std_values=[[255, 255, 255]], target_platform='rk3588')
print('done')
# Load ONNX model
print('--> Loading model')
ret = rknn.load_onnx(model=ONNX_MODEL,
inputs=[input_name],
input_size_list=[[batch,channel,height,width]],
outputs= output_names)
if ret != 0:
print('Load model failed!')
exit(ret)
print('done')
# Build model
print('--> Building model')
img = np.random.randn(batch, height, width, 3)*255-128
img = img.astype(np.int8)
img_0 = np.random.randn(batch, 3, height, width)*255-128
img_0 = img_0.astype(np.int8)
np.save("img_0.npy", img_0)
ret = rknn.build(do_quantization=QUANTIZE_ON,dataset=DATASET)
if ret != 0:
print('Build model failed!')
exit(ret)
print('done')
# Export RKNN model
print('--> Export rknn model')
ret = rknn.export_rknn(RKNN_MODEL)
if ret != 0:
print('Export rknn model failed!')
exit(ret)
print('done')
# Init runtime environment
print('--> Init runtime environment')
#ret = rknn.init_runtime()
ret = rknn.init_runtime(target='rk3588', device_id=DEVICE_ID, perf_debug=True,eval_mem=True)
#ret = rknn.init_runtime(target='rk3588', )
if ret != 0:
print('Init runtime environment failed!')
exit(ret)
print('done')
# Set inputs
#img = cv2.imread(IMG_PATH)
# # Inference
# print('--> Running model')
# outputs = rknn.inference(inputs=[img])
# Inference
outputs = rknn.inference(inputs=[img], data_format="nhwc")
rknn.eval_perf(is_print=True)
rknn.release()
三、遇到问题怎么解决
安装、调试啥的问题,文档里面自取