1821_ChibiOS中的事件机制

         全部学习汇总: GreyZhang/g_ChibiOS: I found a new RTOS called ChibiOS and it seems interesting! (github.com)

1821_ChibiOS中的事件机制_第1张图片

1. 这里开篇就讲了ChibiOS中的事件机制非常强大,算是OS的一个子系统功能。提供了多事件等待、事件与线程多对多、异步广播同步检查等功能。

2. 事件机制涉及到的三个对类别分别是:事件源、事件监听器、事件标志位及线程。

3. 事件源涉及到的两个操作:注册、广播。

4. 什么是事件的状态位呢?以串口驱动涉及到的可能设计为例,这个状态可以是通信的接收、发送、校验以及报错等信息。

1821_ChibiOS中的事件机制_第2张图片

1. 把一个事件监听器注册到事件源上,同时会绑定一个线程。

2. 事件源跟监听器可以是一对多的,而监听器与线程是一对一的,但是这样的机制是可以支持事件源与线程的多对多关系的。

3. 事件的掩码有两种:有效掩码、PENDING标志。

1821_ChibiOS中的事件机制_第3张图片

1.每一个线程必须有一个不同的监听对象。

2.事件的等待可以是等待单一的事件,也可以是等待任意事件,或者是等待全部的事件一起发生。

1821_ChibiOS中的事件机制_第4张图片

这里给出来了两段伪代码,一个是通知注册到同一个事件源的全部监听器;另一个是事件可以由一个线程直接发送给另一个线程。

1821_ChibiOS中的事件机制_第5张图片

1821_ChibiOS中的事件机制_第6张图片

         关于事件的API是非常多的,也可以看得出来这个机制使用的灵活度非常高。

1821_ChibiOS中的事件机制_第7张图片

1821_ChibiOS中的事件机制_第8张图片

         这里给出来的一个例子处理了多个事件,处理的方式是等到任何一个事件都会触发wait的结果。接下来,根据返回的时间信息进行处理逻辑的拆分。

1821_ChibiOS中的事件机制_第9张图片

1821_ChibiOS中的事件机制_第10张图片

1821_ChibiOS中的事件机制_第11张图片

1821_ChibiOS中的事件机制_第12张图片

         第二个例子是涉及到中断的一个例程,ISR中给一个线程直接发信号触发一个动作。其实,很多操作系统中都是提供这样的机制的,主要是的作用是通过这种转换把很多裸系统中需要在ISR中处理的功能转移到线程中处理。不仅可以充分利用OS的线程管理能力,而且还可以保证中断的响应实时性。

你可能感兴趣的:(ChibiOS,java,开发语言,RTOS,ChibiOS)