搜索
bottom↓
回复: 3

从裸机开始,创建一个RT-Thread Nano系统工程

[复制链接]

出0入0汤圆

发表于 2017-8-15 14:36:39 | 显示全部楼层 |阅读模式
——///  概述 \——
☟☟☟

RT-Thread Nano是一个精炼的硬实时内核,支持多任务处理、软件定时器、信号量、邮箱和实时调度等相对完整的实时操作系统特性,用户可以直接从MDK的Run-time Environment获取,可以使用shell高效地进行在线动态调试。
在支持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。


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

01
Pack安装


Pack可以通过MDK联网安装,也可以离线安装。下面开始介绍两种安装方式。
Pack Installer安装
打开MDK软件,点击工具栏的Pack Installer图标:



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

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


02

基础工程准备在开始创建RT-Thread小系统之前,我们需要准备一个能正常运行的裸机工程。作为示例,这边使用的是基于STM32L072-Discovery 和Low-Level Library的一个LED 闪烁程序。程序的主要截图如下:
  
在我们的例程中,编译下载程序后,就可以看到3个LED交替闪烁了。读者可以根据自己的需要使用其他芯片,完成一个简单的类似裸机工程。

03

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

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

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



04

适配RT-Thread在board.c完成systick的配置。以STM32L072为例,需要添加以下代码:
包含相应的头文件
初始化Systick:根据系统频率和每秒tick数量,配置Systick
在Systick中断处理函数里添加rt_tick_increase()函数。

  

因为RT-Thread用到了异常处理函数HardFault_Handler()和悬挂处理函数 PendSV_Handler(),所以用户代码需要保证这两个函数没有被使用。
最后替换掉上面例程的delay函数:
包含RT-Thread的相关头文件
将delay()函数替换成rt_thread_delay(RT_TICK_PER_SECOND)。

下面是完成修改的代码:

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

05

更多例程更多参看例程可以在MDK上通过Pack Installer找到。点击Pack Installer图标:
  
我们可以在Search里输入stm32l0,点击Device里的STM32L0 Serials,然后点击右侧的Example,可以看到右侧有基于stm32l0的两个例程。

  
获取更多关于RT-Thread的使用(线程调度和管理、定时器、任务间同步及通信等等),请在本公众号回复关键词:RT-Thread编程手册。


长按二维码识别加入RT-Thread Nano交流群,与RT-Thread官方团队直接交流。若群满请添加微信13924608367,注明rt-thread,拉进群。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入135汤圆

发表于 2017-8-15 14:39:03 | 显示全部楼层
已经按照这个教程创建了一个工程,开始研究rtt

出0入4汤圆

发表于 2017-8-15 14:48:26 | 显示全部楼层
用LL是默认的?还是写这个教程人的风格?

出0入0汤圆

 楼主| 发表于 2017-8-15 14:51:42 | 显示全部楼层
gmyu 发表于 2017-8-15 14:48
用LL是默认的?还是写这个教程人的风格?

看代码是默认的
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 05:35

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表