Giter Site home page Giter Site logo

airockchip_rk3399pro_npu's Introduction

RKNPU For RK3399Pro

本工程主要为Rockchip RK3399Pro提供NPU驱动、相关示例等。

适用平台

  • RK3399Pro

注意:

RKNN Toolkit

在使用RKNN API进行部署之前,需要使用RKNN Toolkit或RKNN Toolkit2将原始的模型转成RKNN模型。

具体的使用说明请参考相应的网址。

NPU驱动说明

NPU驱动目录说明

RK3399Pro的NPU驱动被封装在NPU的boot.img文件中。RK3399Pro更新NPU驱动时,只要替换相应的boot.img等文件即可。

不同的RK3399Pro开发板可能通过不同的方式(PCIE和USB 3.0)和NPU通信,所使用的boot.img等NPU固件也不同。

驱动目录主要包含如下内容

drivers/
├── npu_firmware
│   ├── npu_fw
│   └── npu_pcie_fw
└── npu_transfer_proxy
    ├── android-arm64-v8a
    ├── android-armeabi-v7a
    ├── linux-aarch64
    └── linux-arm
  • npu_firmware: 存放NPU固件
    • npu_fw_pcie: 适用于PCIE接口的NPU固件,包括boot.img, MiniLoaderAll.bin, trust.img, uboot.img等。
    • npu_fw: 适用于USB接口的NPU固件,包括boot.img, MiniLoaderAll.bin, trust.img, uboot.img等。
  • npu_transfer_proxy: 存放适用不同操作系统的npu_transfer_proxy。AI应用和NPU通信时需要依赖npu_transfer_proxy服务。

通过在板端执行npu_transfer_proxy devices命令,可以确认NPU连接方式是PCIE还是USB

# 如果结果如下,使用的是USB
/ # npu_transfer_proxy devices
List of ntb devices attached
2010fcfcde48fafd    80f3eb90    USB_DEVICE

# 如果结果如下,使用的是PCIE
rk3399pro:/ $ npu_transfer_proxy devices
List of ntb devices attached
0123456789ABCDEF    cfbc0c55    PCIE

手动更新NPU驱动

在RK3399Pro上更新NPU驱动是通过更新NPU相关的boot.img等文件实现的。具体的更新方法如下:

  • 更新PCIE接口NPU:
# 如果是Android系统的固件,在更新前先获取root和读写权限,如果是Linux系统的固件,跳过这两条命令
adb shell root
adb shell remount
# 更新boot.img等
adb push npu_firmware/npu_pcie_fw/* /vendor/etc/npu_fw/
adb shell reboot
  • 更新USB接口NPU:
# 如果是Android系统的固件,在更新前先获取root和读写权限,如果是Linux系统的固件,跳过这两条命令
adb shell root
adb shell remount
# 更新boot.img等
adb push npu_firmware/npu_fw/* /vendor/etc/npu_fw/
adb shell reboot

注意: 不同的RK3399Pro固件,其npu_fw的路径可能不同,在更新boot.img等文件前建议先确认下该文件夹的位置。

npu_transfer_proxy使用说明

AI应用调用NPU进行模型初始化、推理等操作时需要依赖npu_transfer_proxy服务进行通信。
在运行AI应用前需要确认是否已启动npu_transfer_proxy服务。
默认RK3399Pro的固件会自动启动npu_transfer_proxy服务,确认方法如下:

/ # ps -ef |grep npu_transfer_proxy
  268 root      252m S    ./usr/bin/npu_transfer_proxy

如果能找到对应的进程,则代表该服务已启动。如果找不到对应的进程,可以手动启动该程序,并后台运行,或者将该程序添加到开机启动服务中。
手动启动npu_transfer_proxy并后台运行的命令如下:

./npu_transfer_proxy &

RKNN C API

RKNN C API的详细使用说明请参考rknn-api/doc中的使用指南文档。

airockchip_rk3399pro_npu's People

Contributors

airockchip avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.