VBus
介绍
VBus组件是RT-Thread与RT-Thread,或者RT-Thread与Linux沟通的桥梁,能够让双方自由交换数据和信令,形成分布式通信VBus 是建立在环形缓冲区上的一个组件,用于高效的进行系统间通讯,主要功能和特点如下:
thread技术o支持 QoS,保证关键数据及时送达;
o支持多路复用,可以在一条 VBus 上实现多种功能;
o直接使用 device 接口和文件接口,方便易用;
o支持阻塞连接;
oLinux 侧支持用户态驱动程序,可靠性高;
oLinux 用户态程序可以像操作普通文件一样通过 VBus 来进行通讯:
▪可以通过常规的 open/read/write/close 函数来进行操作,也支持 select。
o同时也支持 Linux 内核态使用 VBus。
oRT-Thread 程序可以像操作普通设备一样通过 VBus 来进行通讯:
▪就像普通的串口设备一样,可以通过 rt_device{open,read,write,close} 来进行操作
VBus 中数据的发送和接收
VBUS及其上的分布式组件
整个 VBus 是分层,分模块的易于扩展的架构。用户可以通过高级的 API(文件接口或者设备接口)或者底层的 VBus API 编写自己的驱动和应用程序,而不用关心底层的细节。
orsh/finsh shell:
▪调试用的命令行接口
orfs/DFS:
▪用于向 RT-Thread 提供的远程文件系统访问接口;亦支持 RT-Thread 去访问 Linux 的设备文件;
ornet:
▪RT-Thread 上的虚拟网卡,提供 Linux 与 RT-Thread之间的相互访问,以及和远端的访问;
oUSB 虚拟端点
▪将一个 USB 的端点通过 VBus 映射到 RT-Thread 中的设备中
技术指标
如何理解RT-Thread中的环形缓冲区(Buffer Ring)?
∙其实编程指南里面已经描述了,如果仍不能理解,可以参考以下示意图:
∙
∙环形Buffer的特点:
∙通常包含一个读指针(read_index)和一个写指针(write_index)。读指针指向环形Buffer中第一个可读的数据,写指针指向环形Buffer中第一个可写的缓冲区。通过移动读指针和写指针就可以实现Buffer的数据读取和写入。在通常情况下,环形Buffer的读用户仅仅会影响读指针,而写用户也仅仅会影响写指针。
∙环形Buffer的原理:
∙首先在内存里开辟一片区域(大小为 buffer_size),对于写用户,顺次往Buffer里写入东西,一直写到最后那个内存(buffer_size)时再将写指针指向内存区域的首地址,即接下来的数据转个环放到最开始处,只有遇到Buffer里的有效存储空间为0时,才丢掉数据;对于读用户,顺次从Buffer里读出东西,一直读到最后那个内存(buffer_size)时再将读指针指向内存区域的首地址,即接下来转个环从最开始处取数据。
∙有效存储空间与buffer_size的区别:有效存储空间是指那些没有存放数据,或者以前存放过但已经处理过的数据,就是可用的空间大小;而buffer_size指的是总大小。
∙通过上面介绍可知,环形Buffer仍然是一长条区域,只不过其空间会被循环使用而已。示意图如下,根据读写指针的位置可分为两种情况,其中阴影填充部分为数据/已用空间,空白的为可用空间,即有效存储空间。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论