嵌入式OS入门笔记——以RTX为案例
扫描二维码
随时随地手机看文章
嵌入式OS入门笔记-以RTX为案例
本篇笔记将简单介绍RTX,包括基本架构,如何在Keil中配置。需要安装ARM-MDK和一块硬件板,笔记以STM32F4Discovery为例子。
1.为什么要用RTOS?
尽管把所有程序放在一个大的循环里顺序执行,总是可能的(甚至很多时候是足够的胜任任务的),但是这样做有好几个明显的缺点:
• 过分依赖中断 ISR(Interrupt Service Routine, 中断服务例程)
• 同步不同的ISR不容易
• 可预测性和延展性很差(大量的ISR,甚至是中断嵌套)
• 对局部的修改会对整个系统有水花效应(没有模块化,牵一发而动全身)
RTOS主要是把要执行的运算包装在小的task里面,这样好的好处是:
• 更好的程序流(program flow)和反应
• 多任务(尽管这是假象)
• 简单的ISR,强的决定性
• 更好的进程间通信
• 更好的资源管理
• 最关键的是,开发成本低!
一个不成文的小经验:如果源程序大于1MB,那就有必要用RTOS了!
2.为什么不要用RTOS?
当然,也有很多情况下我们不希望用RTOS的:
• 项目简单
• 不想学RTOS
• RTOS尽管性能方便出色,但不是最优的!(好比用汇编还是用C,有经验的程序员可以写出比编译器效率更高的代码,可是编译器大大简化开发过程。)如果需要极致的性能优化,那可能RTOS不是你的第一选择,毕竟RTOS是有内存和运行overhead的。
• 开发RTOS很耗时间
• 不是所有RTOS都是免费的
3.为什么RTX?
为什么选RTX不选别的RTOS,例如FreeRTOS?
• 免费(royalty-free,买断式的授权)
• 好上手
• 对硬件要求低
• 和ARM软硬件兼容性好(ARM-MDK自带)
• 可以查看源代码
其实主要还是看应用,RTX在行业里声誉还是很好的,稳定性强,开发成本低,而且基本功能齐全。
4.RTX的结构
RTX其实是Keil Real-Time Library (RTL)的核心,这个RTL有很多部分的,都是在RTX kernel基础上库。 RTX Kernel本身的话,结构大概如下图:
主要的组件有:mutex互斥锁,memory pool内存池,mailbox邮箱,time(timer)定时器, event事件, semaphore旗语或信号灯,task management进程管理等等和最核心的Scheduler排程器(进程调度器)。
5.移植到RTX上很简单!
移植一个现有的ARM-MDK工程到RTX上非常简单:
1.在工程配置中选择RTX Kernel作为你的操作系统,如下图:
2.在你的main.c里添加头文件RTL.H:
#include
3.复制RTX_Conf_CM.文件到你的工程里。