1、首先使用USB连接设备和电脑设备OTG口电脑USB口必须是主板后置 USB 2.0可以换几个试试看可以识别到rk设备就行查看设备描述是ADB设备2、下载 ADB 工具去 Android 官方下载 SDK Platform-Tools for Windows里面有 adb.exehttps://developer.android.com/tools/releases/platform-tools解压之后运行代码进入系统adb shell板子现在跑的是 Linux而且是 Buildroot 系统不是 Android。 rk3566-buildroot 是主机名root... 说明通过 ADB 直接拿到了 root shell。3、现在查看当前这个3566系统的情况比如CPUNPU频率等等在shell运行uname -a cat /etc/os-release ls /etc/init.d df -h ip addr1基础状况分类项目当前状态 / 值说明硬件平台​芯片/架构RK3566 / aarch64​64 位 ARM Linux 平台系统基础​系统类型Linux​已确认非裸板或纯刷机模式发行/构建Buildroot 2021.11​轻量级嵌入式根文件系统内核版本Linux 5.10.160​构建于 2023-10-27访问与权限​登录方式ADB shell​已通过 ADB 进入系统当前用户root​拥有最高权限便于开发调试主机名rk3566-buildroot​Shell 提示符为rootrk3566-buildroot存储结构​根文件系统Overlay root​/挂载在 overlayroot容量约 27G只读系统分区/root-ro/dev/mmcblk0p7约 1.2G已用 61%用户数据分区/userdata​/dev/mmcblk0p8约 27G建议存放应用数据​OEM 分区/oem/dev/mmcblk0p6约 121M存放厂商配置临时目录/tmptmpfs重启后内容丢失网络状态​有线网口eth0 (未连接)​状态NO-CARRIER需检查网线Wi-Fiwlan0 (已启用)​仅获取到169.254.x.x链路本地地址未连接路由器​网络服务基础服务已就绪​存在 ntp、dnsmasq、dhcpcd 脚本系统服务​SSH 服务Dropbear (疑似启用)​/etc/init.d/S50dropbear存在可尝试netstat -tlnp确认图形环境Wayland/Weston​存在weston、seatd及 Chromium 启动脚本音频服务PulseAudio​/etc/init.d/S50pulseaudio存在蓝牙支持​/etc/init.d/S40bluetooth存在Wi-Fi 管理自动加载脚本​S36load_all_wifi_modules、S80wifireconnect存储介质​设备类型eMMC/SD (mmc)​分区为/dev/mmcblk0pX2硬件状况分类项目当前状态说明SoC​芯片型号RK3566​系统主机名和构建配置均指向 RK3566CPU​架构aarch64 (ARM 64-bit)​64 位 ARM核心数4 核​在线核心 0-3型号ARM Cortex-A55​低功耗高能效核心最高频率1800 MHz​CPU max MHz: 1800.0000最低频率408 MHz​CPU min MHz: 408.0000当前频率1416 MHz​cpu0 当前频率 1416000 KHz调频策略schedutil​当前 governor按调度负载动态调频NPU​状态存在​/sys/class/devfreq/fde40000.npu当前频率600 MHz​600000000 Hz最高频率900 MHz​900000000 HzGPU​状态存在​/sys/class/devfreq/fde60000.gpu设备节点/dev/mali0、/dev/dri​图形/GPU 驱动节点已暴露当前频率200 MHz​200000000 Hz空闲态最高频率800 MHz​800000000 HzDDR​当前频率324 MHz​dmc 当前 324000000 Hz最高频率1056 MHz​1056000000 HzVENC​视频编码器存在​fdf40000.rkvenc当前频率0 MHz​当前空闲或未启用最高频率400 MHz​400000000 HzVDEC​视频解码器存在​fdf80200.rkvdec当前频率0 MHz​当前空闲或未启用最高频率400 MHz​400000000 Hz内存​总内存约 2 GB​MemTotal: 2006876 kB当前可用约 1.8 GB​MemAvailable: 1867812 kBSwap无​Swap: 0B4、rk模型 需要重新转换RK3566 和 RK3588 的 RKNN 模型不通用。兼容组平台组内模型互通Group A​RK3566、RK3568✅ 相互兼容Group B​RK3588、RK3588S✅ 相互兼容Group C​RV1103、RV1106✅ 相互兼容转换的流程基本上与3588通用一套流程转换模型保存face_rc/board_cpp_3566/models/yolov8n-face-640-b1-int8-hybrid-split-kptconf-rk3566.rknn 4.4Madaface_ir18_112-rk3566.rknn 46Madaface_ir50_webface4m_112-rk3566.rknn 84M5、一步步将构建最小系统c程序并移动到3566上进行测试先抄最小骨架用 face_rc/tools/rknn_run_benchmark.cpp 做 tools/rknn_smoke.cpp只保留 rknn_init - query - set input - rknn_run - outputs_get。第一轮先测 models/adaface_ir18_112-rk3566.rknn再测 models/yolov8n-face-640-b1-int8-hybrid-split-kptconf-rk3566.rknn。成功标准就是 rknn_init 和一次推理都返回 0能打印 input/output shape 和 dtype。core_mask 先用 RKNN_NPU_CORE_AUTO 或 CORE_0不要直接复用 face_rc/tools/rknn_capi_parallel.cpp 里的三核并行。face_rc/board_cpp_3566 第一版只放这些东西README.mdmodels/tools/rknn_smoke.cpptools/build_smoke.shrun_smoke.sh第二步再加单张 JPEG 输入第三步才加摄像头最后才补 tracker、OpenCL、WebUI。最小闭环系统将最小系统的代码转移到3566上面adb devices adb push C:\Users\bo.he_sx\Desktop\python\code\MeetEye\MeetEye_3566 /userdata/ cd userdata/MeetEye_3566/board_cpp_3566 bash build.sh bash run_smoke.sh bash run_smoke.sh --model models/yolov8n-face-640-b1-int8-hybrid-split-kptconf-rk3566.rknn这时候报错No rknn_api.h found.rootrk3566-buildroot:/userdata/MeetEye_3566/board_cpp_3566# bash build.shbuild.sh: line 63: g: command not found没有g说明板端不能编译只能在本地进行交叉编译之后传到板端进行运行。6、服务器端交叉编译装交叉工具链并交叉编译sudo apt update sudo apt install g-aarch64-linux-gnu command -v aarch64-linux-gnu-g (YOLOPY10)heboaispeech-MS-7D14:~/code/MeetEye$ command -v aarch64-linux-gnu-g /usr/bin/aarch64-linux-gnu-g (YOLOPY10)heboaispeech-MS-7D14:~/code/MeetEye$ TARGET_ARCHaarch64 CXXaarch64-linux-gnu-g bash face_rc/board_cpp_3566/build.sh built: /home/hebo/code/MeetEye/face_rc/board_cpp_3566/bin/rknn_smoke include dir: /home/hebo/code/MeetEye/face_rc/board_cpp_3566/tools/rknn/include runtime lib source: /home/hebo/code/MeetEye/face_rc/board_cpp_3566/../../RKSDK/rknn-toolkit2/rknpu2/runtime/Linux/librknn_api/aarch64/librknnrt.so交叉编译之后移动到板端运行adb push C:\Users\bo.he_sx\Desktop\python\code\MeetEye\MeetEye_3566\board_cpp_3566\run_smoke.sh /userdata/MeetEye_3566/board_cpp_3566/ cd /userdata/MeetEye_3566/board_cpp_3566 chmod x run_smoke.sh bin/rknn_smoke ./run_smoke.sh rknn_api/rknnrt version: 2.3.2 (429f97ae6b2025-04-09T09:09:27), driver version: 0.9.0 input num1 output num4 input index0 nameimages dims[1,640,640,3] elems1228800 size1228800 fmtNHWC typeint8 qnt2 zp-128 scale0.003922 output index0 name/model.22/Mul_2_output_0 dims[1,4,8400] elems33600 size33600 fmtUNDEFINED typeint8 qnt2 zp-108 scale2.721911 output index1 name/model.22/Sigmoid_output_0 dims[1,1,8400] elems8400 size8400 fmtUNDEFINED typeint8 qnt2 zp-128 scale0.003304 output index2 name/model.22/Mul_4_output_0 dims[1,5,2,8400] elems84000 size168000 fmtNCHW typefloat16 qnt2 zp0 scale1.000000 output index3 name/model.22/Sigmoid_1_output_0 dims[1,5,1,8400] elems42000 size84000 fmtNCHW typefloat16 qnt2 zp0 scale1.000000 rknn_set_core_mask(0) failed: -13rknn_set_core_mask(0) 在这块 RK3566 上返回 -13而Rockchip 自己的文档也写了core_mask 主要是给 RK3588 这类多核 NPU 用的。RK3566这版已经改成默认不再调用 rknn_set_core_mask直接走默认路径。重新移动并运行尝试adb push “C:\Users\bo.he_sx\Desktop\python\code\MeetEye\MeetEye_3566\board_cpp_3566\bin/rknn_smoke” /userdata/MeetEye_3566/board_cpp_3566/bin/ MeetEye_3566/board_cpp_3566/bin/rknn_smoke66/board_cpp_3566# chmod x /userdata/ rootrk3566-buildroot:/userdata/MeetEye_3566/board_cpp_3566# ./run_smoke.sh rknn_api/rknnrt version: 2.3.2(429f97ae6b2025-04-09T09:09:27), driver version: 0.9.0 input num1 output num4 input index0 nameimages dims[1,640,640,3] elems1228800 size1228800 fmtNHWC typeint8 qnt2 zp-128 scale0.003922 output index0 name/model.22/Mul_2_output_0 dims[1,4,8400] elems33600 size33600 fmtUNDEFINED typeint8 qnt2 zp-108 scale2.721911 output index1 name/model.22/Sigmoid_output_0 dims[1,1,8400] elems8400 size8400 fmtUNDEFINED typeint8 qnt2 zp-128 scale0.003304 output index2 name/model.22/Mul_4_output_0 dims[1,5,2,8400] elems84000 size168000 fmtNCHW typefloat16 qnt2 zp0 scale1.000000 output index3 name/model.22/Sigmoid_1_output_0 dims[1,5,1,8400] elems42000 size84000 fmtNCHW typefloat16 qnt2 zp0 scale1.000000 skip rknn_set_core_mask on RK3566 default path loop 0: 79.893 ms速度太慢了不是很符合RK官方的口径看看是不是频率的问题rootrk3566-buildroot:/userdata/MeetEye_3566/board_cpp_3566# ./run_smoke.sh rknn_api/rknnrt version: 2.3.2 (429f97ae6b2025-04-09T09:09:27), driver version: 0.9.0 input num1 output num4 input index0 nameimages dims[1,640,640,3] elems1228800 size1228800 fmtNHWC typeint8 qnt2 zp-128 scale0.003922 output index0 name/model.22/Mul_2_output_0 dims[1,4,8400] elems33600 size33600 fmtUNDEFINED typeint8 qnt2 zp-108 scale2.721911跟官方口径几乎差不多将频率设置文件移动到板端chmod x scaling_frequency.sh./scaling_frequency.sh -c rk3566将板端的NPU,CPU,DDR等全部设置为官方频率口径cy.sh -c rk3566ldroot:/userdata/MeetEye_3566/board_cpp_3566# ./scaling_frequencyTry setting frequency for rk3566Setting strategy as 3NPU setting to 1000000000CPU setting to 1800000DDR seting to 1056000000CPU: seting frequencytry set 1800000query 1800000Seting SuccessNPU: seting frequencytry set 1000000000query 900000000Seting FailedDDR: seting frequencytry set 1056000000query 1056000000Seting Success7、MPP硬解3566技术手册明确说明支持MJPEG硬解码只是解码的格式为YUV420SP (NV12)需要再调用 RK3566 自带的 RGA 硬件把 YUV420SP 快速转换成 RGB888/BGRA