使用GCC C11时使用FreeRTOS有什么优势?例如,在C11中,我有线程和队列等,因此我不需要FreeRTOS,还是不需要?
发布于 2014-07-05 17:14:39
在C11标准中,线程支持是可选的,它们的实现将是C库的一部分,而不是GCC本身(请参阅here)。我不知道任何运行在嵌入式设备上的C库实现了C11线程(至少newlib没有),所以目前C11线程不是一个选择,除非你计划自己实现它们。
C11线程也没有针对嵌入式系统进行优化,因此您不能指定它们的堆栈大小。
我不知道在C11中有什么队列支持,也许你在想C++11 queues。因此,如果不使用FreeRTOS,则必须实现自己的队列。
发布于 2014-12-05 23:55:00
RTOS提供的不仅仅是线程支持,它们还提供了一种调度机制。查找有关“时间和空间分区”的信息,以便更好地了解RTOS将为您的项目提供什么。要搜索的其他一些内容将是“循环调度”和“优先级抢占调度”。
事实上,FreeRTOS的书写得很好,涵盖了这些概念。我想是35美元。
发布于 2015-12-27 03:28:18
C11和FreeRTOS之间的比较真的不是苹果对苹果的比较。C11是一种语言(标准),而FreeRTOS是一种kernel+OS。
C11大概可以在RTOS或更传统的kernel+OS (如Linux )上运行。
你应该比较的是RTOS和传统的kernel+OS。RTOS是专门为内核的实时响应而设计的。这是通过使内核在非常精细的粒度上可抢占来实现的,这允许在准备好运行时立即运行更高优先级的计算。这在传统内核中并不总是可能的,因为内核的某些部分是不可抢占的。
RTOS还被优化以最小化内核中的任意延迟,如文件系统同步、垃圾收集等。用户空间到内核空间的上下文切换效率更高,因为整个系统实际上运行在单个地址空间和安全环中。通常没有虚拟内存,这用于消除在处理上下文切换的过程中涉及的大量开销,因为虚拟内存页表不需要在每次上下文切换时从头开始交换和构建。后者显然是以计算线程之间的隔离为代价的。中断处理也针对最小开销进行了优化。
https://stackoverflow.com/questions/24461216
复制相似问题