RK3568笔记一:RKNN开发环境搭建

news2024/11/19 17:40:39

若该文为原创文章,转载请注明原文出处。

由于对AI的好奇,想要学习如何部署AI,所以从RV1126到RK3568中过渡。

一、介绍

RK3568开发板使用的是正点原子新出的ATK-DLRK3568 开发板,主要是学习从训练到部署的全过程,并记录,为自己的学习作个总结。关于ATK-DLRK3568 开发板,正点原子正在出教程,资料也开源,手册目前相对少一点,但不影响学习,因为主要是AI部分,所以基本要自己摸索。

本篇从开发环境搭建开始记录,大部分在03【正点原子】ATK-DLRK3568_AI例程测试手册V1.0.pdf里有,具体要了解,可以去下载资料。

虚拟机和系统自行安装,博主使用的是原子哥提供好的虚拟环境。

接下来记录:SDK编译,RKNN环境安装。

开发板系统主要使用的是linux,其他系统自行测试。

二、安装 RK3568 Linux SDK

1、安装依赖软件包

sudo apt-get update
sudo apt-get install curl python2.7 python-pyelftools git ssh make gcc libssl-dev liblz4-tool expect g++ 
patchelf chrpath gawk texinfo chrpath diffstat binfmt-support qemu-user-static live-build bison flex 
fakeroot cmake gcc-multilib g++-multilib unzip device-tree-compiler python3-pip libncurses-dev python3-pyelftools vim mtd-utils

2、设置python 版本

python2 设置为系统默认 python 版本:

sudo rm -rf /usr/bin/python
sudo ln -s /usr/bin/python2 /usr/bin/python

3、安装 SDK

解压网盘里的SDK, atk- rk3568_linux_release_v1.0_20230620.tgz
mkdir ~/rk3568_linux_sdk
tar xvf atk-rk3568_linux_release_v1.0_20230620.tgz -C ~/rk3568_linux_sdk

检出源码

cd ~/rk3568_linux_sdk/
.repo/repo/repo sync -l -j10

完成后就可以看到源码了

SDK 工程目录介绍
SDK 源码根目录下包含有 app buildroot debian device external tools u-boot yocto
等多个目录,每个目录或其子目录会对应一个 git 工程;因为 SDK 的代码和相关文档被划分成
了若干 git 仓库分别进行版本管理(所以 SDK 实际上包含有若干 git 仓库),它们按照功能、所
属模块划分,分别组织到不同的目录下。
app :存放上层应用 app ,包括 Qt 应用程序,以及其它的 C/C++ 应用程序。
buildroot :基于 buildroot 开发的根文件系统。
debian :基于 Debian 开发的根文件系统。
device/rockchip :存放各芯片板级配置文件和 Parameter 分区表文件,以及一些编译与
打包固件的脚本和预备文件。
docs :存放芯片模块开发指导文档、平台支持列表、芯片平台相关文档、 Linux 开发指
南等。
external :存放所需的第三方库,包括音频、视频、网络、 recovery 等。
kernel Linux 4.19 版本内核源码。
prebuilts :存放交叉编译工具链。
rkbin :存放 Rockchip 相关的 Binary 和工具。
rockdev :存放编译输出固件,编译 SDK 后才会生成该文件夹。
tools :存放 Linux Windows 操作系统环境下常用的工具,包括镜像烧录工具、 SD
升级启动制作工具、批量烧录工具等,譬如前面给大家介绍的 RKDevTool 工具以及
Linux_Upgrade_Tool 工具都存放在该目录。
u-boot :基于 v2017.09 版本进行开发的 uboot 源码。
yocto :基于 Yocto 开发的根文件系统。
软件框图:

4、SDK 编译

编译可以单独编译,也可以全自动编译,首次编译检测全自动编译。
首先进入到 SDK 源码根目录下,配置板级文件。
./build.sh lunch

接下来,拷贝第三方库, 开发板资料包里有提供,即dl文件。
将dl.tgz解压到<SDK>/buildroot 目录下
tar -xzf dl.tgz -C ~/rk3568_linux_sdk/buildroot/

接下来就是编译,编译的时间长短和电脑有关,我编译了大概半小时,无意外,编译成功。
./build.sh all

暂时没有做其他的功能,单纯的想要弄AI,所以没单独编译,可以看手册跟着原子哥做一遍。

三、RKNN开发环境搭建

1、安装交叉编译工具链

资料包里提供了工具链 atk-dlrk3568-toolchain-arm-buildroot-linux-gnueabihf-x86_64-20230621-v1.0.0.run,直接安装就好,拷贝到虚拟机里。
chmod a+x atk-dlrk3568-toolchain-arm-buildroot-linux-gnueabihf-x86_64-20230621-v1.0.0.run

./atk-dlrk3568-toolchain-arm-buildroot-linux-gnueabihf-x86_64-20230621-v1.0.0.run

2、anaconda 的下载安装

下载anaconda

mkdir ~/software
cd ~/software 
wget -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2023.03-1-Linux-x86_64.sh
安装
bash Anaconda3-2023.03-1-Linux-x86_64.sh

安装完成后,重启下ubuntu,重新 打开终端会发现前面多了个( base )。
为了方便,执行下面命令,不自动进入conda的虚拟环境
conda config --set auto_activate_base false

3、anaconda 的环境配置

a 、首先执行以下命令查看下当前镜像源,显示只有个 defaults 默认源。
conda config --show channels
b 、接下来我们添加清华源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/

四、安装 rknn-toolkit2 转换环境

1、下载 rknn-toolkit2

资料包里提供了rknn-toolkit2-1.5.0.zip文件,也可以在github上下载

2、新建 conda 环境

conda create --name py3.8 python=3.8

3、安装 rknn-toolkit2

激活 conda 环境
conda activate py3.8

进入rknn-toolkit2-1.5.0/doc目录,安装依赖

pip install -r requirements_cp38-1.5.0.txt -i https://mirror.baidu.com/pypi/simple

4、安装 rknn-toolkit2 工具

进入 rknn-toolkit2-1.5.0/packages目录
pip install rknn_toolkit2-1.5.0+1fa95b5c-cp38-cp38-linux_x86_64.whl

5、测试 rknn-toolkit2

们进到对应的 tflite 的例程目录,测试下 mobilenet_v1 的例程是否正常。
进入到rknn-toolkit2-1.5.0/examples/tflite/mobilenet_v1/目录下,执行下面命令测试。
python test.py

五、测试 buildroot 下的 python 推理例程

1、安装 RKNN Toolkit Lite2

RKNN Toolkit Lite2 Rockchip NPU 平台提供 Python 编程接口,帮助用户部署 RKNN
型,加速 AI 应用的落地。接下来我们讲解下如何在板子上安装那个 rknn-toolkit-lite2 环境。

安装 RKNN Toolkit Lite2,需要把rknn_toolkit_lite2-1.5.0-cp38-cp38-linux_aarch64.whl放到板子上在安装。

所以先在ubuntu使用adb方式传到开发板,执行下面命令:

进到 rknn-toolkit2-1.5.0/rknn_toolkit_lite2/packages 目录
adb push rknn_toolkit_lite2-1.5.0-cp38-cp38-linux_aarch64.whl /userdata
传输完成后打开开发板串口终端或者 ssh 终端,进到目录 userdata 目录
输入以下命令进行安装。
cd /userdata
pip install rknn_toolkit_lite2-1.5.0-cp38-cp38-linux_aarch64.whl

2、测试 python 下的 AI 例程

进入 rknn_toolkit_lite2 目录,把例程传到开发板
adb push examples/inference_with_lite/ /userdata
传输完毕后,打开开发板的串口终端,进入到 /userdata/inference_with_lite/ 目录
输入以下命令执行看下效果。
cd /userdata/inference_with_lite/
python test.py

至此环境搭建完成。

如有侵权,或需要完整代码,请及时联系博主。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1064680.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

One Thread One Loop主从Reactor模型⾼并发服务器

One Thread One Loop主从Reactor模型⾼并发服务器 文章目录 One Thread One Loop主从Reactor模型⾼并发服务器一些补充HTTP服务器Reactor 模型eventfd通用类Any 目标功能模块划分&#xff1a;SERVER模块Buffer模块&#xff1a;编写思路&#xff1a;接口设计&#xff1a;具体实现…

Go Gin Gorm Casbin权限管理实现 - 3. 实现Gin鉴权中间件

文章目录 0. 背景1. 准备工作2. gin中间件2.1 中间件代码2.2 中间件使用2.3 测试中间件使用结果 3. 添加权限管理API3.1 获取所有用户3.2 获取所有角色组3.3 获取所有角色组的策略3.4 修改角色组策略3.5 删除角色组策略3.6 添加用户到组3.7 从组中删除用户3.8 测试API 4. 最终目…

FreeRTOS入门教程(队列的概念及相关函数介绍)

文章目录 前言一、队列概念二、队列的使用方法1.创建队列动态创建静态创建 2.复位队列3.删除队列4.写队列5.读队列6.查询队列7.覆盖/查看覆盖查看 总结 前言 本篇文章将带大家学习FreeRTOS中的队列&#xff0c;掌握什么是队列&#xff0c;并且学习如何使用队列&#xff0c;在什…

集成学习

集成学习&#xff08;Ensemble Learning) - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/27689464集成学习就是组合这里的多个弱监督模型以期得到一个更好更全面的强监督模型&#xff0c;集成学习潜在的思想是即便某一个弱分类器得到了错误的预测&#xff0c;其他的弱分类器…

Pytorch基础:Tensor的permute方法

相关阅读 Pytorch基础https://blog.csdn.net/weixin_45791458/category_12457644.html 在Pytorch中&#xff0c;permute是Tensor的一个重要方法&#xff0c;同时它也是一个torch模块中的一个函数&#xff0c;它们的语法如下所示。 Tensor.permute(*dims) → Tensor torch.perm…

PbootCMS SQL注入漏洞

漏洞复现 访问漏洞url 数据库是mysql 构造payload&#xff0c;条件为假时&#xff0c;未查到任何数据 http://x.x.x/index.php?search 1select 0页面回显 构造payload&#xff0c;条件为真时&#xff0c;查询到数据 1select1文笔生疏&#xff0c;措辞浅薄&#xff0c;望各…

邮箱注册实现(二)注册接口实现

如果邮箱地址错误或非法&#xff0c;运行时会报错。因此需要增加校验&#xff1a; Validated RestController RequestMapping("/api/auth") public class AuthorizeController {ResourceAccountService service;GetMapping("/ask-code")public RestBean&l…

typescript 类型声明文件

typescript 类型声明文件概述 在今天几乎所有的JavaScript应用都会引入许多第三方库来完成任务需求。这些第三方库不管是否是用TS编写的&#xff0c;最终都要编译成JS代码&#xff0c;才能发布给开发者使用。6我们知道是TS提供了类型&#xff0c;才有了代码提示和类型保护等机…

R实现数据分布特征的视觉化——多笔数据之间的比较

大家好&#xff0c;我是带我去滑雪&#xff01; 如果要对两笔数据或者多笔数据的分布情况进行比较&#xff0c;Q-Q图、柱状图、星形图都是非常好的选择&#xff0c;下面开始实战。 &#xff08;1&#xff09;绘制Q-Q图 首先导入数据bankwage.csv文件&#xff0c;该数据集…

[MIT6.824] Lab 3: Fault-tolerant Key/Value Service

[MIT6.824] Lab 3: Fault-tolerant Key/Value Service 目标 通过在Lab2中实现的Raft库&#xff0c;构建一个可容灾的KV数据库。 需要实现的服务有三种操作: Put(key, value) key和value都是string&#xff0c;put设置指定key的value. Append(key, arg) 将arg append到key对…

『Linux』Linux环境搭建 | 阿里云云服务器白嫖 | Xshell环境配置

&#x1f525;博客主页&#xff1a; 小羊失眠啦 &#x1f516;系列专栏&#xff1a; C语言、Linux &#x1f325;️每日语录&#xff1a;时间&#xff0c;都是公平的&#xff0c;不公平的&#xff0c;只是现在的自己&#xff0c;对未来的自己。 ❤️感谢大家点赞&#x1f44d;收…

大华城市安防系统平台任意文件下载漏洞

一、漏洞描述 大华城市安防监控系统平台是一款集视频、报警、存储、管理于一体的综合安防解决方案。该平台支持多种接入方式&#xff0c;包括网络视频、模拟视频、数字视频、IP电话、对讲机等。此外&#xff0c;该平台还支持多种报警方式&#xff0c;包括移动侦测、区域入侵、…

Geteway

大家好我是苏麟今天带来Geteway. Gateway服务网关 Spring Cloud Gateway 是 Spring Cloud 的一个全新项目&#xff0c;该项目是基于 Spring 5.0&#xff0c;Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关&#xff0c;它旨在为微服务架构提供一种简单…

【C++】STL详解(十一)—— unordered_set、unordered_map的介绍及使用

​ ​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;C学习 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 上一篇博客&#xff1a;【C】STL…

ROS机械臂开发-开发环境搭建【一】

目录 前言环境配置docker搭建Ubuntu环境安装ROS 基础ROS文件系统 bugs 前言 想系统学习ROS&#xff0c;做一些机器人开发。因为有些基础了&#xff0c;这里随便写写记录一下。 环境配置 docker搭建Ubuntu环境 Dockerfile # 基础镜像 FROM ubuntu:18.04 # 设置变量 ENV ETC…

数据结构课程设计题目——链表综合算法设计、带头双向循环链表、插入、显示、删除、修改、排序

文章目录 链表综合算法设计——校园人事信息系统1.要求2.代码实现&#xff08;以带头双向循环链表为例&#xff09;2.1基本程序结构2.2节点和链表的初始化2.3链表的插入2.4链表的显示2.5链表的删除2.6链表的修改2.7链表的排序&#xff08;仿函数实现&#xff09; 3.全部源码 链…

Arxdbg读取cad扩展属性

xdlist可以读取CAD实体属性&#xff0c;子实体的扩展属性看不到。 下载arxdbg,appload加载。 鼠标右键即可看见&#xff0c;选Entity Info。 查看xdata,dxfdata都可以看到扩展信息。

Python 无废话-办公自动化Excel修改数据

如何修改Excel 符合条件的数据&#xff1f;用Python 几行代码搞定。 需求&#xff1a;将销售明细表的产品名称为PG手机、HW手机、HW电脑的零售价格分别修改为4500、5500、7500&#xff0c;并保存Excel文件。如下图 Python 修改Excel 数据&#xff0c;常见步骤&#xff1a; 1&…

jmeter和性能测试

一。性能测试的概念 1.性能&#xff1a;就是软件质量属性中的 “ 效率 ” 特性 2.效率特性&#xff1a; 时间特性&#xff1a;指系统处理用户请求的响应时间 资源特性&#xff1a;指系统在运行过程中&#xff0c;系统资源的消耗情况 CPU 内存 磁盘IO&#xff08;磁盘的写…

鸡群优化(CSO)算法(含MATLAB代码)

先做一个声明&#xff1a;文章是由我的个人公众号中的推送直接复制粘贴而来&#xff0c;因此对智能优化算法感兴趣的朋友&#xff0c;可关注我的个人公众号&#xff1a;启发式算法讨论。我会不定期在公众号里分享不同的智能优化算法&#xff0c;经典的&#xff0c;或者是近几年…