为什么你应该考虑RTOS?对大多数人来说,这可以归结为知道“你最擅长什么”。如果你总是用裸机编程,那么总是用那种方式编程就成了惯例。如果你从未使用过RTOS,你可能不会意识到RTOS可以给嵌入式开发项目带来的好处。虽然它们更加强大和复杂,但是使用RTOS并不一定是更耗时的开发路线。
当使用功能有限的小型系统时,在裸机上使用超级循环架构来调度任务可能是一个非常合适的解决方案,但是当对调度有更高的要求,并且执行时间变得更加复杂时,可能是时候考虑RTOS了。
更大的灵活性
超级循环体系结构的一个关键问题是定时和响应时间,因为它们是由代码结构决定的,如果进行修改或添加,它们会发生变化。相比之下,RTOS通常能够实现更大的调度灵活性。基于优先级的抢先式RTOS允许根据任务的实时要求对任务进行优先级排序。具有严格时间约束的任务能够优先于那些具有更大调度灵活性的任务,从而提高应用程序对时间关键事件的响应能力。虽然可以在裸机上实现某种形式的抢先调度,但它的范围有限。
![](https://i-blog.csdnimg.cn/blog_migrate/d3ba4fd0ca88a15236e49472f7554d91.png)
简化集成
即使不要求实时响应,使用RTOS也可以简化集成。如果你的应用程序将来需要或可能需要与文件系统、TCP/IP和GIU等组件进行交互,这些组件可以作为单独的任务简单地添加到系统中。裸机应用直接与处理器寄存器交互,而RTOS和/或硬件抽象层(HAL)位于裸机和应用之间。嵌入式开发人员与RTOS和Hal互动,而不是与裸机互动。因此,RTOS的模块化设计使得使用所提供的RTOS资源与任务和驱动程序进行通信变得容易,从而缩短了开发时间。
更少的编码,更多的代码重用
RTOS提供的资源还支持简单的任务创建、销毁、同步以及任务和处理器资源之间的通信。所需要的只是对RTOS API的理解。这是一个一致的接口,一旦掌握,就可以在应用程序和处理器之间实现代码重用和可移植性。RTOS还允许将应用程序分解成更小的自治任务,每个任务在其自己的上下文中执行,这可以降低复杂性,并有助于调试和验证。
为什么要学习FreeRTOS?
RTOS应该易于使用、编译并受多种架构支持。FreeRTOS内核是世界上最流行的嵌入式RTOS,拥有庞大的用户群。FreeRTOS与处理器和编译器无关,因此提供跨平台支持,目前支持超过35种不同的架构供嵌入式开发人员使用。顾名思义,FreeRTOS内核可以从FreeRTOS网站免费下载和使用,在M.I.T .许可下分发。