基于 Keil MDK 移植 RT-Thread Nano
后文rtt代表RT-Thread
在官网公众号中,看到rtt发布了rtt nano,这个就很轻量级的rtos内核,把多余的驱动都裁剪了,因此移植工作量小,可以哪来学习一番,体验rtt之美
rtt现在也集成到cubemx5.0以上的平台,类似于freertos中间件,这个做法,倒是有点类似于大厂的风格了,看好rtt。
在keil5中,有两种方法可以移植rtt nano。
前提条件是:cubemx生成一个最小的裸机led系统。
MRTE的方法,
1、这个需要下载pack包RealThread::RT-Thread,keil有很多类似的第三方包,有ucos,freertos(这个比官网更新的都快,厉害了我的keil)rtx还是keil自带的免费rtos,这个我之前也有移植文档,也是很方便的。
安装好之后,左上方的写的小正方形,里面的rtos里面有很多选项。之前一直找不到, 是rtt的技术支持微信亲自指点的。因此需要注意。

我的选择如下:

其他的你也看到, 集成有很多rtos。

2、之后编译,会出现很多错误(重复定义之类),可以看到rtt的官网上,已经提到了,需要把很多中断Handler()注释掉,因为rtt自己已经实现了很多中断函数。
3、添加<rtthread.h>,把hal_delay()替换成rtt的延时函数,再次编译,即可一次成功。
源文件移植方法:
1、在现有的裸机工程中,添加rtt nano的3.1.3源码。注意也有rtt3.1.3的完整版,完整版的代码就很大了。我们使用namo版本,两个版本官网都可以下载。
2、依照官网的说明,把源文件拷贝到工程目录中,逐次添加c文件,.s文件,s文件是编译器有区别的,iar gcc rdvs三种。c文件都是一样的,因此移植工作很简单。

3、把重复定义的,需要注释相关中断,因为rtt已经实现了。
4、魔术棒里面,添加c的头文件路径。添加<rtthread.h>,把hal_delay()替换成rtt的延时函数,再次编译,即可一次成功。
5、编译,运行。
这里讲讲几个细节:
1、首先rtt默认不使用heap,这样可以保持1一个较小的体积,不用为内存堆开辟空间。开启系统 heap 将可以使用动态内存功能,如使用 rt_malloc、rt_free 以及各种系统动态创建对象的 API。
这个可以比较好的理解。就相当于把rtt当作一个静态生成任务,适合新手,在freertos中,我们通常使用heap4.c的内存管理,使用动态的方式来创建任务的,rtt也是可以的,需要开启宏定义。细节可以参考官网文档。
2、配置文件,这个类似于之前用过的nrf的工程,用作系统裁剪。其实就是.h文件,符合keil的规范,当然iar里面是只能修改代码的。编译器ide的差别。
3、裸机中的main函数,经过移值以后,变成了main线程。这个是比较聪明的方法,在其他公众号中,我看到了他的实现原理,可以单步仿真试试他到底是怎么运行的。说白了,在main线程运行之前,就已经作了一些代码操作,如初始化工作,时钟滴答等等,还可以把一定硬件初始化放到rtt写的代码中。
4、后面就可以自己在main线程中,再根据需求创建新的线程。
参考文档:https://www.rt-thread.org/document/site/tutorial/nano/nano-port-keil/an0039-nano-port-keil/
基于 Keil MDK 移植 RT-Thread Nano的更多相关文章
- 免费的EmBitz可替代Keil MDK开发STM32、NXP项目
一.背景 由于使用之前开发STM32是基于Keil MDK编译环境开发的,由于该软件是收费的,想用个免费开源的软件来替代Keil,EmBitz编译器是免费的,可以完全替代开发.下载程序支持J-Link ...
- 基于IAP和Keil MDK的远程升级设计
写在前面:三个周之前,我突然想写一个远程升级的程序.那个时候我只是大概知道IAP的意思是在应用编程,但怎么编,我还一无所知.我给自己定下一个个阶段目标,从最基础的代码一点点写起,解决一个又一个的问题. ...
- Keil MDK STM32系列(九) 基于HAL和FatFs的FAT格式SD卡TF卡读写
Keil MDK STM32系列 Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发 Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401 ...
- Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发
Keil MDK STM32系列 Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发 Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401 ...
- Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401开发
Keil MDK STM32系列 Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发 Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401 ...
- Keil MDK STM32系列(三) 基于标准外设库SPL的STM32F407开发
Keil MDK STM32系列 Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发 Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401 ...
- Keil MDK STM32系列(四) 基于抽象外设库HAL的STM32F401开发
Keil MDK STM32系列 Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发 Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401 ...
- Keil MDK STM32系列(六) 基于抽象外设库HAL的ADC模数转换
Keil MDK STM32系列 Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发 Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401 ...
- Keil MDK STM32系列(七) STM32F4基于HAL的PWM和定时器
Keil MDK STM32系列 Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发 Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401 ...
随机推荐
- Tensorflow2 快速简单安装命令
使用如下命令 pip3 install numpy pandas matplotlib sklearn tensorflow==2.0.0-alpha0 -i https://pypi.doubani ...
- 升级最新版Rancher 2.2.6
前言:之前采用离线方式部署好了 Rancher 2.2.4(https://www.cnblogs.com/weavepub/p/11053099.html),这次升级到最新版本 Rancher 2. ...
- [EXP]CVE-2019-0604 Microsoft SharePoint RCE Exploit
研表究明,汉字的序顺并不定一能影阅响读,比如当你看完这句话后,才发这现里的字全是都乱的. 剑桥大学的研究结果,当单词的字母顺序颠倒时,你仍旧可以明白整个单词的意思.其中重要的是:只要单词的第一个字母和 ...
- 递推 + 高精度 --- Tiling
Tiling Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7264 Accepted: 3528 Descriptio ...
- 案例:使用logstash收集游戏服务器日志,输出到kafka消息队列中,然后存入ES
gamelogs2kafka.conf input { file { codec => plain { charset => "UTF-8" } path => ...
- JS获取当前时间戳及时间戳的转换
获取现在的Unix时间戳(Unix timestamp) Math.round(new Date().getTime()/1000) //getTime()返回数值的单位是毫秒 Unix时间戳(Un ...
- win10企业版|激|活|码
使用下面的激活码升级成企业版 NPPR9-FWDCX-D2C8J-H872K-2YT43 激活后,如果右下角出现未激活的白色字体用cmd命令,管理员窗口运行下面的命令 win10企业版用户请依次输入: ...
- python 中 try,except,finally 的执行顺序
写代码的时候发现了好玩的事情,常常作为终止的 return 语句并不总是能够立刻跳出函数 def A(): try: for i in range(10): if i == 5: return pri ...
- statsvn使用小记
准备工作 1.安装TortoiseSVN,在安装时需要安装svn命令行工具: 2.拉取svn代码: svn co https://svn.myserver.cn/svn/myproject1\trun ...
- vue动画理解,进入、离开、列表过度和路由切换。
vue的动画对于很多初学者,甚至对很多老鸟来说也是很费劲,不容易控制的. 这篇文章讲vue动画的理解.其实没那么难. 动画理解 一个元素从A状态变成B状态,如果这个过程通过某种方式反应在视图上了,那么 ...