當你拿到性能強大的RK3568核心板,是否曾對那顆標稱1Tops的NPU感到無從下手?特別是在Android系統上,如何繞過復雜的環境配置,快速部署AI模型?本文將拋開理論,直擊實戰,手把手帶你利用迅為提供的完整資料,在Android系統上點亮NPU,讓你的AI應用跑得更快、更穩。

為什么選擇迅為的官方工具鏈?
RK3568的NPU確實強大,但對許多開發者而言,它就像一座“鎖住的金礦”。從零開始交叉編譯、解決依賴、適配系統……這個過程不僅繁瑣,還極易因版本問題無法發揮硬件最佳性能。
迅為提供的RKNPU2工具鏈,其核心價值在于:
·開箱即用:工具已預編譯,與Android系統內核、驅動深度適配,省去大量環境配置時間。
·性能最優:針對迅為硬件進行了底層參數調優,確保NPU算力被高效利用。
·生態完整:從模型轉換、示例代碼到部署指南,提供了詳情手冊。
接下來,我們將進入最核心的實戰環節。
讓NPU跑起來-在Android系統中使用NPU
下載rknpu2并拷貝到虛擬機Ubuntu,如下圖所示,RKNPU2提供了訪問
rk3568芯片NPU的高級接口。

下載地址為“iTOP-3568開發板\02_【iTOP-RK3568開發板】開發資料\11_NPU
使用配套資料\01_rknpu2工具”
Android平臺有倆種方式來調用RKNN API
第一種:AI應用直接鏈接RKNN SDK庫文件librknnrt.so
第二種:應用鏈接Android平臺HIDL實現的librknn_api_android.so,HIDL
是用于指定Android HAL和其用戶之間的接口的一種接口描述語言。
如果需要通過CTS/VTS測試(兼容性測試套件/供應商測試套件)的安卓設
備,可以使用基于Android平臺HIDL實現的RKNN API。
如果不需要通過CTS/VTS測試的安卓設備,建議直接使用librknnrt.so,這
樣對各個調用接口流程的鏈路更短,可以提供改好的性能。
對于使用Android HIDL實現的RKNN API的代碼位于RK356x Android系統
SDK的vendor/rockchip/hardware/interfaces/neuralnetworks目錄下。當編譯完
Android系統時,會生成一些NPU相關的庫,如下所示,但是對于應用只需要鏈
接使用librknn_api_android.so即可。
/system/lib/librknn_api_android.so
/system/lib/librknnhal_bridge.rockchip.so
/system/lib64/librknn_api_android.so
/system/lib64/librknnhal_bridge.rockchip.so
/vendor/lib64/rockchip.hardware.neuralnetworks@1.0.so
/vendor/lib64/rockchip.hardware.neuralnetworks@1.0-adapter-helper.so
/vendor/lib64/librknnrt.so
/vendor/lib64/hw/rockchip.hardware.neuralnetworks@1.0-impl.so
在RKNN SDK中提供了Android平臺的MobileNet圖像分類、SSD目標檢
測、YOLOv5目標檢測示例。這些Demo能夠為客戶基于RKNN SDK開發自己
的AI應用提供參考。在rknpu2/examples中還有很多例子,如下圖所示:

下面以rknn_yolov5_demo在RK3568 Android 64位平臺上運行為例,來講
解如何快速上手運行。整體思路分為三步:
1在虛擬機Ubuntu18.04上交叉編譯demo程序rknn_yolov5_demo(demo
已經默認是rknn,無需進行模型轉換)
2部署到iTOP-RK3568開發板
3在開發板上運行demo
3.2.1 下載編譯所需工具
1 Android系統編譯需要下載NDK,Android NDK下載地址為如下所示:
https://developer.android.google.cn/ndk/downloads/older_releases#ndk-17c-download
s
將下載地址復制到瀏覽器,并打開網頁,如下圖所示:

2點擊“我同意這些條款”,
3往下滑動網頁,找到Android NDK r17c(建議的版本),下載Linux 64位(x86)
的軟件包,
4下載完畢,在Ubuntu的/opt/tool_chain目錄下新建tool_chain文件夾,然后將android-ndk-r17c-linux-x86_64.zip拷貝到ubuntu的/opt/tool_chain路徑下,然后解壓,
3.2.2 修改編譯工具路徑
1因為此章節以rknn_yolov5_demo在RK3568 Android11 64位平臺上運行為
例,所以修改examples/rknn_yolov5_demo/build-XXX.sh的編譯工具路徑,如下
圖所示:

2修 改build-android_RK356X.sh文 件 , 將ANDROID_NDK_PATH修 改 為android-ndk-r17c的保存路徑,
NDK在ubuntu上的路徑為/opt/tool_chain/android-ndk-r17c/,如下圖所示。注
意!!!ANDROID_NDK_PATH修改的路徑要和實際的路徑一致。
3.2.3 更新 RKNN 模型
RKNN是Rockchip NPU平臺(也就是開發板)使用的模型類型,是以.rknn結
尾的模型文件。
RKNN SDK提供的demo程序中默認自帶了RKNN模型,在RKNN SDK的
examples/rknn_yolov5_demo/model/RK356X/目錄下,
如使用自己的模型需要轉換成rknn模型,轉換方法可以參考第5章節。
在得到RKNN模型之后,demo程序使用C接口在RK3568平臺開發應用,
3.2.4 編譯 demo
1在終端命令窗口進入rknn_yolov5_demo文件夾,輸入以下命令:
cd examples/rknn_yolov5_demo/
2運行build-android_RK356X.sh腳本編譯程序
./build-android_RK356X.sh
3此例子為編譯RK3568的安卓11 64位平臺。若需要編譯其他平臺請選擇相應
的腳本。詳情可參考/rknpu2/examples/rknn_yolov5_demo/README.md。 若在編
譯時出現cmake錯誤,可執行“apt install cmake”命令安裝cmake后再運行編
譯腳本。
4編譯完成之后,編譯好的程序一般放在install目錄,
5我們可以編譯生成Android或Linux Demo(需要交叉編譯環境)。也可以直
接 下 載 編 譯 好 的Demo, 可 以 在 網 盤 資 料 資 料“iTOP-3568開 發 板\02_
【iTOP-RK3568開 發 板 】 開 發 資 料\11_NPU使 用 配 套 資 料\02_NPU
demo\Android”下載。
3.2.5 開發板運行 demo
1開發板上要燒寫Android11系統,并連接好usb線。
接著使用命令sudo apt install android-tools-adb在虛擬機Ubuntu上安裝adb工
具。
2開發板系統啟動之后,我們將開發板連接到虛擬機Ubuntu18.04上。
3開發板被ubuntu識別之后,在demo目錄下輸入“adb devices”命令可以查看到
開發板設備。
4推送拷貝rknn_server到開發板,輸入以下命令:
adb push runtime/RK356X/Android/rknn_server/arm64/rknn_server /vendor/bin/
5推送拷貝librknnrt.so到開發板,輸入以下命令:
adb push runtime/RK356X/Android/librknn_api/arm64-v8a/librknnrt.so /vendor/lib64
6使用adb推送拷貝rknn_yolov5_demo_Android(上一小節編譯好的程序)到開
發板的/data目錄,注意!因為android系統權限問題,只能拷貝到data目錄。輸
入以下命令拷貝:
adb push rknn_yolov5_demo_Android /data/
如果拷貝失敗,要在串口終端上輸入以下命令,然后再進行push操作
su
chmod 777 /data
7然后我們進入開發板所在的系統,輸入“adb shell”命令。
8進入程序所在的目錄,輸入以下命令:
cd /data/rknn_yolov5_demo_Android/
9設置庫文件的路徑,輸入以下命令:
export LD_LIBRARY_PATH=./lib
10 運行程序來識別相應的圖片中物體,輸入以下命令:
用法Usage: ./rknn_yolov5_demo
./rknn_yolov5_demo ./model/RK356X/yolov5s-640-640.rknn ./model/bus.jpg
11打開一個新的窗口終端,下載識別后的圖片out.jpg到虛擬機ubuntu18.04上
查看,輸入以下命令:
adb pull /data/rknn_yolov5_demo_Android/out.jpg ./
查看out.jpg如下圖所示:
-
Android
+關注
關注
12文章
3989瀏覽量
133209 -
開發板
+關注
關注
26文章
6161瀏覽量
114176
發布評論請先 登錄
【迅為工業RK3568穩定可靠】itop-3568開發板Linux驅動開發實戰:RK3568內核模塊符號導出詳解
【迅為RK3568開發板NPU實戰】別再閑置你的NPU!手把手教你玩轉RKNN-Toolkit2 的使用
迅為RK3568開發板瑞芯微資料升級更新驅動開發指南
迅為RK3568多個系統版本并流暢運行Android12和11版本
NPU性能深度評測:瑞芯微RK3588、RK3576、RK3568、RK3562

實戰RK3568性能調優:如何利用迅為資料壓榨NPU潛能-在Android系統中使用NPU
評論