首页 > 其他分享 >关于RK1808/RK1806和RV1109/RV1126 NPU升级方法

关于RK1808/RK1806和RV1109/RV1126 NPU升级方法

时间:2024-03-22 11:59:54浏览次数:36  
标签:mini RV1126 drivers driver ko RK1808 linux NPU adb

一、注意事项

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

**RK3399Pro用户态的库及驱动不在本工程**,请参考:https://github.com/airockchip/RK3399Pro_npu

RK3566/RK3568/RK3588/RV1103/RV1106请参考:

https://github.com/rockchip-linux/rknpu2

二、RKNN Toolkit

在使用RKNN API进行部署之前,需要使用RKNN Toolkit将原始的模型转化成rknn模型。具体的使用说明请参考相应的网址。

- RK1808/RK1806/RV1109/RV1126/RK3399Pro 使用: https://github.com/rockchip-linux/rknn-toolkit
- RK3566/RK3568/RK3588/RV1103/RV1106使用:

https://github.com/rockchip-linux/rknn-toolkit2

三、NPU驱动目录说明

NPU的驱动在$SDK/external/rknpu/drivers/目录下或者https://github.com/rockchip-linux/rknpu/tree/master/drivers

其中的编译、安装规则参考$SDK/buildroot/package/rockchip/rknpu/rknpu.mk

主要目录包括:
drivers/
├── common
├── linux-aarch64
├── linux-aarch64-mini
├── linux-armhf
├── linux-armhf-mini
├── linux-armhf-puma
├── linux-armhf-puma-mini
├── npu_ko

- linux-aarch64:RK1808 full driver

- linux-aarch64-mini: RK1808 mini driver

- linux-armhf: RK1806  full driver

- linux-armhf-mini: RK1806 mini driver

- linux-armhf-puma: RV1109/RV1126  full driver

- linux-armhf-puma-mini: RV1109/RV1126 mini driver

- npu_ko:NPU内核驱动KO

在更新驱动时,需要同时更新用户态驱动及内核驱动,不然会产生类似错误:
    [ 1] HAL user version 6.4.6.5.351518
    [ 2] HAL kernel version 6.4.6.5.351518

    另外,npu ko与内核配置强相关,有可能会加载不成功,运行程序时,会产生类似错误:
  
    [ 1] Failed to open device: No such file or directory, Try again...
    [ 2] Failed to open device: No such file or directory, Try again...
    
    遇到这种情况需要联系开发团队解决。  
    
    更新驱动后,如果使用在线预编译功能,遇到模型初始化完后卡主,或者导出的预编译模型只有2K大小的情况,请确认板端/usr/lib/npu/rknn/memory_profile文件是否有可执行权限,如果没有,请通过chmod +x命令为该文件添加可执行权限。如果该文件有可执行权限,仍出现上述问题,请联系开发团队解决。

四、NPU full driver与mini driver的区别

主要包含以下几点:

- Mini driver只支持预编译的rknn模型,如果跑非预编译模型,会出现 RKNN_ERR_MODEL_INVALID的错误,从1.6.0开始,会返回RKNN_ERR_NON_PRE_COMPILED_MODEL_ON_MINI_DRIVER的错误;

- Full driver支持RKNN Toolkit的联机调试功能,mini driver不支持;

- Mini driver 库大小比full driver小很多,以RV1109/RV1126 1.6.0驱动为例,full driver大小为87MB,mini driver大小为7.1MB,可以有效的节省flash大小。

- Mini driver库运行时占用的内存比full driver小。

五、手动更新NPU驱动

有时需要手动更新NPU驱动,只要将相关的驱动拷贝到对应的目录就可以。

- 更新RK1808的驱动:

adb push drivers/linux-aarch64/*   /
adb push drivers/npu_ko/galcore.ko /lib/modules/galcore.ko

- 更新RK1808 mini driver:

adb push drivers/linux-aarch64-mini/*   /
adb push drivers/npu_ko/galcore.ko /lib/modules/galcore.ko


- 更新RV1109/RV1126的驱动:
 

adb push drivers/linux-armhf-puma/*   /
adb push drivers/npu_ko/galcore_puma.ko /lib/modules/galcore.ko

- 更新RV1109/RV1126 mini driver:
 

adb push drivers/linux-armhf-puma-mini/*   /
adb push drivers/npu_ko/galcore_puma.ko /lib/modules/galcore.ko

注意:adb不同版本的默认行为不一样,有些是直接push目录的,有些是push目录下的文件。因此替换完后,需要检查一下相关的库是否已经替换成功。比如通过md5sum检查对应文件的md5值是否相同。部分板子不支持adb命令,请通过ssh等其他方式拷贝文件到对应目录即可。

**另外,toybrick可能对文件路径进行了调整,因此最好通过toybrick自带的方式进行更新。**

五、librknn_api与librknn_runtime的区别

librknn_api是对librknn_runtime的封装,主要是为了减少对其他so的编译依赖,功能上并没有区别。检查驱动版本时,一般以librknn_runtime.so为准。

标签:mini,RV1126,drivers,driver,ko,RK1808,linux,NPU,adb
From: https://blog.csdn.net/weixin_45173710/article/details/136934306

相关文章

  • fileinputstream的主要用法
    importjava.io.*;publicclassMain{publicstaticvoidmain(String[]args)throwsIOException{//字节流读数据//FileInputStreamfileInputStream=newFileInputStream("C:\\\\Users\\\\31339\\\\Desktop\\\\新建文件夹(7)\\\......
  • 操作系统综合题之“采用记录型信号量机制实现进程INPUT、PROCESS和OUTPUT的同步算法(
    1.问题:系统中有有三个进程INPUT、PROCESS和OUTPUT,共用两个缓冲区BUF1和BUF2。假期设BUF1中最多可放10个数据,现已放入了2个数据;BUF2最多可放5个数据。INPUT进程负责不断将输入的原始数据推送入BUF1,PROCESS进程负责从BUF1中取出原始数据进行处理,并将处理后的结果数据送入到BUF2中,OUT......
  • 解决el-input无法输入的问题和表单验证失败问题
    el-input无法输入的问题和表单验证失败问题原因1、el-input组件没有绑定双向响应式数据(v-model)解决方案:在data中定义一个变量,然后在el-input组件中使用v-model进行双向数据绑定,这样子就会解决el-input组件无法输入的问题了。原因2、组件嵌套太深(具体原因不清楚,只知......
  • Unity InputField实现框自适应内容简便方法
    要实现InputField框自适应输入内容,除了通过代码进行处理,还可以是使用以下简便的方法。1、创建InputField组件:右键->UI->InputField-TextMeshPro。2、把InputFieldSettings中的LineType设置为MultiLineNewline模式,如下图:3、添加ContentSizeFitter组件,并把Horizo......
  • 可编辑表格中的两个列分别是用react-hook-form 和antd的inputNumber实现的,需要在开始
    可编辑表格中的两个列分别是用react-hook-form和antd的inputNumber实现的,需要在开始时间的列输入后失焦时,或者按enter键,鼠标聚焦到下一列,即结束时间,该如何设置在React项目中,要实现在一个可编辑表格中,当开始时间列输入后失焦或按下Enter键时,自动将焦点切换至结束时间列,你可以结合......
  • 「深入理解Java I/O:FilterInputStream」
      咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java之IO流啦,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~前言  JavaI/O是Java编程语言的核心功能之一,提供了丰富的输入输出操作......
  • 如何修改input的radio类型选中样式
    清除原生样式:input[type='radio']{appearance:none;/*用于覆盖默认的外观*/-webkit-appearance:none;/*SafariandChrome*/-moz-appearance:none;/*Firefox*/}设置默认选择框样式:.customRadio{margin:0;......
  • ic基础|时序篇06:输入约束set_input_delay与输出约束set_output_delay详解
    大家好,我是数字小熊饼干,一个练习时长两年半的ic打工人。我在两年前通过自学跨行社招加入了IC行业。现在我打算将这两年的工作经验和当初面试时最常问的一些问题进行总结,并通过汇总成文章的形式进行输出,相信无论你是在职的还是已经还准备入行,看过之后都会有有一些收获,如果看......
  • IO流(主要是记住四大类InputStream,OutputStream、Reader和Writer,其他都是他们的子类)
    IO流1、文件(1)文件概念文件就是保存数据的地方。例如word文档,txt文件,execl文件等等。(2)文件流文件在程序中是以流的形式来操作的。流:数据在数据源(文件)和程序(内存)之间经历的路径输入流:数据从数据源(文件)到程序(内存)的路径输出流:数据从程序(内存)到数据源(文件)的路径2、常用......
  • Qt教程 — 3.4 深入了解Qt 控件:Input Widgets部件(3)
    目录1 InputWidgets简介2如何使用InputWidgets部件2.1Dial组件-模拟车速表2.2 QScrollBar组件-创建水平和垂直滚动条2.3 QSlider组件-创建水平和垂直滑动条 2.4 QKeySequenceEdit组件-捕获键盘快捷键InputWidgets部件部件较多,将分为三篇文章介绍文章1(Qt......