1820_ChibiOS中的同步消息

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

1820_ChibiOS中的同步消息_第1张图片

1. 看到这里提到的这个模型,我在想是不是我一直没有搞定的多核可以利用这个机制来解决。如果是多核,ChibiOS的这种机制是否依然奏效?这是一个后续需要去弄清楚的问题。

2. 之前看消息传递过程的说明的时候理解错了,我当时理解的是消息从即将切出去的线程传递出来,可以传递给即将切入进去的线程,但是这个切入进去的线程只是未来切入的一个概念。现在看来不是,而我自己的这个理解其实深思靠不住,如果按我理解的这样就没有所谓的切入概念了。

3. 消息的传递可以基于优先级也可以基于FIFO。

4. 大概看了一下,这个消息其实跟FreeRTOS中的队列消息类似。但是,ChibiOS的很多设计理念是围绕线程展开的,而FreeRTOS中可能是数据。因此,理解的角度上可能会有不同。

1820_ChibiOS中的同步消息_第2张图片

1. 线程可以既是客户端也是服务器端,这让我想到了,其实这个机制可以做一个中转机制。

2. 消息的类型都是msg_t,可以发编码也可以发复杂的数据指针。

3. RT内核中定义的3个编码:MSG_OK、MSG_TIMEOUT、MSG_RESET。

1820_ChibiOS中的同步消息_第3张图片

1. 这一页给出的例子可以看出来,消息的传递有时候不仅仅是为了功能服务的缺失而传递,有时候是为了连接不同的软件抽象层。

2. 可重入的库可以以线程代码的方式封装到线程,这样有几个有点:第一,多线程无序考虑互斥;第二,只需要给server线程分大的堆栈空间;第三,代码会议固定的优先级运行,也就是封装线程的优先级。

1820_ChibiOS中的同步消息_第4张图片

看了接口描述,本来自己假想了一下使用模型,没想到考虑错了。这里的server模板,主要分为4步:第一,server请求消息;第二,获取消息;第三,处理;第四,返回通知。

1820_ChibiOS中的同步消息_第5张图片

         客户端与server几乎是一样的模板,消息内容与处理方式略有不同。看到这里之后,我觉得有一点疑惑:这样的模板如何支持队列化处理?

1820_ChibiOS中的同步消息_第6张图片

1820_ChibiOS中的同步消息_第7张图片

         初始化部分的消息发送,纯粹是一个信息的传递。

         这就是ChibiOS中的消息,与FreeRTOS中的队列还是有一点差异的。

你可能感兴趣的:(ChibiOS,RTOS,ChibiOS)