Author: lebhoryi@gamil.com
Date: 2021/06/02
前言:
(RT-Thread 开发)之前是仅适用于 Windows 10 场景下,发现对于 Linux 开发者有点不太友好。
有一个解决方法是:在 Windows 环境下先用 RT-AK 生成 AI BSP,然后切换到 Liunx 编写应用代码,这样就比较麻瓜。
所有就有了现在这个教程。距离保姆级的教程差的有点远,我尽量努力说明每一个步骤。有问题请留言
1. 运行前的准备
我用的还是 ART-PI BSP,可以换成其他 stm32 的板子
准备以下四份重要重要重要的材料:
Index | Prepare | Example |
---|---|---|
1 | 硬件以及 BSP | ART-PI BSP |
2 | 神经网络模型 | ./rt_ai_tools/Model/keras_mnist.h5 |
3 | STM32 AI 插件 | X-CUBE-AI |
4 | RT-AK | RT-AK 代码克隆到本地 |
2. RT-AK 运行
已经将 RT-AK linux 版本的代码补充,直接运行即可
具体的和 Windows 版本一样。
内部的流程请看源码或者 plugin_stm32
仓库下的 readme
文档
-
RT-AK STM32 Github: https://github.com/RT-Thread/RT-AK-plugin-stm32
请在 rt-ak/RTAK/tools
路径下运行该程序。
# 基础运行命令
$ python aitools.py --project=<your_project_path> --model=<your_model_path> --platform=stm32 --ext_tools=<your_x-cube-ai_path> --clear
# 示例
$ python aitools.py --model="./Models/keras_mnist.h5" --project /home/lebhoryi/RT-Thread/test --platform stm32 --ext_tools /home/lebhoryi/Software/x-cube-ai --clear
# 指定转换模型的名称,--model_name 默认为 network
$ python aitools.py --project=<your_project_path> --model=<your_model_path> --model_name=<model_name> --platform=stm32 --ext_tools=<your_x-cube-ai_path>
3. 编译
需要安装编译器 gcc-arm-none-eabi-6_2-2016q4
,参考:在 Ubuntu 平台开发 RT-Thread
3.1 安装 Scons 和 ncurses
$ sudo apt-get install scons libncurses5-dev
3.2 安装编译器
使用 apt-get 命令安装的编译器版本太旧会导致编译报错,
可依次使用如下命令下载安装新版本,
下载链接和解压文件夹名因下载版本而异:
tom@laptop:~$ cd /tmp/
tom@laptop:/tmp$ wget https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-rm/6-2016q4/gcc-arm-none-eabi-6_2-2016q4-20161216-linux.tar.bz2
tom@laptop:/tmp$ tar xf ./gcc-arm-none-eabi-6_2-2016q4-20161216-linux.tar.bz2
tom@laptop:/tmp$ mv gcc-arm-none-eabi-6_2-2016q4/ /opt/
tom@laptop:/tmp$ /opt/gcc-arm-none-eabi-6_2-2016q4/bin/arm-none-eabi-gcc --version
以上命令下载编译器,并安装到 /opt/gcc-arm-none-eabi-6_2-2016q4/
。
如果最后输出结果如下,则安装完成:
arm-none-eabi-gcc (GNU Tools for ARM Embedded Processors) 6.2.1 20161205 (release) [ARM/embedded-6-branch revision 243739]
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
3.3 设置指定编译器
在 ~/.bashrc
最后面添加下面这一行:
export RTT_EXEC_PATH=/opt/gcc-arm-none-eabi-6_2-2016q4/bin
3.4 编译
进入到 BSP 路径下,运行 scons -j 6
4. 下载固件
这里我选择的是 STM32Programmer CLI
linux 版本安装步骤:
-
运行
./SetupSTM32CubeProgrammer-2.7.0.linux
-
设置环境变量
export PATH=<my STM32CubeProgrammer install directory>/bin:$PATH
编译的命令:
# 进入到你的 BSP 路径
$ cd <BSP>
# extload 是 art-pi 专属下载算法
$ STM32_Programmer_CLI -c port=SWD --extload ./board/stldr/ART-Pi_W25Q64.stldr -d rtthread.bin 0x90000000 -Rst -s
5. 运行程序
我们提供了一份运行模型推理的示例应用代码,mnist_app.c。
下载解压,放置到 <BSP>/applications
路径下,然后重新编译和烧录
串口通信工具我用的是 minicom
,具体安装和使用请百度
# 查看串口
$ ls /dev
# 我的串口是 /dev/ttyACM0
$ minicom -wD /dev/ttyACM0
\ | /
- RT - Thread Operating System
/ | \ 4.0.3 build Jun 2 2021
2006 - 2020 Copyright by rt-thread team
msh />mnis
mnist_app
msh />mnist_app
[AI.LOG]run_time_cost:1
[AI.LOG]The Mnist prediction is : 7
msh />