1827_ChibiOS中OSLIB的邮箱机制

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

1. 邮箱其实是一个环形队列;

2. 使用场景上,邮箱主要是用来实现异步单向的一些消息或者数据处理的。在处理机制上,支持多对多的机制。

3. 与同步信号消息相比,传递消息的范围没有限制,不再是0,-1与-2这三个,可以支持更多。

1. 邮箱会结合buffer来用,而buffer也是环形的buffer,如果空间用满了之后继续请求使用会导致线程的等待。

2. 使用的过程中,由于又像是单向的,一般会有两个线程分别等待彼此的邮箱读写操作。

3. 如果邮箱进行了reset,那么在进行resume之前,任何操作都会失败,返回已经复位的消息提示。

这里的API分为发和收两部分。

         接下来的这个例子,我不在进行文档标注,直接来通过代码来做一个标注分析。

         最初的这一部分定义,我把叫做buffer的变量加了一个mailbox后缀,这样后面看代码的时候能够更好理解这些信息代表的含义。

         这部分是例程中的一个中断,中断负责的主要工作其实还是获取通信的数据以及状态。在这里的设计示范说明中,如果通过ISR发现了错误,那么会对填充邮箱进行复位。如果是收到了消息,那么会先把消息填充到对应的buffer中,这个buffer就是软件自己控制的不分了。之后,把这部分buffer的信息绑定到释放buffer信息的邮箱之中。绑定的方式就是发送一个邮箱消息。

         这是一个通过邮箱消息获取信号处理网络信息的一个设计模板。在这里面,先从填充邮箱中获取信息,如果检查到了邮箱RESET,那么需要进行错误处理。如果检查到有正常的信号,那么处理接收到的数据。处理完之后,说明现在的邮箱对应的buffer释放了一个。因此,给free buffer邮箱发送一个消息用以表征有新的资源可用了。

         这一部分,主要还是邮箱对象以及线程的初始化或者创建。比较常规的一些操作。

         以上就是邮箱的基本机制以及使用情况,看起来比较适合实现由小数据组合起来的长数据报文。后续的设计中,也可以尝试使用一下看看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值