未分类 · 2022年10月31日

基于STM32的RT-thread工程创建-使用VSCode

RT-thread官方源码点击进入
官方教程:https://www.rt-thread.org/document/


一、起因

最近开始学习板载操作系统,由于RT-thread作为一款国产物联网操作系统,教程详细,使用方便,所以这一个系统作为入门实时操作系统的入门之选,为了记录学习过程,在这记录发帖子。

这里我们使用VScode编程,基于EIDE进行编写程序,不使用官方RT-thread studio

关于TR-thread的入门教程有很多,这里就不再赘述

RT-thread新手入门教程——》教程

准备工作

在开发前,我们需要先安装好

  • keil MDK,
  • stm32pack包
  • STM32cubeMX,
  • vscode 安装好EIDE插件(也可以使用TR-thread studio官方插件)
  • RT-thread源码
  • Env
    由于不使用RT-thread studio,因此配置工程我们需要安装Env(点击跳转)进行下载,解压到安装目录。
    Env 用户手册
    并将Env配置到右键菜单内如下:

    根据图片上的步骤操作,就可以在任意文件夹下通过右键菜单来启动 Env 控制台。效果如下:

    关于RT-thread源码

RT-Thread源代码目录结构如下图所示:

名称 描述
BSP Board Support Package(板级支持包)基于各种开发板的移植
components RT-Thread 的各个组件代码,例如 finsh,gui 等。
documentation 相关文档,如编码规范等
examples 相关示例代码
include RT-Thread 内核的头文件。
libcpu 各类芯片的移植代码。
src RT-Thread 内核的源文件。
tools RT-Thread 命令构建工具的脚本文件。

RT-Thread RTOS 支持许多架构,并且已经涵盖了当前应用中的主要架构。涉及的架构和芯片制造商有:

ARM Cortex-M0/M0+:如芯片制造商 ST
ARM Cortex-M3:如芯片制造商 ST、全志、灵动等.
ARM Cortex-M4:如芯片制造商 ST、Nuvton、NXP、GigaDevice、Realtek、Ambiq Micro等
ARM Cortex-M7:如芯片制造商 ST、NXP
ARM Cortex-M23:如芯片制造商 GigaDevice
ARM Cortex-M33:如芯片制造商 ST
ARM Cortex-R4
ARM Cortex-A8/A9:如芯片制造商 NXP
ARM7:如芯片制造商Samsung
ARM9:如芯片制造商Allwinner、Xilinx 、GOKE
ARM11:如芯片制造商Fullhan
MIPS32:如芯片制造商loongson、Ingenic
RISC-V:如芯片制造商Hifive、Kendryte、芯来Nuclei
ARC:如芯片制造商SYNOPSYS
DSP:如芯片制造商 TI
C-Sky
x86

支持的 IDE 和编译器

RT-Thread主要支持的IDE/编译器包括:

  • MDK KEIL
  • IAR
  • Gcc
  • RT-Thread Studio
    使用基于 Python 的 scons 进行命令行生成。

    我们使用KEIL的工程,使用vscode gcc调试编译。

打开项目

打开源码中的BSP(板级支持包)文件夹 可以看到rt-thread支持的芯片都在各个文件夹中,找到STM32,选择对应的开发板文件夹(我是用的是野火的开发板,所以我这里打开的是野火的板子文件夹)

打开会是一个基于rt-thread的keil工程

双击就可以打开这个工程,并且编译,下载进开发板。

各个目录所包含的文件类型的描述如下表所示:

目录名 描述
applications RT-Thread 应用程序。
rt-thread RT-Thread 的源文件。
components RT-Thread 的各个组件目录。
include RT-Thread 内核的头文件。
libcpu 各类芯片的移植代码,此处包含了 STM32 的移植文件。
src RT-Thread 内核的源文件。
tools RT-Thread 命令构建工具的脚本文件。
drivers RT-Thread 的驱动,不同平台的底层驱动具体实现。
Libraries ST 的 STM32 固件库文件。

创建项目

由于这个rt-thread的代码是上层文件夹的,复制出来很麻烦,在内部修改,容易改动源码。

因此我们需要基于源码创建一个独立项目

1、空白处右键,启动Env,或者通过CD到当前的板载项目目录


如图所示(env打开当前目录界面)

我们需要使用scons命令

SCons 是一套由 Python 语言编写的开源构建系统,类似于 GNU Make。它采用不同于通常 Makefile 文件的方式,而是使用 SConstruct 和 SConscript 文件来替代。这些文件也是 Python 脚本,能够使用标准的 Python 语法来编写。所以在 SConstruct、SConscript 文件中可以调用 Python 标准库进行各类复杂的处理,而不局限于 Makefile 设定的规则。

/
  -- rtconfig.py    ---- 控制SCons构建的配置文件,存放了如工具链,构建参数等配置。
  -- SConscript
  -- SConstruct    ---- SCons的入口脚本,初始化了SCons构建rt-thread所需的必要环境
  -- Kconfig        ---- 顶层Kconfig文件,menuconfig的入口Kconfig文件
  -- rt-thread/
  --- src/
  ---- SConscript   ---- 各级源码的scons子脚本,控制当前级别下的源码构建行为
  ---- Kconfig      ---- 各级源码的Kconfig子脚本,存放当前级别下的配置项
  ---- **.c

关于scons的使用教程----》scons教程

2、在界面内输入命令scons --dist

上面显示更新了新的MDK5等工程

3、这时在我们的文件夹多了一个dist的文件夹,里面有一个生成的项目的压缩包和一个文件夹,这个项目就是独立外部源码的项目

4、我们的独立工程就创建完成了

打开工程

我们在这个生成的工程文件夹内,右键打开Env输入 code打开vscode

选择EIDE插件(使用RT-Thread Studio插件也是差不多操作),选择导入项目、再选择MDK,打开该项目的keil工程

配置好烧入器,配置好调试器,具体方法这里不过多赘述,并且在终端我们也可以调用scons

点击编译并且烧入程序



至此我们的板子led灯被成功点亮

打开vscode的串口调试助手,可以看到输出了RT-thread的版本信息。

我们输入list_thread,可以查看系统的线程信息

配置外设资源

在目录右键打开Env下打开输入menuconfig 打开配置界面。如图所示


通过键盘上的上下键移动光标,选中 (Hardware Drivers Config)然后按回车键进入硬件驱动配置菜单。
在硬件配置菜单里有三个选项,分别是 (板载外设配置菜单)、(片上外设配置菜单)和(扩展模块配置菜单),按回车键进入板载外设配置菜单。

在外设外设配置菜单里按空格建开启,按回车建进入

最后保存退出
然后右移光标选中 Save 按回车键保存,然后继续按按回车键退出配置工具。


更新工程

输入命令 pkgs --update 使软件包配置生效。

输入命令 scons --target=mdk5 -s 重新生成 MDK5 的工程。

输入命令code 打开vscode 使用EIDE重新导入工程,导入vscode编译下载
从新打开的工程可以看到,外设菜单中多了很多的外设文件。

至此我们完成了RT-thread 的工程配置。