带有缓存区的SDIO-WIFI数据传输方法及系统技术方案

技术编号:19646960 阅读:26 留言:0更新日期:2018-12-05 20:29
本发明专利技术公开了一种带有缓存区的SDIO‑WIFI数据传输方法及系统,该方法包括以下步骤:接收数据,将数据打包成数据包,然后将数据包写入先进先出形式的缓存区。从该缓存区中读取数据包;解析数据包,获取数据;然后将数据从SDIO接口发送到外部设备。该方法通过先进先出形式的缓存区对WIFI驱动发送给SDIO驱动的数据进行缓存,WIFI驱动无需等待SDIO驱动把数据发送完毕,即可处理其它的数据,提高了WIFI吞吐效率,吞吐抖动小,可以在终端减少延时,提高通信效率。

SDIO-WIFI Data Transmission Method and System with Buffer

The invention discloses a SDIO WIFI data transmission method and system with a buffer. The method comprises the following steps: receiving data, packaging data into data packets, and then writing data packets into a first-in-first-out buffer. Read the data packet from the buffer; parse the data packet to get the data; then send the data from the SDIO interface to the external device. This method caches the data sent by WIFI driver to SDIO driver by FIFO buffer. WIFI driver can process other data without waiting for SDIO driver to send the data. This method improves the throughput efficiency of WIFI and throughput jitter is small. It can reduce the delay of terminal and improve the communication efficiency.

【技术实现步骤摘要】
带有缓存区的SDIO-WIFI数据传输方法及系统
本专利技术涉及无线通信
,尤其涉及一种带有缓存区的SDIO-WIFI数据传输方法及系统。
技术介绍
目前,SDIO接口的WIFI模组被广泛使用在平板电脑、行车记录仪等电子产品的内核当中。SDIO-WIFI模组是基于SDIO接口的符合wifi无线网络标准的嵌入式模块,内置无线网络协议IEEE802.11协议栈以及TCP/IP协议栈,能够实现用户主平台数据通过SDIO口到无线网络之间的转换。SDIO具有传输数据快,兼容SD、MMC接口等特点。SDIO-WIFI模组的吞吐是影响用户体验的一个重要因素,容易受到软、硬件性能的影响。现有的内核当中,WIFI驱动和SDIO驱动的通信采用的是同步方式,即WIFI驱动向SDIO驱动发送数据时,必须等待当前一笔SDIO数据发送结束后,才能准备发送下一笔数据。这种通信方式导致WIFI驱动和SDIO驱动无法并行执行,并且同步过程中的等待时间很容易受到操作系统调度速度的影响,WIFI吞吐效率低,吞吐抖动大,影响用户体验。
技术实现思路
针对现有技术的不足,本专利技术提出了一种带有缓存区的SDIO-WIFI数据传输方法及系统,该方法或系统通过先进先出形式的缓存区对WIFI驱动发送给SDIO驱动的数据进行缓存,WIFI驱动无需等待SDIO驱动把数据发送完毕,即可处理其它的数据,解决了现有SDIO-WIFI模组的WIFI驱动和SDIO驱动无法并行执行,同步过程中的等待时间容易受到操作系统调度速度的影响,WIFI吞吐效率低,吞吐抖动大,影响用户体验的问题。为了实现上述目的,本专利技术技术方案如下:一种带有缓存区的SDIO-WIFI数据传输方法,包括以下步骤:S1:接收数据,将数据打包成数据包,然后将数据包写入先进先出形式的缓存区。S2:从该缓存区中读取数据包;解析数据包,获取数据;然后将数据从SDIO接口发送到外部设备。进一步地,该缓存区为环形缓存区。进一步地,该S1包括以下步骤:S101:判断该环形缓存区是否非满;若为是,则执行S102;若为否,则重新执行S101。S102:将当前接收的数据打包成数据包,把数据包写入该环形缓存区。S103:接收新的数据。S104:返回执行S101。进一步地,该S2包括以下步骤:S201:判断该环形缓存区是否非空;若为是,则执行S202;若为否,则重新执行S201。S202:从该环形缓存区中读取数据包。S203:通过DMA控制器解析数据包,获取数据;然后将数据从SDIO接口发送到外部设备。S204:返回执行S201。进一步地,该S203包括以下步骤:S2031:向CPU提出总线接管请求。S2032:判断是否接收到CPU发出的允许接管信号;若为是,则执行S2033;若为否,则返回执行S2031。S2033:对该环形缓存区里面的数据包进行解析,从解析的数据包中获取读指针和数据大小。S2034:读取该读指针所指向的数据,并将读取的数据从SDIO接口发送到外部设备。S2035:根据数据大小判断数据发送是否完成;若为是,则释放总线;若为否,则执行S2036。S2036:将该读指针增1。S2037:返回执行S2034。一种带有缓存区的SDIO-WIFI数据传输系统,包括WIFI驱动模块、SDIO驱动模块、缓存模块。该WIFI驱动模块获取数据,将数据打包成数据包,然后将数据包写入先进先出形式的该缓存模块。该缓存模块对数据包进行缓存。该SDIO驱动模块从该缓存模块读取数据包;解析数据包获取数据;然后将数据从SDIO接口发送到外部设备。进一步地,该缓存模块为环形缓存区。进一步地,该WIFI驱动模块包含数据接收单元、第一判断单元、数据包写入单元。该数据接收单元接收当前的数据。该第一判断单元判断环形缓存区是否非满;若为是,则驱动该数据包写入单元将该数据接收单元接收的数据打包成数据包,并把数据包写入环形缓存区,并驱动该数据接收单元接收新的数据;若为否,则重新判断环形缓存区是否非满。进一步地,该SDIO驱动模块包含第二判断单元、数据读取单元、DMA控制器、SDIO接口。该第二判断单元判断环形缓存区是否非空;若为是,则驱动该数据读取单元从环形缓存区中读取数据包;若为否,则重新判断环形缓存区是否非空。该DMA控制器将该数据读取单元读取的数据包进行解析,获取数据;然后将数据从SDIO接口发送到外部设备。进一步地,该DMA控制器包含总线接管请求部、接管信号判断部、数据包解析部、寻址部、数据读取及发送部、数据发送状态判断部、读指针修改部。该总线接管请求部用于向CPU提出总线接管请求。该接管信号判断部用于断是否接收到CPU发出的允许接管信号;若为是,则驱动该寻址部;若为否,则驱动该总线接管请求部。该数据包解析部用于解析从环形缓冲区获取的数据包,从解析的数据包中获取读指针和数据大小。该寻址部用于根据读指针对数据进行寻址。该数据读取及发送部用于读取该读指针所指向的数据,并将读取的数据从SDIO接口发送到外部设备。该数据发送状态判断部用于根据数据大小判断数据发送是否完成;若为是,则释放总线;若为否,则驱动该读指针修改部。该读指针修改部用于将该读指针增1,然后驱动该寻址部。本专利技术的有益效果:该方法或系统通过先进先出形式的缓存区对WIFI驱动发送给SDIO驱动的数据进行缓存,WIFI驱动无需等待SDIO驱动把数据发送完毕,即可处理其它的数据,提高了WIFI吞吐效率,吞吐抖动小,可以在终端减少延时,提高通信效率。附图说明图1为该带有缓存区的SDIO-WIFI数据传输方法的流程示意图。图2为图1中步骤S1的流程示意图。图3为图1中步骤S2的流程示意图。图4为图3中步骤S203的流程示意图。图5为该带有缓存区的SDIO-WIFI数据传输系统的逻辑方块图。其中,图1至图5的附图标记为:WIFI驱动模块1、SDIO驱动模块2、缓存模块3。具体实施方式下面结合附图和实施例,进一步阐述本专利技术。实施例1:如图1所示,一种带有缓存区的SDIO-WIFI数据传输方法,包括以下步骤:S1:接收数据,将数据打包成数据包,然后将数据包写入先进先出形式的缓存区。S2:从缓存区中读取数据包;解析数据包,获取数据;然后将数据从SDIO接口发送到外部设备。先进先出的缓存区,其特点是缓存区内的数据的写入或读取可以并发执行。这样,WIFI驱动无需等待SDIO驱动把数据发送完毕,即可处理其它的工作,例如准备其它的数据。提高了WIFI吞吐效率,吞吐抖动小,可以在终端减少延时,提高通信效率。把数据长度,数据地址等进行打包,对数据进行打包的时候,不进行数据拷贝,仅仅复制数据地址。数据传递采用指针传递的方式,数据包里面保存指向需要传输的数据的指针,这样避免数据拷贝开销,减少内存的使用,提高效率。较佳地,缓存区采用环形缓存区(ringbuffer)。环形缓存区是一种首尾相连的队列数据结构,遵循先进先出原则。环形缓存区的写入进程与读取进程可以采用“生产者与消费者”的模型来缓冲,从而方便了缓存的使用和管理。环形缓存区的容量大小可根据上传数据包的的多少来设置。具体地,如图2所示,步骤S1包括以下步骤:S101:判断该环形缓存区是否非满;若为是,则执行S102;若为否,则重新执行S101,等待环形缓存本文档来自技高网...

【技术保护点】
1.一种带有缓存区的SDIO‑WIFI数据传输方法,其特征在于:包括以下步骤:S1:接收数据,将数据打包成数据包,然后将数据包写入先进先出形式的缓存区;S2:从所述缓存区中读取数据包;解析数据包,获取数据;然后将数据从SDIO接口发送到外部设备。

【技术特征摘要】
1.一种带有缓存区的SDIO-WIFI数据传输方法,其特征在于:包括以下步骤:S1:接收数据,将数据打包成数据包,然后将数据包写入先进先出形式的缓存区;S2:从所述缓存区中读取数据包;解析数据包,获取数据;然后将数据从SDIO接口发送到外部设备。2.根据权利要求1所述的带有缓存区的SDIO-WIFI数据传输方法,其特征在于:所述缓存区为环形缓存区。3.根据权利要求2所述的带有缓存区的SDIO-WIFI数据传输方法,其特征在于:所述S1包括以下步骤:S101:判断所述环形缓存区是否非满;若为是,则执行S102;若为否,则重新执行S101;S102:将当前接收的数据打包成数据包,把数据包写入所述环形缓存区;S103:接收新的数据;S104:返回执行S101。4.根据权利要求2所述的带有缓存区的SDIO-WIFI数据传输方法,其特征在于:所述S2包括以下步骤:S201:判断所述环形缓存区是否非空;若为是,则执行S202;若为否,则重新执行S201;S202:从所述环形缓存区中读取数据包;S203:通过DMA控制器解析数据包然后将数据从SDIO接口发送到外部设备;S204:返回执行S201。5.根据权利要求4所述的带有缓存区的SDIO-WIFI数据传输方法,其特征在于:所述S203包括以下步骤:S2031:向CPU提出总线接管请求;S2032:判断是否接收到CPU发出的允许接管信号;若为是,则执行S2033;若为否,则返回执行S2031;S2033:对所述环形缓存区里面的数据包进行解析,从解析的数据包中获取读指针和数据大小;S2034:读取所述读指针所指向的数据,并将读取的数据从SDIO接口发送到外部设备;S2035:根据数据大小判断数据发送是否完成;若为是,则释放总线;若为否,则执行S2036;S2036:将所述读指针增1;S2037:返回执行S2034。6.一种带有缓存区的SDIO-WIFI数据传输系统,其特征在于:包括WIFI驱动模块、SDIO驱动模块、缓存模块;所述WIFI驱动模块获取数据,将数据打包成数据包,然后将数据包写入先进先出形式的所述缓存模块;所述缓存模块对...

【专利技术属性】
技术研发人员:李想温佳强
申请(专利权)人:珠海全志科技股份有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1