全部学习汇总: GreyZhang/g_ChibiOS: I found a new RTOS called ChibiOS and it seems interesting! (github.com)
在ChibiOS中有一个RT系统层的部分,也就是内核的系统层。这个在其他的OS中是没有看到的,这里针对这一部分做一个简单的认识。
1. 这个系统层包括几个方面:初始化、放弃或中止、中断处理、关键区、功耗管理、实时的计数器。
2. 初始化的部分,主要就是C语言的main函数中调用的OS的初始化的接口。
1. abort的接口,除了能够让OS停止之外,还能够通过参数传递异常的原因。
2. 中断的处理涉及到处理程序、前后的处理过程接口、快速中断以及中断的使能、挂起以及关闭等功能。
1. 不可冲突的线程关键区、不可重入的ISR关键区需要保护,这个是很容易理解的。
2. 除了上面的部分,还有一段需要做专门的保护,那就是可冲突的通用部分,也需要考虑作为关键区来处理。
功耗管理其实也算不上是OS直接的功能,因为很多功耗的部分是通过其他的手段来实施的。但是OS提供了一个无tick的模式,这种模式下是可以降低一部分功耗的。
1. 实时计数器的两个重要的作用:第一,精确的延时处理;第二,带有超时处理的短暂循环。
2. 有时候,延时控制的一个保障是增加一部分延时时间。这样,很多设计中可能会设计的延时时间超过需求。但是OS的线程是可以中断的,各种切换也会消耗一些时间。因此,有时候这些资源消耗可以考虑成是延时时间功能的一个保障。
3. 这部分还提供了计数器与各种时间单位的转换关系。
看完这部分,其实我看到的功能中在FreeRTOS的设计中基本上也是全都可以看到的。可能ChibiOS中还会有更加详细的描述,不过根据我对FreeRTOS的简单了解,我了解到的FreeRTOS中对这部分功能的支持其实是多于这一份文档中的功能描述的。其实,也可以了解,其实大部分的OS设计或许是殊途同归。不过,我之所以觉得ChibiOS好玩,还是因为它其实是考虑了更多的接口层甚至中间件的设计。折让这个产品可以更好地在设计中得以应用。