一种BLE5.0协议系统及系统中应用的软硬件交互接口的制作方法

文档序号:12731236阅读:623来源:国知局
一种BLE5.0协议系统及系统中应用的软硬件交互接口的制作方法与工艺

本发明涉及一种BLE5.0协议系统及系统中应用的软硬件交互接口,属于无线通信技术领域。



背景技术:

低功耗蓝牙技术(BLE)是当前发展最快使用最为普遍的几种无线传输技术之一,BLE已经渗透到了我们生活的各个地方,目前使用较为普遍的智能手机无一不集成BLE通信模块,BLE模块由于其低成本,低功耗等特性,被广泛应用于家庭终端设备,环境监测,灯光控制,无线升级等各个方面。物联网的普及对BLE协议的更新迭代起到了至关重要的作用,协议的快速实现和易于扩展对一线开发人员提出了更高的要求。由于蓝牙协议提供了从底层物理层到上层应用层的完整协议,所以协议实现难度增大,协议功能变得十分复杂,不合理的协议层次划分会增加协议实现难度,不便于后续协议更新扩展,延长产品上线周期,因此在实现过程依据功能对协议进行层次划分显得尤为重要。

BLE软件协议栈的开发是实现整个BLE系统过程中最为繁杂也是耗时最长的环节,各层次间功能交错,如果不能有效地进行层次的划分会严重影响系统开发进度。

BLE协议栈实现中,链路层功能开发实现占据了很长周期,在协议中针对BLE链路层功能也进行了很大篇幅的描述,但是没有根据功能对链路层进行模块划分,如果依照协议进行系统开发很难在短期开发出高效的核心协议栈,而且能够获得的公开资料中也没有文档能针对该部分的实现进行详细描述。

BLE协议栈实现中软硬件接口的设计属于系统功能实现最为关键的地方,涉及到了软硬件功能的划分,协议中没有针对软硬件交互接口功能划分的描述,该部分在实现过程中是研发者自由发挥的地方,具体的划分及实现方式各不相同。



技术实现要素:

本发明提出一种基于链表的软硬件交互接口,接口有效地屏蔽了底层硬件实现细节,完成数据的收发和对硬件参数的获取和配置,方便实现,易于扩展。链路层作为BLE5.0协议中重要的模块,将链路层模块进行划分,使得各层次功能更加明确,降低实现难度,缩短调试周期,在此基础上进行协议功能扩展更加方便。本发明还提出了一种BLE5.0协议系统,将协议中规定的各个功能进行有效合理的划分,易于功能的实现和维护。

本发明是通过以下技术方案来实现的:一种应用于BLE5.0协议系统的软硬件交互接口,所述接口是一种基于链表的软硬件交互接口,完成控制器和物理层之间的数据及信息交互,该接口基于Event实现,实现时每个Event使用一个名为ECPT的结构表示,每个ECPT包含了描述一个Event的所有参数信息,ECPT结构关联一个数据接收链表和一个数据发送链表,软硬件交互接口的硬件侧通过周期性地轮询Event列表来判断ECPT是否有效。

一种应用于BLE5.0协议系统的软硬件交互方法,所述方法是一种基于链表的软硬件交互方法,完成控制器和物理层之间的数据及信息交互,包括如下步骤:

(1)当BLE5.0系统进行数据发送操作时,软硬件交互接口的软件侧将准备好的数据放在发送缓存中;

(2)设置ECPT有效标志来告知软硬件交互接口硬件侧进行数据发送;

(3)当硬件轮询到该ECPT有效时,依据ECPT中指定的参数获取发送缓存中的内容,并将待发送数据发送到空口;

(4)当BLE5.0系统进行数据接收时,硬件将接收到的数据进行解白化、CRC校验操作后放在接收缓存中,通过中断方式告知软硬件交互接口软件侧,交互接口软件侧获取中断并将数据取出进而交由上层软件进行进一步处理。

进一步地,所述方法包括三种交互方式,分别为共享内存、寄存器组和中断,共享内存用于完成设备间数据收发过程控制及数据包传递的步骤,寄存器组用于完成硬件参数配置以及在设备工作过程中完成状态参数的获取的步骤,中断功能用于完成异步通知软件执行相关动作的步骤。

优选地,所述软硬件交互方法在共享内存下实现。

一种BLE5.0协议系统,所述BLE协议栈由下到上分为物理层、核心协议栈和应用层协议栈,其中核心协议栈包括主机协议栈和控制器,主机协议栈包括安全管理协议、属性协议、逻辑链路控制和适配层协议,控制器包括链路层,物理层包括基带和射频,所述主机协议栈和控制器之间采用协议规定的HCI接口协议进行通信,所述控制器和物理层之间采用基于链表的软硬件交互接口完成数据及信息交互。

进一步地,该系统可通过单芯片模式或双芯片模式实现。

优选地,所述链路层与主机协议栈通信通过HCI接口实现,与硬件的交互通过共享内存实现。

一种实现链路层分层的BLE5.0协议系统,包括主机协议栈、控制器、物理层,控制器包括链路层,物理层包括基带和射频,所述控制器和物理层之间采用软硬件交互接口完成数据及信息交互,所述链路层划分为如下模块:

管理模块,负责链路层顶层状态机的管理和跳转;

控制模块,完成在连接状态下设备间信息交互及状态信息维护,同时提供数据及控制信息通路,完成设备状态管理及数据传输;

公共模块,负责接收来自主机侧的配置命令,以及向主机侧传递命令执行结果;

调试模块,负责完成直测模式下系统工作状态管理,同时在开发阶段进行硬件的测试和调试;

驱动模块,是软硬件接口的实现模块,负责数据流在硬件和软件之间的交互,同时是系统广播、扫描、初始化、连接功能的实现模块。

进一步地,所述顶层状态机包括广播态、扫描态、起始态、连接态和空闲态,该五种状态的维护由管理模块实现。

进一步地,所述管理模块实现在广播态,扫描态,起始态等非连接状态下实现对设备的管理和调度,完成和主机侧的事件及命令交互。

进一步地,所述驱动模块由管理模块、控制模块、公共模块直接调度。

优选地,所述各个模块均由单独的状态机实现,模块间采用消息传递机制完成信息传递。

优选地,所述链路层与主机协议栈通信通过HCI接口实现,与物理层的交互通过共享内存实现。

优选地,所述控制器和物理层之间采用的软硬件交互接口是一种基于链表的软硬件交互接口,完成控制器和物理层之间的数据及信息交互,该接口基于Event实现,实现时每个Event使用一个名为ECPT的结构表示,每个ECPT包含了描述一个Event的所有参数信息,ECPT结构关联一个数据接收链表和一个数据发送链表,软硬件交互接口的硬件侧通过周期性地轮询Event列表来判断ECPT是否有效。优选地,所述软硬件交互接口在共享内存下实现。

综上所述,本发明与现有技术相比具有如下优点:

基于链表的软硬件交互接口基于Event定义,结合数据收发链表,完成和硬件的信息交互及数据传输,作为系统实现的关键环节,该接口的提出便于软硬件同步开发及联合调试,在BLE系统开发阶段软件模块通过该接口实现对于功能的模拟测试,硬件模块通过该接口实现对于部分功能的验证,系统集成阶段通过该接口实现对于系统的联和调试,接口方便扩展,便于协议的更新迭代。

通过对BLE5.0整体协议按照功能进行有效的层次及模块划分,各层次功能明确,模块间通信接口简单,便于协作开发和集成。通过对链路层进行有效的模块划分,完成链路层功能的实现,该实现方式满足了协议需求,便于快速实现和调试,同时在不对现有架构进行变更的基础上,完成基于新协议的功能扩展,实现产品的快速迭代,缩短产品上市周期,模块间的通信采用消息传递机制,实现数据传输零拷贝,提高了系统工作效率。

附图说明

图1是BLE5.0协议系统结构示意图;

图2是链路层功能模块划分示意图;

图3是链路层顶层状态机示意图;

图4是软硬件交互接口在系统中的位置示意图;

图5是软硬件交互方式示意图;

图6是基于链表的软硬件交互接口示意图。

具体实施方式

为进一步描述本发明,下面结合附图对其作进一步说明。

如图1所示,BLE5.0协议系统结构示意图,BLE协议栈由下到上分为物理层、核心协议栈和应用层协议栈,其中核心协议栈包括主机协议栈和控制器,主机协议栈包括安全管理协议、属性协议、逻辑链路控制和适配层协议,控制器包括链路层,物理层包括基带和射频,主机协议栈和控制器之间采用协议规定的HCI接口协议进行通信,控制器和物理层之间采用基于链表的软硬件交互接口完成数据及信息交互。

应用层协议栈是协议规定的多种BLE应用场景的具体实现,本发明基于协议定义的多种应用协议,包括温湿度服务、环境服务、电池服务等,对协议进行了深层次的二次封装,使得用户在不太了解BLE协议细节的基础上也能进行BLE应用的开发,极大简化了开发流程。

主机协议栈完成主机侧数据及控制通路管理、安全管理、设备发现、服务发现等功能,通过主机控制器接口(HCI)与底层协议栈进行交互。

主机控制器接口(HCI)用于主机协议栈和控制器的通信,目前有两种常见的BLE系统实现方式,即单芯片模式和双芯片模式。单芯片的实现方式中主机协议栈和控制器运行于同一个处理器,两者之间的通信在基于HCI接口的基础上可以实现用户的自定义和扩展,接口完全由软件实现,无需特定的物理通信接口。双芯片模式下,主机控制器接口基于UART等物理通信接口实现,遵循协议中定义的HCI接口标准,使得控制器可以适配不同的主机协议栈,提高了使用灵活性。

链路层实现了设备在广播态、扫描态、起始态、连接态下状态机管理,完成主机到硬件的数据和控制通路实现,完成协议中规定的各种链路层控制及交互过程的实现。链路层对数据包的操作都是在共享内存中进行的,实现了数据收发在主机控制器接口(控制器侧)到软硬件交互接口整个处理过程中的零拷贝操作,提高了系统工作效率。

物理层由基带和射频模块组成,协同上层协议栈完成BLE5.0协议分层系统功能。

在核心协议栈中,链路层完成设备广播、扫描、连接等状态的定义和实现,完成物理通道选择、相关链路状态定义、设备过滤机制的实现等,对上衔接主机侧高层协议,对下实现对于硬件的调度和数据收发通路及控制通路的管理,同时负责该层核心帧的成帧操作,因此合理的功能模块划分对实现链路层功能尤为重要,为此本发明对链路层实现的功能模块进行划分,具体划分如图2所示。

链路层与主机协议栈通信通过HCI接口实现,与硬件的交互通过共享内存实现,在链路层功能具体实现过程中依据功能需求将该层划分为:管理模块,控制模块,公共模块,调试模块,驱动模块。

管理模块负责链路层顶层状态机的管理和跳转,依据协议,该模块实现了对5个系统工作状态的维护,包括广播态、扫描态、连接态、起始态、空闲态,同时模块实现了在广播态、扫描态、起始态等非连接状态下对设备的管理和调度,完成和主机侧的事件及命令交互,链路层顶层状态机如图3所示。

控制模块完成在连接状态下设备间信息交互及状态信息维护,同时提供数据及控制信息通路,完成设备状态管理及数据传输。控制模块实现了协议中链路层所有控制过程包括连接参数更新过程、连接参数请求过程、启动/停止加密过程、特征交互过程等,同时实现了过程冲突控制、超时控制等功能。

公共模块负责接收来自主机侧的配置命令,如读取缓存空间大小,系统复位等,以及向主机侧传递命令执行结果,模块本身不改变链路层状态信息,只负责对配置命令的执行及状态结果反馈。

调试模块负责完成直测模式下系统工作状态管理,同时在开发阶段进行硬件的测试和调试。

驱动模块是软硬件接口的实现模块,负责数据流在硬件和软件之间的交互,同时是系统广播、扫描、初始化、连接功能的实现模块,通过读写寄存器、中断、共享内存等方式,模块完成数据在软硬件之间的传递,同时控制硬件工作状态,获取状态信息,该模块可以由管理模块、控制模块、公共模块等直接调度,实现软硬件信息交互。

本系统通过划分功能模块,简化了系统开发和调试过程,便于维护和协议扩展,模块间采用消息传递机制完成信息传递,每个模块均由单独的状态机实现,缓存空间管理和事件处理均采用零拷贝方式,提高系统工作效率。

控制器的基带及部分链路层功能由硬件实现,链路层软件完成和硬件的直接交互,通过软件对硬件的控制使硬件完成具体任务的执行操作,同时硬件向软件反馈动作执行状态,因此软件需要一种接口来完成与硬件的交互,软硬件交互接口在整个系统中的位置如图4所示。软硬件交互接口的设计和实现关系着系统工作效率和稳定性,同时好的交互接口的设计能够加速系统开发和缩短调试周期。

如图5所示,本发明实现的软硬件交互接口包括三种方式,即共享内存、寄存器组和中断。共享内存主要用于完成设备间数据收发过程控制及数据包传递,寄存器组完成硬件参数配置以及在设备工作过程中完成状态参数的获取,中断功能用于异步通知软件执行相关的动作,如数据接收、超时处理、错误状态报告等。

共享内存是系统为实现软硬件高效交互专门划分的一块内存,软件和硬件可以直接访问该内存块,完成对内存中数据的操作,软硬件通过该内存块完成信息交互需要遵循统一的交互格式及流程,结合BLE协议规范,本发明在共享内存方式下设计实现了一种基于链表的软硬件交互接口及方法,包括了格式定义和交互流程定义,如图6所示。

由于标准规定,系统进行数据的收发都是在Event(事件)中进行的,因此基于链表的软硬件交互接口格式及流程的定义需要充分考虑Event的属性,实现时每个Event使用一个名为ECPT(事件控制参数表)的结构表示,每个ECPT包含了描述一个Event的所有参数信息,ECPT结构关联一个数据接收链表和一个数据发送链表,软硬件交互接口硬件侧通过周期性地轮询Event列表来判断ECPT是否有效。当系统进行数据发送操作时,只需要软硬件交互接口的软件侧将准备好的数据放在发送缓存中,通过设置ECPT有效标志来告知软硬件交互接口硬件侧进行数据发送,当硬件轮询到该ECPT有效时,依据ECPT中指定的参数获取发送缓存中的内容,并将待发送数据发送到空口;当系统进行数据接收时,硬件将接收到的数据进行解白化、CRC校验操作后放在接收缓存中,通过中断方式告知软硬件交互接口软件侧,交互接口软件侧获取中断并将数据取出进而交由上层软件进行进一步处理。

本发明实现的BLE5.0协议系统、实现链路层分层的BLE5.0协议系统以及系统中应用的基于链表的软硬件交互接口均可以应用于其他无线协议栈的分层以及实现上,以上所述是本发明的优选实施方式,对于本领域的技术人员来说,在不脱离本发明原理的前提下还可以作出若干改进,这些改进也应视为本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1