本文档介绍了RT-Thread Nano 3.0.3 的基本功能,并介绍了如何下载及使用RT-Thread Nano 3.0.3及相关BSP例程。
RT-Thread Nano 3.0.3相比上一个版本2.1.1有了些新的变化:
新增V2M-MPS2 BSP支持
修复MDK 5.14无法复制license问题
更新board.c模板,简化不必要的配置
msh命令导出默认添加RT_USED属性,不需要另外加keep选项
更新stm32_msh和lpc824_msh例子的uart代码,不再依赖drivers ipc部分
移除drivers ipc部分源码
1 本文的目的和结构
1.1 本文的目的和背景
RT-Thread Nano 是 RT-Thread推出的极简版实时操作系统,适用于家电、消费电子、医疗设备、工控等领域大量使用的32位ARM入门级MCU的场合。本文档是快速入门文档,方便用户快速上手使用RT-Thread Nano 3.0.3。
1.2 本文的结构
本文首先介绍RT-Thread Nano 3.0.3基本功能,然后讲解了如何安装及配置RT-Thread Nano 3.0.3及如何获取RT-Thread Nano 3.0.3相关例程。
2 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按需要加载。
图2-1 RT-Thread Nano主要功能
在支持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。
图2-2 RT-Thread Nano内存占用情况
用户基于Nano的应用程序可以直接迁移到RT-Thread完整版。接下来将描述如何在MDK5上基于RTE(Run-Time Environment), 从裸机开始,创建一个RT-Thread RTOS的小系统工程。
3 Pack安装
Pack可以通过MDK联网安装,也可以离线安装。下面开始介绍两种安装方式。
Pack Installer安装
打开MDK软件,点击工具栏的Pack Installer图标:
图3-1 Packs安装
点击右侧的Pack,展开General,可以找到rt-thread::rthread,点击对应的Action的Install,就可以在线安装Pack了。安装成功后Action栏显示 ”Up to date”。
图3-2 Packs管理
手动安装
我们也可以从官网下载安装文件,RT-Thread Nano离线安装包下载,双击下载好的文件进行安装:
图3-3 Packs手动安装
4 基础工程准备
在开始创建RT-Thread小系统之前,我们需要准备一个能正常运行的裸机工程。作为示例,本文使用的是基于STM32L072-Discovery 和Low-Level Library的一个LED 闪烁程序。程序的主要截图如下:
图4-1 STM32L072-Discovery示例
在我们的例程中,编译下载程序后,就可以看到3个LED交替闪烁了。读者可以根据自己的需要使用其他芯片,完成一个简单的类似裸机工程。
5 添加RT-Thread Nano到工程
基于一个可以运行的裸机程序,我们来添加RT-Thread到工程。如下图,点击Manage Run-Time Environment。
图5-1 MDK RTE
在Manage Rum-Time Environment里”Software Component”栏找到RTOS,Variant栏选择RT-Thread,然后勾选kernel,点击”OK”就添加RT-Thread内核到工程了。
图5-2 Nano内核添加
现在可以在Project看到RT-Thread RTOS已经添加进来了,展开RTOS,可以看到添加到工程的文件:
图5-3 添加了RTOS的工程
Kernel文件包括:
clock.c components.c device.c idle.c ipc.c irq.c kservice.c mem.c object.c scheduler.c thread.c timer.c
Cortex-M芯片内核移植代码:
应用代码及配置文件:
board.c rtconfig.h
6 适配RTThread
RT-Thread会用到了异常处理函数HardFault_Handler()和悬挂处理函数PendSV_Handler(),以及Systick中断服务函数SysTick_Handler(),所以用户代码需要保证这几个函数没有被使用,若编译提示函数重复定义,请删除自己定义的函数。
RT-Thread Nano 3.0.3 在 board.c 中默认完成了systick 的配置,用户可以修改宏RT_TICK_PER_SECOND的值配置每秒systick数。
图6-1 systick配置
RT-Thread Nano 3.0.3 默认是使用数组作为heap。
图6-2 heap配置
替换例程中的delay函数:
1). 包含RT-Thread的相关头文件
2). 将delay()函数替换成rt_thread_delay(RT_TICK_PER_SECOND)
下面是完成修改的代码:
图6-3 异常处理修改
编译程序之后下载到芯片就可以看到基于RT-Thread的程序运行起来了。
7 RT-Thread Nano配置
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。
图7-1 Nano配置
8 BSP例程
目前有5个RT-Thread Nano 参考例程,2个基于stm32l0的例程,2个基于lpc824的例程,以及Nano 3.0.3 新增的基于V2M-MPS2的例程。所有例程都可以在MDK上通过Pack Installer找到。点击Pack Installer图标:
图8-1 pack installer
在Search里输入stm32l0,点击Device里的STM32L0 Serials,然后点击右侧的Example,可以看到右侧有基于stm32l0的两个例程。
图8-2 例程
V2M-MPS2 msh 例程简介
V2M-MPS2是MDK提供的开发板,配合Fast Models Debugger(需要MDK-ARM Professional授权且只支持64位系统),就可以不依赖任何硬件,在Cortex-M平台调试代码。
使用V2M-MPS2需要打开windows的telnet客户端:
win7打开telnet客户端(https://jingyan.baidu.com/article/eb9f7b6d8701ae869364e826.html)
win10打开telnet客户端(https://jingyan.baidu.com/article/ceb9fb10a9a1b48cad2ba0c4.html)
打开telnet后,在MDK的Pack Installer里面的Device选择ARM,右侧点击example,可以看到一个基于V2M_MPS2的msh例程。
图8-3 V2M_MPS2 msh例程
点击Copy,导出该例子,编译工程仿真运行,下面是运行成功的截图。
图8-4 V2M_MPS2 msh例程运行成功截图
RT-Thread 同样提供了基于RT-Thread完整版的V2M-MPS2的BSP(板级支持包)(https://github.com/RT-Thread/rt-thread/tree/master/bsp/v2m-mps2),用户可以通过github获取。
-
STM32
+关注
关注
2264文章
10852浏览量
354186 -
RT-Thread
+关注
关注
31文章
1257浏览量
39815
原文标题:RT-Thread Nano 3.0.3 快速入门指南
文章出处:【微信号:RTThread,微信公众号:RTThread物联网操作系统】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论