全部学习汇总: GreyZhang/g_ChibiOS: I found a new RTOS called ChibiOS and it seems interesting! (github.com)
1. 最初的这个理解,当看到后面之后就知道有点偏差了。其实,这个传输就是一个单纯的FIFO而不是两个FIFO之间的什么操作。
2. 特点:无动态分配、无拷贝操作、可以在ISR和线程的上下文进行处理。
3. 这个功能的组成由两部分组建:第一,一个有保护的内存池分配器;第二,一个FIFO结构的邮箱。
4. 几个基本的操作:获取、收、发以及返回。
这一份资料的整理会是ChibiOS的大概功能的最后一份要整理的文档,从过去看的这些资料看,这个ChibiOS中的FIFO应用非常多。
1. 内存池和邮箱有相同的大小。
2. 由于有邮箱机制的保护,发送其实不会等待,会保证有响应的资源可用。
3. 传递的过程不会传递数据对象,而是处理数据指针。
4. 结合这一页的这个图可以整理下这个功能机制。如果需要往FIFO里面装填数据,首先得从存储池中分配获取可用存储。如果获取成功了,把相应的存储的指针信息传递出去。其实,这里的传递之前,应该会有数据的处理过程,不然传递一个没有内容绑定的信息应该是没有意义的。传递结束之后,这一个数据其实就已经加入了FIFO。之后,接收方获取数据然后通过邮箱的机制归还邮箱空间,其实也对应着有一个存储池空间的归还。
1. 这一页是涉及到这个功能的一系列API。
2. 从功能描述看,其实这个功能完全可以单独依赖于邮箱来实现。但是,通过邮箱实现,需要处理一个数据组合排序。
3. 如果从比较直接的使用上看这个功能与邮箱机制,那么还是有几个差异的:第一,邮箱对数据结构其实是没有约束的,但是这个FIFO对象则是有数据结构信息的;第二,邮箱传递整包数据,但是如果采用FIFO对象的机制则是可以做到单元素传输的。第三,邮箱多一个数据的组合过程,而这个组合过程则是通过了FIFO机制传递到了下端,由接收者自行做处理判断。
这样,整个ChibiOS的大概的功能算是做了一个基本的了解了。接下来,可以选择一个MCU的平台做一个调试。