瑞芯微Rockchip开发者社区
直播中

黄色的小金橘

12年用户 602经验值
私信 关注
[问答]

TB-RK3399ProD开发板环境的开发攻略分享

请问一下怎样去开发一种TB-RK3399ProD开发板环境呢?有哪些基本步骤?

回帖(1)

吕钢格

2022-2-10 09:43:05
本人开发环境
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.64AndroidTool.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【一个做算法的想好好搞一把部署,竟然还要利用工作之余偷偷摸摸的买板子瞎折腾,实则不易,工作或者学习有条件的同学们,还是好好珍惜可以瞎折腾的时光吧,这说的都题外话了,言归正传吧】)
步骤如下:


  • 将HDMI线连接显示器与开发板,通过USB口连接键盘/鼠标,电源线插上就不用说了吧,上电开机。接口接法如下图所示:

    开机上电之后的显示器的界面
  • 输入用户名与密码:
    用户名:toybrick
    密码 : toybrick
  • 连网
    此处我连接的是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


  • 打开终端窗口
    屏幕左下角菜单图标 - -> System Tools – >LXTerminal(你可以将此图标锁定到桌面,方面以后快捷使用),如下图所示:

  • 查看无线网卡的名称,一般为wlan0(可选)

toybirck@debian10 ~$ ip addr

  • 查看开发板的ip(可选)

toybirck@debian10 ~$ ifconfig
开发板ip为:192.168.0.104


  • 验证网络是否连上(可选)

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个基本组件:


  • rknn-toolkit :python程序,可用于转换模型、量化模型和推理
  • rknn-api :c库(.h/.so),用于c/c++程序调用推理引擎
  • 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增加一个源,请大家执行如下步骤升级:


  • 更新源:sudo apt update --fix-missing
  • 升级软件包:sudo apt -y upgrade
    注意:升级过去中会有提示确认是否提供/etc/apt/sources.list.d/toybrick.list,请输入"Y"
  • 再次更新源: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命令挂载到指定目录
  • 进入挂载目录,访问u***中的文件
  • 拔出U盘前,先解除U盘挂载

1、插入u***
可以看到u***在系统中对应的路径,一般为/dev/sdx1,两个u***2.0的接口分别对应为/dev/sda1 或者 /dev/sdb1
2、使用mount命令挂载到指定目录
这里假定在用户主目录下进行操作,新建一个sdb1目录用于挂载
toybirck@debian10 ~$ mkdir sdb1 toybirck@debian10 ~$ sudo mount /dev/sdb1 sdb1 3、进入挂载目录,访问u***中的文件
toybirck@debian10 ~$ cd sdb1toybirck@debian10 ~$ ls
七、关于版本说明

(2021.9.13)
V1.6.0 主要说明:



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

Drv需要更新到 >= 1.5.0
V1.4.0 主要说明



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

  V1.3.0 主要说明



  • 从该版本开始我们建议各位切换到debian10,并且直接使用apt和pip命令进行在线更新即可(计算棒dnf update)。

  • rk3399prod Fedora不再支持rknn在线更新,请各位尽早切换到debian10使用。
  • 该版本主要更新了pytorch(1.2)和mxnet的模型支持
  • 该版本新增了RKNN的UI显示功能(具体请看文档)
  • 该版本解决了大部分上一版本用户报的bug,以及优化了加载时间和混合量化等功能。
  • 其他API的变动请仔细看一下文档,该版本改进较大,请务必先通读一遍文档。
  • 从该版本开始API和DRV版本号将会统一(例如1.3.0/1.3.0),如果俩个版本号大版本不一致,即不匹配。
  • 报问题时候请务必先确认API和DRV版本匹配,并使用的是rknn-toolkit最新版本 (1.3.0)

  V1.2.0 主要说明



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

RKNN组件介绍

RKNN包含了3个基本组件


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

简介


  • 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上进行推理操作


  • rknn-api ©
    该组件用于c/c++开发推理程序使用,包含.h头文件和.so库文件。
    仅包含推理引擎。
    支持的平台系统:(开发版)linux_3399pro、(开发版)android_3399pro、(计算棒)linux_1808
  • npu-drv
    该组件为NPU的驱动程序,由开发版和产品提供的固件内提供,无需用户操作。

重要说明


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

总结

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

更多回帖

发帖
×
20
完善资料,
赚取积分