RT-Thread Nano 3.0.3 快速入门教程

    本文档介绍了 RT-Thread Nano 3.0.3 的基本功能,以及它的下载、使用和 BSP 例程。

    RT-Thread Nano 是 RT-Thread 推出的极简版实时操作系统,适用于家电、消费电子、医疗设备、工控等领域大量使用的 32 位 ARM 入门级 MCU 的场合。本文档是快速入门文档,方便用户快速上手使用 RT-Thread Nano 3.0.3。

    本文的结构

    本文首先介绍 RT-Thread Nano 3.0.3 基本功能,然后介绍了它的安装及配置,最后介绍如何获取相关例程。

    RT-Thread Nano 简介

    RT-Thread Nano 是一个精炼的硬实时内核,内存资源占用极小,功能包括任务处理、软件定时器、信号量、邮箱和实时调度等相对完整的实时操作系统特性。MDK5 以后采用 pack 形式管理芯片及各种相关组件,RT-Thread Nano 也是通过 MDK pack 方式发布,RT-Thread Nano pack 包括 device drivers、kernel 和 shell (msh) 三部分功能,用户可以从 MDK 的 Run-time Environment 按需要加载。

    在支持 semaphore 和 mailbox 特性,并运行两个线程 (main 线程 + idle 线程) 情况下,ROM 和 RAM 依然保持着极小的尺寸。我们基于 Cortex M0 MCU 的一个例子,编译后的大小(ROM: 3.25K, RAM: 1.04K),除去 MCU 需要的 ROM 和 RAM, RT-Thread Nano 本身需要的 ROM 是 2.5K , RAM 是 1K。

    RT-Thread Nano 内存占用情况

    用户基于 Nano 的应用程序可以直接迁移到 RT-Thread 完整版。

    接下来将描述如何在 MDK5 上基于 RTE(Run-Time Environment), 从裸机开始,创建一个 RT-Thread RTOS 的小系统工程。

    Pack 可以通过 MDK 联网安装,也可以离线安装。下面开始介绍两种安装方式。

    • Pack Installer 安装
      打开 MDK 软件,点击工具栏的 Pack Installer 图标:

    点击右侧的 Pack,展开 General,可以找到 rt-thread::rthread,点击对应的 Action 的 Install,就可以在线安装 Pack 了。安装成功后 Action 栏显示 ”Up to date”。

    • 手动安装
      我们也可以从官网下载安装文件,,双击下载好的文件进行安装:

    Packs 手动安装

    基础工程准备

    在开始创建 RT-Thread 小系统之前,我们需要准备一个能正常运行的裸机工程。作为示例,本文使用的是基于 STM32L072-Discovery 和 Low-Level Library 的一个 LED 闪烁程序。程序的主要截图如下:

    在我们的例程中,编译下载程序后,就可以看到 3 个 LED 交替闪烁了。读者可以根据自己的需要使用其他芯片,完成一个简单的类似裸机工程。

    基于一个可以运行的裸机程序,我们来添加 RT-Thread 到工程。如下图,点击 Manage Run-Time Environment。

    MDK RTE

    在 Manage Rum-Time Environment 里”Software Component” 栏找到 RTOS,Variant 栏选择 RT-Thread,然后勾选 kernel,点击”OK” 就添加 RT-Thread 内核到工程了。

    现在可以在 Project 看到 RT-Thread RTOS 已经添加进来了,展开 RTOS,可以看到添加到工程的文件:

    添加了 RTOS 的工程

    适配 RT-Thread

    RT-Thread 会用到了异常处理函数 和悬挂处理函数 PendSV_Handler(),以及 Systick 中断服务函数 ,所以用户代码需要保证这几个函数没有被使用,若编译提示函数重复定义,请删除自己定义的函数。

    RT-Thread Nano 3.0.3 在 board.c 中默认完成了 systick 的配置,用户可以修改宏 RT_TICK_PER_SECOND 的值配置每秒 systick 数。

    RT-Thread Nano 3.0.3 默认是使用数组作为 heap。

    替换例程中的 delay 函数:

    1). 包含 RT-Thread 的相关头文件

    2). 将 delay() 函数替换成

    下面是完成修改的代码:

    异常处理修改

    编译程序之后下载到芯片就可以看到基于 RT-Thread 的程序运行起来了。

    RT-Thread 是一个高度可配置的嵌入式实时操作系统,配置文件是 rtconfig.h。Nano 就是 rtconfig.h 配置下实现了 2.5K ROM,1K RAM 的内核应用。用户可以根据自己的需要通过修改 rtconfig.h 文件里面的宏定义配置相应功能。

    RT-Thread Nano 默认未开启宏 RT_USING_HEAP,故只支持静态方式创建任务及信号量。若要通过动态方式创建对象则需要在 rtconfig.h 文件里开启 RT_USING_HEAP 宏定义。

    MDK 的配置向导 configuration Wizard 可以很方便的对工程进行配置,Value 一栏可以选中对应功能及修改相关值,等同于直接修改配置文件 rtconfig.h。