测评分享丨OK3399-C开发板+RK1808人工智能计算棒(主动模式)

一、  硬件平台

平台:OK3399-C

系统: Desktop

模块: TB-RK1808S0

环境准备:

飞凌OK3399-C 开发板 rk1808 人工智能计算棒(固件版本为 V1.3.4 usb 摄像头,摄像头和计算棒都插入 OK3399-C开发板

使用 lsusb 命令查看,如下( 红框 部分 2207:0018 即为 RK1808 人工智能计算棒):

输入命令如下:


OK3399-C开发板+RK1808人工智能计算棒  

 

二、 概述

AI 计算区分为四个不同的象限,分别是云端训练、云端推理,边缘训练以及边缘推理。其中终端推理,几乎都集中在 Arm 架构生态上。 AI 神经网络计算目前可以通过 CPU GPU DSP NPU FAGA 等完成,但不同的硬件特性会导致效率和功耗的不同。其中 NPU —— 嵌入式神经网络处理器采用“数据驱动并行计算”的架构,最擅长的就是视频、图像类的海量多媒体数据的处理,并且相比 GPU 等具有更低的功耗。我司推出 OK3399-C Desktop+RK1808 (含 3Tops 算力 NPU )的组合,在满足 AI 边缘计算的情况下,使得功耗大幅降低。

RK1808计算棒拥有主动模式和被动模式两种模 式。 主动模式下, RK1808 人工智能计算棒是一个专用 AI 应用模块。 RK1808 人工智能计算棒作为主动设备, RK1808 人工智能计算棒内部默认已安装 rknn-toolkit rknn-api ,上位机(也称宿主机)无需安装 rknn-toolkit rknn-api ,模型及算法固化在 RK1808 人工智能计算棒中, OK3399-C 通过 USB 口向计算棒输入数据(例如图片和视频流), RK1808 人工智能计算棒自动完成数据的前处理、推理、后处理,然后把处理结果通过 USB 口输出给 OK3399-C。

为了方便用户通过 USB 口传输数据, RK1808 人工智能计算棒会把 USB 口虚拟成网卡等标准设备,用户只需通过标准设备接口的操作(例如网络的 socket 编程)即可完成对 RK1808 人工智能计算棒数据的输入和输出。

细节如下:

        1.RK1808 计算棒插入上位机后,会被虚拟成网卡设备

        2. 上位机 OK3399-C 进行虚拟网卡配置,配置 IP 192.168.180.1 ,保证上位机和 1808 中间的网络连接正常

        3. 计算棒默认 IP 192.168.180.8 ,账号密码皆为 toybrick ,用户可以 SSH 登录计算棒,拷贝模型和 server 服务程序到计算棒

        4. 计算棒端运行 server 服务程序,用来接收上位机的连接请求,并调用 RKNN 进行处理,再返回结果

        5. 上位机运行 client 程序,连接 server 成功之后,发送推理请求,从 1808 端获取返回结果


OK3399-C开发板+RK1808人工智能计算棒  


 

三、 计算棒网络 配置与网络 共享 配置


1 计算棒网络 配置

上位机使用 OK3399-C Forlinx Desktop 系统 ,点击右下角网络按钮选择弹出窗口中的 Edit Connections... ”选项:


OK3399-C开发板+RK1808人工智能计算棒  


选择计算棒 usb 网卡生成的有线网络节点:

OK3399-C开发板+RK1808人工智能计算棒  


配置该节点为手动模式,设置 IP 192.168.180.1 ,子网掩码: 255.255.255.0 ,并保存:

OK3399-C开发板+RK1808人工智能计算棒  


终端输入 ifconfig 指令查看网络节点配置如下,可见 usb 网卡配置完成:

OK3399-C开发板+RK1808人工智能计算棒  


ping 一下 1808 计算棒网络 192.168.180.8 ,如下网络可以连通:

OK3399-C开发板+RK1808人工智能计算棒  


使用 ssh 登录 1808 计算棒,用户名和密码默认都为 toybrick ,如下登陆成功:

OK3399-C开发板+RK1808人工智能计算棒  


2 、网络 共享 配置

  运行 ifconfig ,可以看到 e th0 wlan0 等宿主机 网卡, 我们 用于访问外网, enx10dcb69f022c USB 网卡( RK1808 人工智能计算棒虚拟网卡)。不同的系统网卡名称可能不一样,以实际网卡名称为准。

OK3399-C开发板+RK1808人工智能计算棒  


首先配置宿主机网络,使宿主机可以连通以太网,这里我们使用 wlan0 节点来上网,具体配置不再赘述。

命令行执行如下命令,其中 enx10dcb69f022c 需要修改成用户本地实际值;正常情况只要设置一次即可,若拔插设备发现网卡名称改变了或者用户手动删除该网卡,则需要重新设置。

1. sudo nmcli connection add con-name toybrick type ethernet ifname enx10dcb69f022c autoconnect yes ip4 192.168.180.1/24

配置 NAT 功能,执行如下命令,其中 eno1 需要修改成用户本地实际值;关机失效,所以每次电脑重启都要重新设置。

1. sudo sysctl   -w net.ipv4.ip_forward=1

sudo iptable -F

sudo iptables -t nat -F
sudo  iptables  -t  nat  -A POSTROUTING -o wlan0 -j MASQUERADE


注意: 以自己开发板联网的实际端口为准,例: eth0

iptables 命令部分释义如下:

iptables --help

--flush   -F [chain]Delete all rules in  chain or all chains 

--table       -t tabletable to manipulate (default: `filter') 

--append  -A chainAppend to chain 

--jump -j targettarget for rule (may load target extension) 

 

MASQUERAD ,地址伪装,算是 snat 中的一种特例,可以实现自动化的 snat

SNAT source networkaddress translation 的缩写,即源地址目标转换。比如,多个 PC 机使用 ADSL 路由器共享上网,每个 PC 机都配置了内网 IP PC 机访问外部网络的时候,路由器将数据包的报头中的源地址替换成路由器的 ip ,当外部网络的服务器比如网站 web 服务器接到访问请求的时候,他的日志记录下来的是路由器的 ip 地址,而不是 pc 机的内网 ip ,这是因为,这个服务器收到的数据包的报头里边的“源地址”,已经被替换了,所以叫做 SNAT ,基于源地址的地址转换。

DNAT destination networkaddress translation 的缩写,即目标网络地址转换,典型的应用是,有个 web 服务器放在内网配置内网 ip ,前端有个防火墙配置公网 ip ,互联网上的访问者使用公网 ip 来访问这个网站,当访问的时候,客户端发出一个数据包,这个数据包的报头里边,目标地址写的是防火墙的公网 ip ,防火墙会把这个数据包的报头改写一次,将目标地址改写成 web 服务器的内网 ip ,然后再把这个数据包发送到内网的 web 服务器上,这样,数据包就穿透了防火墙,并从公网 ip 变成了一个对内网地址的访问了,即 DNAT ,基于目标的网络地址转换。

相关产品: