Toybrick

标题: rknn_api 更新到 >=1.7.0 后程序运行不起来 [打印本页]

作者: cdzs_3411    时间: 2021-12-10 16:03
标题: rknn_api 更新到 >=1.7.0 后程序运行不起来
问题描述:rknn_api 更新到 >=1.7.0 后程序运行不起来
运行环境:3399 + rk1808M0 (被动模式)
具体问题
   1》rknn_api 替换到 >=1.7.0 后运行不起来,还原到 1.7.0 之前的 rknn_api 版本可以跑起来,升级 >=1.7.0 是否还需要其他操作?是否需要升级 rk1808M0 驱动?
   2》如果要升级更新 rk1808M0 drivers 有没有详细点的指导文档?
   3》按照 https://gitee.com/caesar-wang/rknpu?_from=gitee_search 上的说明手动 ssh 到计算棒直接替换了 driver & ko 文件导致计算棒系统无法正常启动了,应该如何升级呢?

程序正常运行版本:(同样的DRV版本上,rknn_api试过 1.3.0/1.4.0 都可以)
D RKNNAPI: ==============================================
D RKNNAPI: RKNN VERSION:
D RKNNAPI:   API: 1.6.1 (00c4d8b build: 2021-03-15 16:31:37)
D RKNNAPI:   DRV: 1.5.0 (83d70a9 build: 2020-09-30 16:25:49)
D RKNNAPI: ==============================================

rknn_api 替换到 >=1.7.0 后
root@Ubuntu16-04:~/rknn_proj/build/example# ./demo
ERROR: can't find librknn_runtime.so
rknn_init fail! ret=-3

ERROR: can't find librknn_runtime.so
model init fail!
Segmentation fault

作者: jefferyzhang    时间: 2021-12-12 15:31
DRV版本要与API版本相匹配
作者: cdzs_3411    时间: 2021-12-13 08:54
jefferyzhang 发表于 2021-12-12 15:31
DRV版本要与API版本相匹配

所以在问 1808M0 固件如何升级呀,使用 FlashTool 的方式固件版本最新只到 1.5.0
----------------
2》如果要升级更新 rk1808M0 drivers 有没有详细点的指导文档?
3》按照 https://gitee.com/caesar-wang/rknpu?_from=gitee_search 上的说明手动 ssh 到计算棒直接替换了 driver & ko 文件导致计算棒系统无法正常启动了,应该如何升级呢?
作者: jefferyzhang    时间: 2021-12-13 09:44
按wiki的apt升级方式升级完是1.7.0
请仔细阅读wiki文档
作者: cdzs_3411    时间: 2021-12-13 16:11
jefferyzhang 发表于 2021-12-13 09:44
按wiki的apt升级方式升级完是1.7.0
请仔细阅读wiki文档

rk1808S0 是可以通过网络共享方式让计算棒联网进行在线升级,但是rk1808M0 有试过,上位机ubuntu计算棒好像是联不上网的
作者: jefferyzhang    时间: 2021-12-13 16:29
cdzs_3411 发表于 2021-12-13 16:11
rk1808S0 是可以通过网络共享方式让计算棒联网进行在线升级,但是rk1808M0 有试过,上位机ubuntu计算棒好 ...

配制方法是一样的,你首先要让他连上网。。。

作者: cdzs_3411    时间: 2021-12-17 10:31
本帖最后由 cdzs_3411 于 2021-12-17 10:32 编辑

rk1808M0 使用 https://t.rock-chips.com/wiki.ph ... /TB-RK1808S0#hash_7 中的共享网络的方法始终无法联网,但 rk1808S0是OK的,升级到最新版本的 rk1808S0 编译运行 C 的 api 示例代码依然报同样的错:
》python可以正常跑
  --> Loading rknn model
  --> Init runtime environment
  I NPUTransfer: Starting NPU Transfer Client, Transfer version 2.1.0 (b5861e7@2020-11-23T11:50:51)
  D RKNNAPI: ==============================================
  D RKNNAPI: RKNN VERSION:
  D RKNNAPI:   API: 1.7.1 (566a9b6 build: 2021-10-28 14:56:17)
  D RKNNAPI:   DRV: 1.7.0 (7880361 build: 2021-08-16 16:16:21)
  D RKNNAPI: ==============================================
  done
  --> Running model
  infer time: 0.12665486335754395s

》C 样例代码依然报错:
  rocktech@rocktech:~/work/rknn_api_v171/examples/rknn_ssd_demo/build$ ./rknn_ssd_demo ../model/ssd_inception_v2_rk180x.rknn ../model/road.bmp
  Loading model ...
  ERROR: can't find librknn_runtime.so
  rknn_init fail! ret=-3

  rocktech@rocktech:~/work/rknn_api_v171/examples/rknn_ssd_demo/build$  ldd ./rknn_ssd_demo
        linux-vdso.so.1 =>  (0x0000007fb78e2000)
        librknn_api.so => /home/rocktech/work/rknn_api_v171/examples/rknn_ssd_demo/../../librknn_api/lib64/librknn_api.so (0x0000007fb78a5000)
        libdl.so.2 => /lib/aarch64-linux-gnu/libdl.so.2 (0x0000007fb7878000)
        libstdc++.so.6 => /usr/lib/aarch64-linux-gnu/libstdc++.so.6 (0x0000007fb76e3000)
        libm.so.6 => /lib/aarch64-linux-gnu/libm.so.6 (0x0000007fb7636000)
        libgcc_s.so.1 => /lib/aarch64-linux-gnu/libgcc_s.so.1 (0x0000007fb7615000)
        libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x0000007fb74ce000)
        /lib/ld-linux-aarch64.so.1 (0x0000007fb78b7000)
  rocktech@rocktech:~/work/rknn_api_v171/examples/rknn_ssd_demo/build$

作者: cdzs_3411    时间: 2021-12-17 16:49
jefferyzhang 发表于 2021-12-13 16:29
配制方法是一样的,你首先要让他连上网。。。

rk1808M0 使用 https://t.rock-chips.com/wiki.ph ... /TB-RK1808S0#hash_7 中的共享网络的方法始终无法联网,但 rk1808S0是OK的,升级到最新版本的 rk1808S0 编译运行 C 的 api 示例代码依然报同样的错:
》python可以正常跑
  --> Loading rknn model
  --> Init runtime environment
  I NPUTransfer: Starting NPU Transfer Client, Transfer version 2.1.0 (b5861e7@2020-11-23T11:50:51)
  D RKNNAPI: ==============================================
  D RKNNAPI: RKNN VERSION:
  D RKNNAPI:   API: 1.7.1 (566a9b6 build: 2021-10-28 14:56:17)
  D RKNNAPI:   DRV: 1.7.0 (7880361 build: 2021-08-16 16:16:21)
  D RKNNAPI: ==============================================
  done
  --> Running model
  infer time: 0.12665486335754395s

》C 样例代码依然报错:
  rocktech@rocktech:~/work/rknn_api_v171/examples/rknn_ssd_demo/build$ ./rknn_ssd_demo ../model/ssd_inception_v2_rk180x.rknn ../model/road.bmp
  Loading model ...
  ERROR: can't find librknn_runtime.so
  rknn_init fail! ret=-3

  rocktech@rocktech:~/work/rknn_api_v171/examples/rknn_ssd_demo/build$  ldd ./rknn_ssd_demo
        linux-vdso.so.1 =>  (0x0000007fb78e2000)
        librknn_api.so => /home/rocktech/work/rknn_api_v171/examples/rknn_ssd_demo/../../librknn_api/lib64/librknn_api.so (0x0000007fb78a5000)
        libdl.so.2 => /lib/aarch64-linux-gnu/libdl.so.2 (0x0000007fb7878000)
        libstdc++.so.6 => /usr/lib/aarch64-linux-gnu/libstdc++.so.6 (0x0000007fb76e3000)
        libm.so.6 => /lib/aarch64-linux-gnu/libm.so.6 (0x0000007fb7636000)
        libgcc_s.so.1 => /lib/aarch64-linux-gnu/libgcc_s.so.1 (0x0000007fb7615000)
        libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x0000007fb74ce000)
        /lib/ld-linux-aarch64.so.1 (0x0000007fb78b7000)
  rocktech@rocktech:~/work/rknn_api_v171/examples/rknn_ssd_demo/build$
作者: ljs    时间: 2021-12-20 14:29
cdzs_3411 发表于 2021-12-17 16:49
rk1808M0 使用 https://t.rock-chips.com/wiki.ph ... /TB-RK1808S0#hash_7 中的共享网络的方法始终无法 ...

我也是这个问题,把.so拷到usrlib下,原来可以正常推理的python代码会出问题,楼主有解决你的问题么?
作者: cdzs_3411    时间: 2021-12-20 15:15
ljs 发表于 2021-12-20 14:29
我也是这个问题,把.so拷到usrlib下,原来可以正常推理的python代码会出问题,楼主有解决你的问题么? ...

没解决,你也是api升级1.7.0之前可以正常跑,升到1.7.0之后就报缺库哇?
估计新版本 api 没兼容被动模式的用法,报出来缺少的依赖库都是直接运行在计算棒上的,直接拷贝到上位机程序就会提示“Failed to open device: No such file or directory, Try again...”
作者: addy    时间: 2021-12-20 16:23
cdzs_3411 发表于 2021-12-17 10:31
rk1808M0 使用 https://t.rock-chips.com/wiki.ph ... /TB-RK1808S0#hash_7 中的共享网络的方法始终无法联 ...

请用ubuntu电脑,参考链接方法联网。
出问题,请把你的实际命令贴出来。
作者: cdzs_3411    时间: 2021-12-20 17:17
addy 发表于 2021-12-20 16:23
请用ubuntu电脑,参考链接方法联网。
出问题,请把你的实际命令贴出来。

》共享联网问题:
        1> 工作电脑系统就是ubuntu,1808S0可以直接插到电脑USB接口进行升级,因为PC上没有mini PCIE接口所以1808M0无法连电脑,另外配套1808M0使用的上位机 3399 安装的也是ubuntu。
         2> 共享联网的命令就是wiki上的NAT方式
              sudo nmcli connection add con-name toybrick type ethernet ifname xxxxxxx autoconnect yes ip4 192.168.180.1/24
              sudo sysctl -w net.ipv4.ip_forward=1; sudo iptables -F; sudo iptables -t nat -F; sudo iptables -t nat -A POSTROUTING -o eno1 -j MASQUERADE

》升到 1.7.0 后程序运行问题:
              进入样例代码目录直接编译运行
              ./rknn_ssd_demo model/ssd_inception_v2_rk180x.rknn model/road.bmp
   
作者: cdzs_3411    时间: 2021-12-22 09:24
addy 发表于 2021-12-20 16:23
请用ubuntu电脑,参考链接方法联网。
出问题,请把你的实际命令贴出来。

1808M0共享上位机联网已经解决了,还需要再配一下数据包转发规则,直接用wiki上1808S0的方法不行。
api 升级1.7.0 后被动模式无法工作的问题还需要解决。
作者: bobby_jiang    时间: 2021-12-22 11:17
cdzs_3411 发表于 2021-12-17 16:49
rk1808M0 使用 https://t.rock-chips.com/wiki.ph ... /TB-RK1808S0#hash_7 中的共享网络的方法始终无法 ...

librknn_runtime.so 在/usr/lib和/usr/lib64目录下都有,你查一下你们自己链接到什么地方去了
作者: cdzs_3411    时间: 2021-12-22 14:02
bobby_jiang 发表于 2021-12-22 11:17
librknn_runtime.so 在/usr/lib和/usr/lib64目录下都有,你查一下你们自己链接到什么地方去了 ...

你使用场景跟我这里的问题不一样的吧,你要么是主动模式要么直接用的是3399pro,librknn_runtime.so这个库是计算棒上面用的,被动模式下的上位机环境应该跑不起这个库
作者: cdzs_3411    时间: 2021-12-22 14:11
file:///home/zr/work/rknn_env/rknn-toolkit_n_api/tmp/rknn_api_so_version.jpeg

1.7.0之前版本的 api 的so中都没有 librknn_runtime.so 这个库,1.7.0版本 ldd 也看不到这个依赖

作者: bobby_jiang    时间: 2021-12-22 14:17
本帖最后由 bobby_jiang 于 2021-12-22 14:18 编辑
cdzs_3411 发表于 2021-12-22 14:02
你使用场景跟我这里的问题不一样的吧,你要么是主动模式要么直接用的是3399pro,librknn_runtime.so这个 ...

你是在上位机3399pro上跑的程序?你把你场景描述清楚一下

作者: cdzs_3411    时间: 2021-12-22 14:30
bobby_jiang 发表于 2021-12-22 14:17
你是在上位机3399pro上跑的程序?你把你场景描述清楚一下

帖子最开始问题和场景都描述得很清楚了哈

运行环境:3399 + rk1808M0 (被动模式)
作者: bobby_jiang    时间: 2021-12-22 14:46
https://github.com/rockchip-linu ... /Linux/rknn_api_sdk
参考这个写
作者: cdzs_3411    时间: 2021-12-22 14:59
bobby_jiang 发表于 2021-12-22 14:46
https://github.com/rockchip-linux/RKNPUTools/tree/rk33/mid/8.1/develop/rknn-api/Linux/rknn_api_sdk
...

试过一样
从上面贴的图很明显能看出是 librknn_api.so 库的问题不是测试代码问题额
作者: cdzs_3411    时间: 2021-12-22 15:40
已澄清当前上位机 rknn_api 版本只支持到 1.6.1




欢迎光临 Toybrick (https://t.rock-chips.com/) Powered by Discuz! X3.3