6TOPS 主流为瑞芯微 RK3588S/RK3576、ARM64 架构、Linux5.10 内核,预装 Debian/Ubuntu22.04,NPU INT8 算力 6TOPS,本教程分环境准备→系统配置→NPU-SDK 部署→模型转换→C/Python 二次开发→系统定制→工程落地7 大模块,适配边缘 AI 视觉、算法二次开发。

一、前期硬件 & PC 开发环境准备
1.1 硬件清单
- 6TOPS 算力盒子(RK3588/RK3576,千兆网、MIPI/USB 摄像头、eMMC 存储)
- PC:Ubuntu20.04/22.04(X86_64,模型转换用)、网线、USB 转 TTL 串口(调试内核)、12V3A 电源、SD 卡(系统烧录备选)
1.2 PC 端 X86 开发环境(模型转换:RKNN-Toolkit2)
RKNN-Toolkit2 负责 PC 侧 PyTorch/ONNX→RKNN 模型量化转换,推荐 Python3.8~3.10
#1.安装Miniconda隔离环境
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh -b -p $HOME/miniconda3
echo 'export PATH="$HOME/miniconda3/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
#2.创建RKNN专用虚拟环境
conda create -n rknn_dev python=3.10 -y
conda activate rknn_dev
#3.安装系统依赖
sudo apt install -y libxslt1-dev zlib1g zlib1g-dev libglib2.0-0 libsm6 libgl1-mesa-glx libprotobuf-dev gcc make cmake
#4.拉取RKNN-Toolkit2源码
git clone https://github.com/airockchip/rknn-toolkit2.git --depth 1
cd rknn-toolkit2/package
pip install rknn_toolkit2-*.whl
验证:python -c "import rknn"无报错即安装成功。
二、算力盒子 Linux 系统初始化(板端操作)
2.1 登录系统(3 种方式)
1. SSH 远程(推荐):盒子接网线,路由器查 IP,ssh root@192.168.1.XX,默认账号root/root或rock/rock
2. 串口调试:USB 转 TTL 接 TX/RX/GND,波特率 115200
3. HDMI + 键鼠直连桌面系统
#查看CPU/NPU硬件信息(确认6TOPS芯片)
cat /proc/cpuinfo #ARMv8-A 4A76+4A55(RK3588)
cat /proc/rknpu/version #NPU固件版本,确认6TOPS驱动就绪
2.2 系统基础配置
#1.换源+更新系统(Ubuntu/Debian)
apt update && apt upgrade -y
#2.安装基础编译&图像处理依赖
apt install -y python3 python3-pip gcc g++ cmake libopencv-dev git vim build-essential
#3.配置静态IP(固定开发连接)
nano /etc/network/interfaces
#写入:
auto eth0
iface eth0 inet static
address 192.168.1.105
netmask 255.255.255.0
gateway 192.168.1.1
systemctl restart networking
三、板端 NPU 运行时 RKNPU2 部署(核心!启用 6TOPS 硬件加速)
板端RKNPU2 = 驱动 galcore.ko + [librknnrt.so](librknnrt.so) 运行时库,是调用 NPU 算力必备,两种安装方式:
方式 1:一键脚本安装(新手首选 RK3588/RK3576 通用)
sudo curl https://raw.githubusercontent.com/Pelochus/ezrknpu/main/install.sh | sudo bash
sudo reboot
#重启后验证NPU
cd /usr/share/rknn-toolkit-lite2/examples/resnet18
python3 test.py #输出Test passed!即NPU6TOPS可用
方式 2:手动部署(定制开发)
1. 从厂商 SDK 获取rknpu2_linux_aarch64.tar.gz
tar -zxvf rknpu2_linux_aarch64.tar.gz
cd rknpu2/runtime/RK3588/Linux/librknn_api/aarch64
sudo cp librknnrt.so /usr/lib/
#加载NPU内核驱动galcore.ko
insmod ./driver/galcore.ko
#配置库环境变量
echo "export LD_LIBRARY_PATH=/usr/lib:$LD_LIBRARY_PATH" >> /etc/profile
source /etc/profile
区分:PC=RKNN-Toolkit2(模型转换)、板端 = RKNN-Lite2/RKNNRT(推理运行)
四、AI 模型二次开发:从 PT→RKNN→板端部署(以 YOLOv8 为例)
4.1 PC 端:YOLOv8 模型导出 & 量化转 RKNN(利用 6TOPS INT8 量化)
#PC(rknn_dev环境)代码 convert_yolo.py
from ultralytics import YOLO
from rknn.api import RKNN
#1.导出ONNX
model = YOLO("yolov8s.pt")
model.export(format="onnx", opset=12, simplify=True)
#2.RKNN量化转换(INT8适配6TOPS最优算力)
rknn = RKNN()
rknn.config(mean_values=[[0,0,0]], std_values=[[255,255,255]], target_platform="rk3588")
rknn.load_onnx("yolov8s.onnx")
rknn.build(do_quantization=True, dataset="./calib.txt") #校准数据集
rknn.export_rknn("yolov8s_6tops.rknn")
rknn.release()
执行python convert_yolo.py,生成yolov8s_6tops.rknn,通过 scp 传到算力盒子:
#PC推送模型到盒子
scp yolov8s_6tops.rknn root@192.168.1.105:/root/work/
4.2 板端 Python 二次开发推理(快速验证)
#box_infer.py 板端运行
from rknnlite.api import RKNNLite
import cv2
#初始化RKNN,绑定6TOPS NPU
rknn_lite = RKNNLite()
rknn_lite.load_rknn("yolov8s_6tops.rknn")
rknn_lite.init_runtime(core_mask=RKNNLite.NPU_CORE_0) #启用NPU硬件
#图片推理
img = cv2.imread("test.jpg")
output = rknn_lite.inference(inputs=[img])
#后处理画框(YOLO解析)自行封装
rknn_lite.release()
运行:python3 box_infer.py,实测 RK3588 (6TOPS) YOLOv8s35~45FPS。
4.3 板端 C++ 工程二次开发(量产落地)
1. 工程 CMakeLists.txt
cmake_minimum_required(VERSION 3.14)
project(rknn_yolo_cpp)
set(CMAKE_CXX_STANDARD 11)
#引入RKNN运行时头文件&库
include_directories(/usr/include/rknn/)
link_directories(/usr/lib/)
find_package(OpenCV REQUIRED)
add_executable(yolo_infer main.cpp)
target_link_libraries(yolo_infer rknnrt ${OpenCV_LIBS})
2. 编译运行
mkdir build && cd build
cmake .. && make -j4
./yolo_infer
C++ 适合产品封装、后台服务,Python 适合算法快速迭代调试。
五、Linux 系统定制二次开发(内核 / 文件系统裁剪)
5.1 内核定制(添加自定义外设驱动:RS485、GPIO、USB 摄像头)
1. 从瑞芯微开源仓库拉取 RK3588 Linux SDK:
git clone https://github.com/rockchip-linux/kernel.git -b linux-5.10
cd kernel
#打开配置
make ARCH=arm64 rockchip_linux_defconfig menuconfig
#勾选自定义驱动、NPU配置、摄像头驱动,保存.config
#交叉编译(安装aarch64交叉工具链)
sudo apt install aarch64-linux-gnu-gcc
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image dtbs -j8
2. 生成新内核镜像,用 RKDevTool 烧录更新盒子内核。
5.2 根文件系统裁剪(Buildroot 精简系统,量产固件)
git clone https://github.com/buildroot/buildroot.git
cd buildroot
make rockchip_rk3588_defconfig
#裁剪无用软件、预装RKNN依赖、自启动程序
make menuconfig
make -j16 #生成rootfs.img
可定制开机自启 AI 推理程序、禁用多余服务、缩小固件体积。
六、应用层高级二次开发
6.1 摄像头实时视频流推理(USB/MIPI)
#启用USB摄像头/dev/video0,OpenCV+RKNN实时推流
#安装流媒体依赖
apt install libv4l-dev ffmpeg
#修改代码:cv2.VideoCapture(0)读取摄像头循环推理
6.2 Docker 容器化部署(多算法隔离)
#盒子安装Docker
apt install docker.io
#打包推理环境,一键部署算法
docker build -t yolov8_rk3588:v1 .
docker run --privileged --device=/dev/video0:/dev/video0 -it yolov8_rk3588:v1
6.3 自启动配置(上电自动运行 AI 程序)
#systemd配置开机服务
nano /etc/systemd/system/ai_infer.service
[Unit]
Description=6TOPS AI Inference Service
[Service]
ExecStart=/usr/bin/python3 /root/work/box_infer.py
Restart=always
[Install]
WantedBy=multi-user.target
#启用开机自启
systemctl enable ai_infer && systemctl start ai_infer
七、常见开发踩坑 & 优化 6TOPS 算力
1. NPU 调用失败:lsmod | grep galcore无输出→重新 insmod 驱动,内核未开启 NPU 配置重编内核
2. 推理帧率低:core_mask=NPU_CORE_ALL开启全部 NPU 核心(RK3588 三 NPU 核合计 6TOPS)、模型 INT8 量化、关闭系统后台占用
3. 库找不到:echo $LD_LIBRARY_PATH确认 [librknnrt.so](librknnrt.so) 路径写入环境变量
4. 模型量化精度掉点:补充校准数据集(≥200 张实景图片)优化量化参数
八、开发资源汇总
1. RKNN 官方文档:https://github.com/airockchip/rknn-toolkit2
2. RK3588 Linux SDK:瑞芯微开源社区
3. 示例代码:rknn-toolkit2/examples(分类 / 检测 / 分割全套 Demo)
需求留言: