瑞芯微 TB-RK3399Pro -- 开发板环境

前言

本系列博文,主要以TB-RK3399ProD开发为例,来记录RK3399pro系列的开发,本博文主要来记录开发板环境的攻略,记录下才坑过程。
本人开发环境

PC:ubuntu18.04LST
开发板:TB-RK3399proD-Debian10(推荐此系统,熟悉ubuntu的人选择debian算是没障碍,原因后续说吧)

开发环境搭建
系统、固件:采用Debian10系统(固件v1.7测试通过)
主要是参照前面写的环境安装内容:
(1)PC-Ubuntu 环境安装、 keras 2.2.4 +tensorflow-gpu 1.x 安装
(2)在PC-UBUNTU1804 or > version, 安装rknn虚拟环境,模拟rknn实现基本模型的转化、推理、运行
(3)rk3399pro板子上刷机(fedora28 -> debian10)双系统
(如果linux系统是fedora 28,和常用的ubuntu有点类似,只不过包安装的命令由apt-get 换成了dnf。debian10和ubuntu安装命令是一样的)
提示:RK3399PRO的这些特定运算的硬件(注意,CPU,GPU,VPG,RGA,NPU,PCI-Ex4硬件单元皆是独立运作的,也就是说同一时间他们都可以做独立的任务,相互不干扰不等待,考验同学们多线程编码的时候到了),大家可以提前学习一下,本人在学习记录《网络通信与服务器》部署也用到多线程,博客也会时刻更新,也会不断更新完善已经写好的博客,这些知识点是通用的。

一、开机

在这里插入图片描述

二、烧录固件(刷机)

在这里插入图片描述
由于本人购买的是4GB+2GB内存,也便于以后可能研究一下Android系统,所以安装了双系统。
window主机烧写固件和linux主机烧写固件选其一就行,此处我两种方式都写了,本人使用的window主机烧写固件。此板子支持Android和Linux双系统,支持双系统启动和一键切换功能。
烧写前千万别去擦除Flash,这样会造成无法开机!

Window主机烧写固件

下载固件TB-RK3399ProD固件和烧写工具window系统烧写工具, linux系统烧写工具
1)安装Windows PC端USB驱动(首次烧写执行),支持xp,win7_32,win7_64,win8_32,win8_64,win10操作系统。本人使用window10系统
2)双击DriverAssitant_v4.7\ DriverInstall.exe打开安装程序,点击“驱动安装”按提示安装驱动即可,
在这里插入图片描述
安装界面如下所示:
在这里插入图片描述
3)Type-C线连接主机端的USB接口和TB-RK3399Pro开发板的Type-C接口,烧写工具通过该接口烧写固件。
在这里插入图片描述

4)双击AndroidTool_Release_v2.64\AndroidTool.exe启动烧写工具,单击右键,导入config_dual 配置,此配置为双系统配置。
在这里插入图片描述
工具界面如下:
在这里插入图片描述
导入配置后,序号7的reconvery.img的目录是错误的,需要需改一下(最好每一个都检查一下)
序号12的rootfs的路径名称注意一下,是“debian10-toybrick-rk3399pro-lxde-V1.1.img”,而不是“rootfs.img”,由于第一次我看官网的,在使用过的过程发现是fedora28系统,并非是debian10。
在这里插入图片描述

img目录文件如下:
在这里插入图片描述
若用户只想烧单系统,导入对应config 配置文件注意一下(在AndroidTool_Release_v2.64根目录下)。

5)一手长按TB-RK3399Pro开发板上recovery按键,另一手再按reset按键约1秒松开,系统将进入Loader模式,最后松开recovery按键;点击“执行”按钮开始烧写,(注意操作:开始刷机处于关机状态,长按着recovery(不要松手),大约10s;然后同时按下power,再一块松手。点击“执行”。
若用户修改了U-Boot代码导致无法进入Loader模式,用户可以长按TB-RK3399Pro开发板上maskrom按键,再按reset键,系统将进入MASKROM模式,点击“执行”按钮开始烧写。此时可能才进入loader模式)。
界面如下所示:
在这里插入图片描述
执行完毕如下图所示:
在这里插入图片描述
如果你的开发板连上显示器的话,连开发板的显示器就会出现下面的界面,你也会发现这时才是debian10系统。
在这里插入图片描述
6)烧录固件成功之后,你就可以拔掉和主机相连的type-c数据线了。

三、开发板连网(wifi)

此操作在开发板上执行。
无论是下面软件更新还是安装,都需要在线,包括下面串口调试,也需要开发板ip。(当然你可以下载好,离线安装,这就存在一个数据传输的问题了,下面详细说明数据如何传输到开发板上,方便下面继续操作,我们先给开发板连上无线网吧,你当然也可以连有线,只是我没有网线,别笑ps【一个做算法的想好好搞一把部署,竟然还要利用工作之余偷偷摸摸的买板子瞎折腾,实则不易,工作或者学习有条件的同学们,还是好好珍惜可以瞎折腾的时光吧,这说的都题外话了,言归正传吧】)

步骤如下:

  1. 将HDMI线连接显示器与开发板,通过USB口连接键盘/鼠标,电源线插上就不用说了吧,上电开机。接口接法如下图所示:
    在这里插入图片描述
    开机上电之后的显示器的界面如下:
    在这里插入图片描述
    输入用户名与密码:
    用户名:toybrick
    密码 : toybrick

  2. 连网
    此处我连接的是wifi,当然有网线的就直接插上网线吧。
    点击桌面右下角两个台式显示器的网络图标,选择你的wifi,然后输入密码。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    联网成功如下。
    在这里插入图片描述
    如果没有你没有找到显示器右下角“网络图标”,怎么办呢?方法总是比问题,对不对?

查看网络设备列表

nmcli dev

注意,如果列出的设备状态是 unmanaged 的,说明网络设备不受NetworkManager管理,你需要清空 /etc/network/interfaces下的网络设置,然后重启
开启wifi

nmcli r wifi on

扫描附近的 WiFi 热点

 nmcli dev wifi

连接到指定的 WiFi 热点

nmcli dev wifi connect "SSID" password "PASSWORD" ifname wlan0

在连接的时候需要将 SSID和 PASSWORD 替换成实际的 WiFi名称和密码。
如: nmcli dev wifi connect “duolun” password “123” ifname wlan0

  1. 打开终端窗口
    屏幕左下角菜单图标 - -> System Tools – >LXTerminal(你可以将此图标锁定到桌面,方面以后快捷使用),如下图所示:
    在这里插入图片描述
  2. 查看无线网卡的名称,一般为wlan0(可选)
toybirck@debian10 ~$ ip addr
  1. 查看开发板的ip(可选)
toybirck@debian10 ~$ ifconfig

开发板ip为:192.168.0.104

  1. 验证网络是否连上(可选)
toybirck@debian10 ~$ sudo ping www.baidu.com

ctrl+c终止。

四、开发板系统软件安装和更新

既然连上网类,那么就开始安装系统软件和更新吧,此操作依旧在开发板上执行。
系统软件安装和更新(必做工作):官方提供的debian10固件烧录好后,自带的是rknn–toolkit-1.3.+,可以通过pip和apt的更新命令将RKNN的三个套件更新到1.4.0(rknn_toolkit, rknn_api, npu_drv)具体情况如下(我是在rk3399Pro板上,即运行TB-RK3399pro开发板)
RKNN包含了3个基本组件:

  1. rknn-toolkit :python程序,可用于转换模型、量化模型和推理
  2. rknn-api :c库(.h/.so),用于c/c++程序调用推理引擎
  3. npu-drv :npu驱动

1. update rknn_tooklit-1.4.0

toybirck@debian10 ~$ pip3 install --user -U rknn

在这里插入图片描述

2.update rknn-api-1.4.0和npu_drv

toybirck@debian10 ~$ sudo apt update --fix-missing
toybirck@debian10 ~$ sudo apt -y upgrade  #(中间需要输入"Y")
toybirck@debian10 ~$ sudo apt update
# 开始正常的安装RKNN-Toolkit部署
toybirck@debian10 ~$ sudo apt install rknn-rk3399pro

如下图所示:
在这里插入图片描述
在这里插入图片描述
关于toybrick系列debian10系统软件包升级说明:
由于toybrick增加一个源,请大家执行如下步骤升级:

  1. 更新源:sudo apt update --fix-missing
  2. 升级软件包:sudo apt -y upgrade
    注意:升级过去中会有提示确认是否提供/etc/apt/sources.list.d/toybrick.list,请输入"Y"
  3. 再次更新源:sudo apt update
    说明:上述步骤只需要执行一次即可,后续软件包升级只需要执行命令:
    sudo apt update; sudo apt upgrade

3. 检查 RKNN-Toolkit 是否安装成功

toybirck@debian10 ~$ python3
>>> from rknn.api import RKNN
>>>

若没有任何提示,表明安装成功。键盘ctrl+D,退出python3环境。

4.安装依赖库

toybirck@debian10 ~$ sudo apt install cmake python3-scipy python3-h5py libprotobuf-dev protobuf-compiler zlib1g-dev libjpeg-dev python3-dev python3-opencv 

很多人说,跑例程的时候会报一个库文件缺失的错误,并且这个错误会导致所有例程都跑不动,提示numpy libf77blas.so.3 缺失,即libf77blas.so.3:cannot open shared filed :no such file or directory,所以我们搭建开发板环境的时候,还是把这个库一并安装了吧。

toybirck@debian10 ~$ sudo apt-get install libatlas-base-dev

5. 安装深度学习框架的库

  • a.安装 tensorflow 1.14.0 for debian
pip3 install --user -U tensorflow==1.14.0

如果你使用pytorch的话,现在rknn也支持了pytorch了,不过只支持pytorch1.12,所以使用这个深度学习框架的朋友,也安装一下吧,还有mxnet等,也可以一起安装,如果你使用的的话。我暂且没有使用,所以就没有安装,我只安装了tensorflow,注意是tf1.x不是tf2.x,目前还不支持tf2.x。

  • b.安装torch(可选)
pip3 install torch==1.2.0 torchvision==0.4.0
  • c.安装mxnet(可选)
pip3 install mxnet==1.5.0
  • d.安装gluoncv(可选)
pip3 install gluoncv

注意:安装完成之后,需要重启一下生效

6. 安装蓝牙

toybirck@debian10 ~$ sudo apt-get install -y bluez
toybirck@debian10 ~$ sudo apt-get install -y blueman
toybirck@debian10 ~$ sudo bluetoothctl show  # 查看蓝牙信息

蓝牙地址如下图红框所示:
在这里插入图片描述

五、串口调试

本人安装的是SecureCRT串口工具,window10系统。此后再讲这部分,这个是在你的pc机上安装的。
一般有以下几个步骤:

  • 安装串口调试工具(本人使用的是SecureCRT串口工具)
  • 找到开发板串口标识
  • 发起串口调试连接命令
  • 输入用户名和密码进行登录(用户名:toybrick 密码:toybrick)

六、实现个人PC电脑和开发板进行数据互传

瑞芯微RK3399Pro这个板子其实跟一般的PC机非常接近了,初始预装了Debian 10操作系统,提供2个USB2.0的接口和1个USB3.0的接口,因此可以考虑使用U盘实现数据互传。

一般有以下几个步骤

  • 使用串口连接工具连接开发板,并登录系统
  • 插入USB
  • 使用mount命令挂载到指定目录
  • 进入挂载目录,访问usb中的文件
  • 拔出U盘前,先解除U盘挂载

1、插入usb
可以看到usb在系统中对应的路径,一般为/dev/sdx1,两个usb2.0的接口分别对应为/dev/sda1 或者 /dev/sdb1

2、使用mount命令挂载到指定目录
这里假定在用户主目录下进行操作,新建一个sdb1目录用于挂载

toybirck@debian10 ~$ mkdir sdb1 
toybirck@debian10 ~$ sudo mount /dev/sdb1 sdb1

3、进入挂载目录,访问usb中的文件

toybirck@debian10 ~$ cd sdb1
toybirck@debian10 ~$ ls

七、关于版本说明

(2021.9.13)

V1.6.0 主要说明:

  1. 支持Keras框架,并且支持TF 2.0导出的h5模型
  2. 支持Pytorch 1.6.0
  3. 支持ONNX 1.6.0
  4. 增加模型加密功能
  5. 新增更多OP支持以及Bug修复

Drv需要更新到 >= 1.5.0

V1.4.0 主要说明

  1. 增加逐层量化分析子功能;
  2. 输入预处理支持多个std_value;
  3. 支持从开发板导出预编译模型。
  4. 优化channel_mean_value参数,改为mean_values/std_values;
  5. 移除load_tensorflow接口中的mean_values和std_values;
  6. 可视化完善对多输入的支持,增加对RK1806/RV1109/RV1126的支持;
  7. 精度分析功能增加非归一化的余弦距离和欧式距离;
  8. 修复已知bug。

V1.3.0 主要说明

  1. 从该版本开始我们建议各位切换到debian10,并且直接使用apt和pip命令进行在线更新即可(计算棒dnf update)。
    (debian10发布地址:http://t.rock-chips.com/forum.php?mod=viewthread&tid=1121)
  2. rk3399prod Fedora不再支持rknn在线更新,请各位尽早切换到debian10使用。
  3. 该版本主要更新了pytorch(1.2)和mxnet的模型支持
  4. 该版本新增了RKNN的UI显示功能(具体请看文档)
  5. 该版本解决了大部分上一版本用户报的bug,以及优化了加载时间和混合量化等功能。
  6. 其他API的变动请仔细看一下文档,该版本改进较大,请务必先通读一遍文档。
  7. 从该版本开始API和DRV版本号将会统一(例如1.3.0/1.3.0),如果俩个版本号大版本不一致,即不匹配。
  8. 报问题时候请务必先确认API和DRV版本匹配,并使用的是rknn-toolkit最新版本 (1.3.0)

V1.2.0 主要说明

  1. 建议添加RK官方pip源安装,较为方便,开发版、PC、MAC均可使用该源下载rknn-toolkit。(新版固件会自带该源)
  2. Tensorflow for aarch64已纳入该官方pip源,可直接安装。
  3. Tensorflow 2.0 由于一些第三方库还未支持,目前rknn暂不支持tf2.0,请勿升级使用。
  4. 附带的文档需要从百度网盘下载:https://eyun.baidu.com/s/3nwnPxsX
  5. rknntoolkit和rknnapi需要版本匹配,模型如果早于rknntoolkit 1.1以前生成的需要重新生成,否则运行可能会出问题。
    API: 1.2.1
    DRV: 0.9.9/1.2.0

RKNN组件介绍

RKNN包含了3个基本组件

  1. rknn-toolkit :python程序,可用于转换模型、量化模型和推理
  2. rknn-api :c库(.h/.so),用于c/c++程序调用推理引擎
  3. npu-drv :npu驱动

简介

  1. rknn-toolkit (python)
    该组件用于将各类模型转换为rknn格式模型,并包含推理、评估、调试等功能。
    组件分为两部分: 转换引擎和推理引擎
    支持的平台系统:(PC)windows、(PC)linux_x86_64、(开发版)linux_3399pro、(计算棒)linux_1808
    其中:
    a. PC - Windows/Linux_x86_64
    转换引擎: 全功能
    推理引擎: 仿真

    b. 开发版 - linux_3399pro
        转换引擎: 基本功能(无法执行量化等操作)
        推理引擎: 全功能 (基于 rknn-api)
    
    c. 计算棒 - linux_1808
        不支持全功能rknn-toolkit,尽支持rknn-toolkit-lite
    

*. rknn-toolkit-lite (python) (1.4.0 新增该组建)
该组建尽包含推理引擎,所以依赖较少,方便直接在3399pro和1808上进行推理操作

  1. rknn-api ©
    该组件用于c/c++开发推理程序使用,包含.h头文件和.so库文件。
    仅包含推理引擎。
    支持的平台系统:(开发版)linux_3399pro、(开发版)android_3399pro、(计算棒)linux_1808

  2. npu-drv
    该组件为NPU的驱动程序,由开发版和产品提供的固件内提供,无需用户操作。

重要说明

  1. 升级后必须确认这三个组件版本一致,否则可能会出现不可预期的错误。(从1.3开始这三个组件版本号已经统一,用户需要保证大版本号和主版本号一致,例如都是1.3.x)
  2. 板载的rknn-api/npu-drv均可通过系统的在线升级(apt/dnf等)来升级。
  3. 板载的rknn-toolkit均可通过python的pip3管理程序升级
  4. PC的toolkit和api需要自行下载更新。

总结

开发板环境在开发板上执行,下文将继续更新。欢迎小伙伴们一起学习探讨。

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值