RT-Thread AI Kit 之 RISC-V 插件初体验

怎么下载K-Flash烧录(有图 超详细) 安装包 百度网盘链接:https://pan.baidu.com/s/1vGaXrEsAVhsRWqGmi7CSIA 提取码:1234 官网 下载地址: https://github.com/kendryte/kendryte-flash-windows/releases 选择最新版本 下载完成后解压到自定义的路径下 .双击打开 K-Flash.exe,通过 type-C 数据线连接电脑与 K210 开发板。Device 选择 K210 开发板的串口号。 Baud rate 选. 阅读详情

应广大开发者要求,我们加班加点推出了 RT-AK(RT-AK:RT-Thread AI Kit 简称) 支持的第二个插件:支持基于 K210 芯片等一些开发板,目前RT-AK已经能够在嘉楠堪智的 KD233 和亚博 YB-DKA01 上正常工作。

说明1:一直致力于推出保姆级教程

说明2:RT-AK 之 K210 插件地址:

https://github.com/RT-Thread/RT-AK-plugin-k210

说明3:本文章中的项目代码地址:https://githuib.com/EdgeAIWithRTT/Project4-Mnist_RT-AK_K210

在该片文章引用的例程中,没有用到摄像头和 LCD。但是在项目中,有包含 LCD 的例程。

克隆下载即可使用,欢迎 fork、star、watch 三连~

1. 运行 RT-AK 前的准备工作

准备以下几份重要重要重要(重要的事情说3遍)的材料:

1.1 BSP

硬件

嘉楠堪智的 KD233 或者亚博 YB-DKA01,或其它基于 K210 芯片的开发板(可能需要定制 BSP,请与我们联系)

这里,我们准备好了一份 BSP,

下载地址:http://117.143.63.254:9012/www/RT-AK/sdk-bsp-k210.zip

交叉编译工具链 (Windows)

xpack-riscv-none-embed-gcc-8.3.0-1.2-win32-x64.zip | Version: v8.3.0-1.2

链接:(请复制外部浏览器打开)https://github.com/xpack-dev-tools/riscv-none-embed-gcc-xpack/releases/download/v8.3.0-1.2/xpack-riscv-none-embed-gcc-8.3.0-1.2-win32-x64.zip

1.2 RT-AK 准备

将 RT-AK 克隆到本地

1$ git clone https://github.com/RT-Thread/RT-AK.git edge-ai

1.3 神经网络模型

由于 k210 原厂工具仅支持三种模型格式:TFLite、Caffe、ONNX

所以提前将 keras 神经网络模型转换成了 tflite 模型,位于 RT-AK/rt_ai_tools/Models/mnist.tflite

如果没有找到该模型,请更新 RT-AK 仓库

或者在此处可见:

https://github.com/EdgeAIWithRTT/Project5-Mnist_RT-AK_K210/tree/master/models

1.4 原厂工具

1.NNCase:

已经提前下载好,位于 RT-AK/rt_ai_tools/platforms/plugin_k210/k_tools 路径下

2.K-Flash 烧录工具,下载请选择 K-Flash.zip

Github 下载地址: https://github.com/kendryte/kendryte-flash-windows/releases

2. 执行步骤

代码将会自动使用 NNCase 模型转换工具,获得一个集成了 AI 的 BSP

内部的流程请看源码或者 plugin_k210 仓库下的 readme 文档

2.1 基础运行命令

请在 edge-ai/RTAK/tools 路径下运行该程序。

在 RT-AK 运行的过程中

  1. 会自动拉取 K210 插件的仓库到 RT-AK/rt_ai_tools/platforms 路径下

  2. 在 BSP 基础上将会集成 AI 模型的,不包括模型推理等应用代码,应用代码请看下文

  3. 在 RT-AK/rt_ai_tools/platforms/plugin_k210 路径下会生成 .kmodel 和 convert_report.txt 两个文件

  • .kmodel AI 模型转换之后的 kmodel 模型

  • convert_report.txt AI 模型转换过程的 log 日志


1# 基础运行命令
2python aitools.py --project=<your_project_path> --model=<your_model_path> --model_name=<your_model_name> --platform=k210 --clear
3
4# 示例
5$ D:\Project\edge-ai\RT-AK\rt_ai_tools>python aitools.py --project=D:\Project\K210_Demo\k210_rthread_bsp --model=.\Models\mnist.tflite --model_name=mnist --platform=k210 --embed_gcc=D:\Project\k210_third_tools\xpack-riscv-none-embed-gcc-8.3.0-1.2\bin --dataset=.\platforms\plugin_k210\datasets\mnist_datasets

RT-AK 之 K210 插件示例 Demo 运行成功界面:

2.2 其他运行命令补充说明

 1# 非量化,不使用 KPU 加速, --inference_type
 2$ python aitools.py --project=<your_project_path> --model=<your_model_path> --platform=k210  --inference_type=float
 3
 4# 非量化,指定交叉编译工具链路径
 5$ python aitools.py --project=<your_project_path> --model=<your_model_path> --platform=k210 --embed_gcc=<your_RISCV-GNU-Compiler_path> --inference_type=float
 6
 7# 量化为 uint8,使用 KPU 加速,量化数据集为图片
 8$ python aitools.py --project=<your_project_path> --model=<your_model_path> --platform=k210 --embed_gcc=<your_RISCV-GNU-Compiler_path> --dataset=<your_val_dataset>
 9
10# 量化为 uint8,使用 KPU 加速,量化数据集为音频之类非图片,--dataset_format
11$ python aitools.py --project=<your_project_path> --model=<your_model_path> --platform=k210 --embed_gcc=<your_RISCV-GNU-Compiler_path> --dataset=<your_val_dataset> --dataset_format=raw
12
13# 示例(量化模型,图片数据集)
14$ python aitools.py --project="D:\Project\k210_val" --model="./Models/facelandmark.tflite" --model_name=facelandmark --platform=k210 --embed_gcc="D:\Project\k210_third_tools\xpack-riscv-none-embed-gcc-8.3.0-1.2\bin" --dataset="./platforms/plugin_k210/datasets/images"

2.3 运行参数说明

RT-AK 中的参数包含了两部分,

  • 基础参数

  • K210 插件参数

基础参数详见 https://github.com/RT-Thread/RT-AK/tree/main/RT-AK/rt_ai_tools 中的 0x03 参数说明

插件参数详见 https://github.com/RT-Thread/RT-AK-plugin-k210/README.md 中的 3. 命令行参数详细说明

上述示例命令行的参数说明

3. 编译 & 下载

如果在执行 RT-AK 得过程中添加了 --embed_gcc 这个参数,可跳过以下部分:

设置编译环境

方法一:set RTT_EXEC_PATH=

方法二:修改 rtconfig.py 文件,在第22行新增 os.environ['RTT_EXEC_PATH'] = r'your_toolchains'

编译:

1scons -j 6    

如果编译正确无误,会产生 rtthread.elf、rtthread.bin文件。

其中 rtthread.bin 需要烧写到设备中进行运行。

下载:

可以看到,下载后得显示界面并没有什么变化,

那是因为 RT-AK 内部不提供应用程序代码,想要让 AI 模型成功运行,需要开发者们自行编写,在本文得末尾,我们提供了一份示例代码。

4. 示例应用代码说明

我们提供了一份运行模型推理的示例应用代码,

下载地址: http://117.143.63.254:9012/www/RT-AK/mnist_app_k210.zip

下载解压,放置到 <BSP>/applications 路径下

编译烧录即可。

4.1 代码流程

系统内部初始化:

  • 系统时钟初始化

RT-AK Lib 模型加载并运行:

  • 注册模型(代码自动注册,无需修改)

  • 找到注册模型

  • 初始化模型,挂载模型信息,准备运行环境

  • 运行(推理)模型

  • 获取输出结果

4.2 核心代码

 1// main.c
 2/* Set CPU clock */
 3sysctl_clock_enable(SYSCTL_CLOCK_AI);  // 使能系统时钟(系统时钟初始化)
 4...
 5
 6// 注册模型的代码在 rt_ai_mnist_model.c 文件下的第31行,代码自动执行
 7// 模型的相关信息在 rt_ai_mnist_model.h 文件
 8/* AI modol inference */
 9mymodel = rt_ai_find(MY_MODEL_NAME);  // 找到注册模型
10if (rt_ai_init(mymodel, (rt_ai_buffer_t *)IMG9_CHW) != 0)  // 初始化模型,传入输入数据
11...
12if(rt_ai_run(mymodel, ai_done, NULL) != 0)    // 模型推理一次
13...
14output = (float *)rt_ai_output(mymodel, 0);  // 获取模型输出结果
15
16/* 对模型输出结果进行处理,该实验是Mnist,输出结果为10个概率值,选出其中最大概率即可 */
17for(int i = 0; i < 10 ; i++)
18{
19    // printf("pred: %d, scores: %.2f%%\n", i, output[i]*100);
20    if(output[i] > scores  && output[i] > 0.2)
21    {
22        prediction = i;
23        scores = output[i];
24    }
25}

如何更换模型输入数据补充说明:

示例数据在 applications 文件夹下,模型不用重新训练,只需更改第18行和第51行即可

详细得 Mnist Demo 工程链接,包括训练和数据处理。

Github:https://github.com/EdgeAIWithRTT/Project4-Mnist_RT-AK_K210

4.3 结果显示


你可以添加微信17775982065为好友,注明:公司+姓名,拉进 RT-Thread 官方微信交流群!

???????????? 点击阅读原文了解RT-AK

RISC-V MCU移植RTOS系列教程(三) 接着以WCH沁恒微电子的赤菟V103(CH32V103)和赤菟V307(CH32V307)两款RISC-V内核单片机来详细说下针对RISC-V平台,移植实时操作系统的注意点。 今天聊下移植RTOS时RISC-V内核时单片机切换至第一个任务。 以RT-Thread为例,rt-thread和其他RTOS有点区别的是其gcc下的入口函数定义为entry,而main函数则可以被初始化为线程之一,图1为rt-thread的详细的启动流程。rt-thread定义一个rt_thread类型的全局指针rt_curren 阅读详情

相关推荐

RT-AK轻松实现一键部署AI模型至RT-Thread

RT-AK轻松实现一键部署AI模型至RT-Thread0、准备工作1、如何下载 ART-Pi SDK1.1.1在 RT-Thread Studio 里直接下载 sdk1.1.2 在 GitHub 里直接下载 sdk2、RT-AK 简介3、神经网络模型4、 X-CUBE-AI 介绍4.1下载4.2 X-CUBE-AI 安装4.3 执行步骤4.4 基础运行命令基础运行命令示例4.5 RT-Thread Studio 编译 0、准备工作 本文主要讲述了如何简单的训练一个深度学习的模型,并把模型放入rtt系统中,让

qq_51146579的博客 1198

K210如何下载程序

一、打开资料包里提供的K-Flash程序烧录软件 二、选择串口 三、选择波特率 四、选择In-Chip,烧录到Flash芯片里面,重新上电还会运行程序 五、如果选择In - Memory,这次可以运行,但下次重新上电就不会保持这次的程序了。 六、选择固件烧录的路径 七、这个勾是烧录完成后会弹出一个终端,可以用来显示打印的数据 八、点击FLASH便可开始烧录固件,这里我下的是资料包提供的入手试玩程序 九、烧录成功

qq_52251819的博客 2689

K210应用1-基于vscode的K210开发环境搭建

基于vscode的K210开发环境搭建 安装准备 在windows下,使用vscode开发K210,需要准备如下工具: Vscode K210烧录工具 K210官方SDK及编译工具链 Cmake 上述所有工具,均会提供,若希望自己下载,下面也会给出相应的下载链接,对于vscode这种官方下载速度缓慢的,下面将会提供一种使用国内镜像源加速下载的方式。 1、Vscode下载 下载链接:Download Visual Studio Co...

w723291206的博客 6437

RT-Thread AI kit开源:轻松实现一键部署AI模型至 RT-Thread

RT-AK 简介RT-AK:RT-Thread AI kit,RT-Thread AI套件RT-AK 是 RT-Thread 团队为 RT-Thread 实时操作系统所开发的 AI 套...

rtthreadiotos的博客 2194

MacOS使用clion配置mounriver 工具链

在macOS上配置mounriver studio工具链

wu58430的博客 2471

K210烧录软件kflash_gui

K210烧录软件kflash_gui

K210开发板MicroPython开发环境搭建

1、进入如下连接2、点击下载3、下一步4、修改安装路径,下一步5、接受许可下一步6、下一步7、安装8、完成9、区域①菜单栏:操作文件,使用工具等。区域②快捷按钮:区域①中的文件和编辑中部分功能的快捷方式。区域③连接设备:连接设备和程序控制按钮。区域④代码编辑区:编辑要运行的代码。区域⑤串行终端:显示串口打印的调试信息。区域⑥图像预览:显示摄像头的图像预览。区域⑦固件信息:显示连接的串口号以及固件的相关信息。

qq_52251819的博客 2501

riscv-none-embed-gcc-xpack:带有GNU RISC-V嵌入式GCC工具链的二进制xPack

xPack GNU RISC-V嵌入式GCC 这个开源项目以形式托管在GitHub上,并为提供了特定于平台的二进制文件。 该发行版计划遵循的官方发行版。 二进制文件可以作为二进制xPacks自动安装,也可以作为便携式归档手动安装。 除了包元数据外,该项目还包括构建脚本。 用户信息 本节旨在为计划使用GNU RISC-V嵌入式GCC二进制文件的人员提供捷径。 有关完整的详细信息,请阅读页面。 易于安装 安装GNU RISC-V嵌入式GCC的最简单方法是使用二进制xPack ,该文件可从注册表中以的 。 先决条件 唯一的要求是最近使用的xpm ,这是一个可移植的命令行应用程序。 要安装它,请按照页面上的说明进行操作。 安装 使用xpm工具,安装软件包的最新版本非常容易: $ xpm install --global @xpack-dev-tools/riscv-none-embed

RISC-V单片机快速入门02-移植RT_Thread Nano

前言: 上一节,我们使用芯来科技Nuclei Studio IDE搭建了裸机开发环境,本节我们开始正式移植RT_Thread系统。 一、基础知识 1.RT_Thread简介 RT-Thread是一个集实时操作系统(RTOS)内核、中间件组件和开发者社区于一体的技术平台,由熊谱翔先生带领并集合开源社区力量开发而成,RT-Thread也是一个组件完整丰富、高度可伸缩、简易开发、超低功耗、高安全性的物联网操作系统。RT-Thread具备一个IoT OS平台所需的所有关键组件,例如GUI、网络协议栈、安全传输、低功

weixin_45006076的博客 1791

riscv-gnu-toolchain:适用于RISC-V的GNU工具链,包括GCC

RISC-V GNU编译器工具链 这是RISC-V C和C ++交叉编译器。 它支持两种构建模式:通用的ELF / Newlib工具链和更复杂Linux-ELF / glibc工具链。 获取资源 该存储库使用子模块,但是子模块将根据需要自动获取,因此--recursive或git submodule update --init --recursive不需要。 $ git clone https://github.com/riscv/riscv-gnu-toolchain 警告:git clone占用大约6.65 GB的磁盘和下载大小 先决条件 需要几个标准软件包来构建工具链。 在Ubuntu上,执行以下命令就足够了: $ sudo apt-get install autoconf automake autotools-dev curl python3 libmpc-dev libmp

K210固件烧入程序kflash【支持v3,v4,以及kflash下载器,pyloader下载器等,以及使用图片】

用于K210固件的烧入。 支持v3,v4,以及kflash下载器,pyloader下载器等,以及使用图片

【20210423期AI简报】RT-Thread AI 套件开源、X86架构大师“游向”RISC-V

导读:本期为 AI 简报 20210423 期,将为您带来 8 条相关新闻,今日世界读书日~但使书种多,会有岁稔时~RT-Thread AI Kit已经开源,RT-Thread 又一开源力...

rtthreadiotos的博客 971

计算机组成原理实验:手把手教你用模拟程序实现中断机制(附完整代码)

本文通过一个计算机组成原理模拟实验,手把手教你从零实现一个可工作的中断系统。实验详细演示了如何配置中断控制器、编写主程序与中断服务程序,并观察中断响应、现场保护和恢复的全过程,深入解析了中断原理的核心机制。

471

riscv-none-embed-gcc在Windows下的安装

riscv-none-embed-gcc在Windows下的安装 大家知道在学习riscv架构的时候必须会使用到相关指令来测试逻辑是否正常,而手写机器码是一个很痛苦的过程,而使用gcc进行编译生成相应的指令是一个方便的方法,而很多同志在刚开始学习是在windows环境,所以,本文介绍了riscv的gcc在windows(笔者使用的是windows10专业版)环境下的安装。 第一步 下载GCC 首...

拉拉队队长的博客 9233

使用 AFL++ 对 IoT 二进制文件进行模糊测试 - 第一部分

American fuzzy lop 是一款面向安全的模糊测试器,它采用一种新型的编译时插桩和遗传算法,可以自动发现干净、有趣的测试用例,从而触发目标二进制文件中新的内部状态。这显著提高了模糊测试代码的功能覆盖率。AFL 的地址是它已经有一段时间没有更新了。虽然 AFL 仍然运行良好,但有一个新项目 AFL++,它是 AFL 的一个分支,包含许多改进和新功能。AFL++ 的地址是,其源代码位于。在本文中,我们将研究如何使用 AFL++ 对 IoT 二进制文件进行模糊测试。

技术超强的网络安全平台 1084

sdc时钟约束2——多驱动时钟

sdc 多驱动时钟 master_clock

qq_40411444的博客 5526

riscv-none-embed-gcc的安装与问题排除

1、gcc下载地址 我下载为windows下的压缩包,解压即用。 2、推荐相关教程 3、小坑一个 在编译hello world过程中发现如下报错: exit.c:(.text.exit+0x1e):undefined reference to '_exit' 参考此篇文章后,添加编译参数即可: --specs=nosys.specs 如 .\riscv-none-embed-gcc.exe -o bin .\test.c -march=rv32i -mabi=ilp32 --specs=nosys.sp

humphreyandkate的博客 3752

利用setEcoMode优化innovus中的ecoAddRepeater批量操作效率

本文详细介绍了在Cadence Innovus工具中,如何利用setEcoMode命令的batchMode参数,显著提升ecoAddRepeater命令在批量插入buffer或inverter时的操作效率。通过合并重复的初始化和数据库更新开销,该模式可将大规模时序修复操作的执行速度提升数倍,并提供了完整的脚本示例与最佳实践,帮助后端设计工程师优化ECO流程。

mango的博客 511

基于AI+RT-THREAD的人检测入侵检测摄像头(一 AI模型的导入及处理)

RT-AK+RT-THREAD+ART-PI的人检测入侵检测摄像头 简介:该项目基于ART-PI+RT-THREAD平台开发了一套基于人检测AI的网络摄像头,当遥控开启时将自动检测人的特征并判断,若有人则将图片数据自动上传网络并报警。 硬件部分 ART-PI开发版,OV2640摄像头,红外接收头与遥控器 软件部分 RT-THREAD操作系统,图像处理,AI模型的C语言应用,红外遥控部分,网络传输部分 下面以实现顺序教学此项目的实现(预计分三期) 一、AI部分的实现 在计划这个项目之前还没有了

Kejane的博客 2943

基于STM32设计的温室大棚种植监测系统(onenet+GPRS通信)

当前所设计的温室大棚种植监测系统基于STM32单片机开发,它能够对温室大棚内的温度、湿度、光照强度、土壤湿度、二氧化碳含量等环境参数进行实时监测,并将数据传输至OneNET云平台,实现了远程监测和管理。该系统具有体积小、功耗低、可靠性高等特点,适合在温室大棚等场合使用。

7867

C#上位机开发揭秘:从新手到大神的蜕变之路,代码实例全解析!

上位机通常是与硬件设备(如嵌入式系统、PLC、传感器等)进行通信的计算机程序。它的作用是通过某种通信协议(如串口、TCP/IP 等)向设备发送命令,并接收设备的反馈数据。上位机需要有一个图形用户界面(GUI)来展示数据或控制硬件设备。通过本篇教程,我们介绍了 C# 上位机开发的基本步骤,从串口通信的实现,到图形用户界面的构建,再到进阶功能的实现。作为上位机开发的新手,掌握这些基础知识是非常重要的。而随着经验的积累,你可以逐步尝试更复杂的功能,比如多线程处理、数据分析与存储等。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 4828

kflash下载地址分享

下载站 - Sipeed;kflash_gui

m0_62964247的博客 9104

【传感器模块项目实战】机器人/无人驾驶常用传感器模型、选型与安装

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!无人车&无人机导航合集本文先对机器人/无人驾驶常用传感器模型、选型与安装做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容分为位置式绝对型编码器增量式编码器打比赛的时候用过欧姆龙的增量式编码器,也用过待编码器的步进电机。【防盗标记–盒子君hzj】增量式编码器正交编码输出信号,用于识别正转和反转,通过微控制器(单片机)的片内外设硬件/软件解码(1)惯性器件-机械陀螺。

qq_35635374的博客 446

K210使用和测试

B站链接: https://www.bilibili.com/video/BV1ET4y1c7rw/ 优快云文件下载: GitHub链接: 目录 前言 4 1 Kendryte开发 5 1.1 IDE环境 5 1.2 开发使用 6 1.2.1 驱动安装 6 1.2.2 使用教程 6 1.3 加载深度学习模型 7 1.4 摄像头和显示屏调试 8 1.4.1 测试camera和LCD 8 1.4.2 图像底色问题 8 1.4.3 LCD图像反...

CV工程猫 1万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

GitHub Actions 自动化:5 个真实运维提效案例

回顾五个案例的共同思路:把高频、规则明确、易出错的运维动作交给流水线,把人的精力留给判断与优化。给出从单点试点到体系化推广的推进建议。

2205_76017107的博客 139

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

上一篇: 【AI简报20210611期】Arm v9架构来啦、开源实战教你实现文字识别!
下一篇: 【RT-Thread新书上架】为什么说这本书是小白必备?
RT-Thread物联网操作系统
博客等级 码龄6年 2万+粉丝 392原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值