微信公众号 | strongerHuang
早期,51单片机时代,处理器处理能力不足、RAM/Flash资源有限,要跑RTOS都很费劲。
而如今科技快速发展,早期遇到的问题都不是问题了,好多单片机主频都上1GHz了,RAM容量也已突破1MB,Falsh存储更是最大,再加上现在各种丰富的外设计口,外部扩展Flash也变得更方便了。
面对这种高性能、高存储的MCU,跑传统的RTOS(µC/OS、FreeRTOS等)可能不是这类MCU的目标,这几年看到的消息是,这类MCU都在拥抱IEEE POSIX 标准的RTOS,比如Zephyr、NuttX、RX5 这类 RTOS。
什么是POSIX ?
POSIX:Portable Operating System Interface,可移植操作系统接口。
是IEEE为要在各种UNIX操作系统上运行软件,而定义API的一系列互相关联的标准的总称。来源:百度百科
Linux基本上逐步实现了POSIX兼容,但并没有参加正式的POSIX认证。微软的Windows NT声称部分实现了POSIX标准
值得关注的PX5 RTOSPX5 RTOS推出时间才3年左右,PX5 号称全新第五代 RTOS。
最小占用空间约1K RAM、1K Flash,亚微秒级上下文切换和 API 调用等。
PX5 RTOS 具有行业标准 POSIX pthreads API ,除了原生 POSIX pthread 支持信号量、互斥锁、消息队列等之外,PX5 RTOS 还提供实时扩展,如事件标志、快速队列、时钟周期计时器、内存管理等。
PX5 RTOS 由两个主要的源文件组成:px5.c和px5_binding.s
将这些RTOS文件放入任何C主项目中,然后即可运行PX5,无需复杂的项目和/或链接器控制文件的更改。
在应用程序中使用PX5也很简单:只需包含POSIX pthread.h并添加一个调用px5_pthread_start 到你的 C 主函数,如下所示:
#include <pthread.h>int main(){/* Start PX5. */px5_pthread_start(1, NULL, 0);/* Once px5_pthread_start returns, the C main functionhas been elevated to a thread - the first thread inyour system! */while(1){/* PX5 RTOS API calls are all available atthis point. For this example, simply sleep for1 second. */sleep(1);}}
这两年,PX5 RTOS的生态也逐渐发展起来了,很多MCU大厂,如:ST、瑞萨、英飞凌等都在做适配。
NuttX、Zephyr、RT-Thread这类RTOS也是未来趋势
NuttX、PX5 RTOS是原生实现IEEE POSIX pthreads API,Zephyr实现了IEEE 1003.1-2017(POSIX-1.2017)的子集,RT-Thread的POSIX接口基于内核函数封装。
符合IEEE POSIX行业标准 ,就可无缝移植 Linux/POSIX 线程代码,这类RTOS可以看做是“小号 Linux”。
所以,你知道为什么说符合IEEE POSIX行业标准将是未来趋势吗?
971