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

文档序号:21779403发布日期:2020-08-07 19:55阅读:212来源:国知局
本发明涉及无线通信
技术领域
:,尤其涉及一种应用于ble5.0协议系统的软硬件交互接口、方法及其系统。
背景技术
::低功耗蓝牙技术(ble)是当前发展最快使用最为普遍的几种无线传输技术之一,ble已经渗透到了我们生活的各个地方,目前使用较为普遍的智能手机无一不集成ble通信模块,ble模块由于其低成本,低功耗等特性,被广泛应用于家庭终端设备,环境监测,灯光控制,无线升级等各个方面。物联网的普及对ble协议的更新迭代起到了至关重要的作用,协议的快速实现和易于扩展对一线开发人员提出了更高的要求。由于蓝牙协议提供了从底层物理层到上层应用层的完整协议,所以协议实现难度增大,协议功能变得十分复杂,不合理的协议层次划分会增加协议实现难度,不便于后续协议更新扩展,延长产品上线周期,因此在实现过程依据功能对协议进行层次划分显得尤为重要。ble软件协议栈的开发是实现整个ble系统过程中最为繁杂也是耗时最长的环节,各层次间功能交错,如果不能有效地进行层次的划分会严重影响系统开发进度。ble协议栈实现中,链路层功能开发实现占据了很长周期,在协议中针对ble链路层功能也进行了很大篇幅的描述,但是没有根据功能对链路层进行模块划分,如果依照协议进行系统开发很难在短期开发出高效的核心协议栈,而且能够获得的公开资料中也没有文档能针对该部分的实现进行详细描述。ble协议栈实现中软硬件接口的设计属于系统功能实现最为关键的地方,涉及到了软硬件功能的划分,协议中没有针对软硬件交互接口功能划分的描述,该部分在实现过程中是研发者自由发挥的地方,具体的划分及实现方式各不相同。技术实现要素:本发明提出一种基于链表的软硬件交互接口,接口有效地屏蔽了底层硬件实现细节,完成数据的收发和对硬件参数的获取和配置,方便实现,易于扩展。链路层作为ble5.0协议中重要的模块,将链路层模块进行划分,使得各层次功能更加明确,降低实现难度,缩短调试周期,在此基础上进行协议功能扩展更加方便。本发明还提出了一种ble5.0协议系统,将协议中规定的各个功能进行有效合理的划分,易于功能的实现和维护。本发明是通过以下技术方案来实现的:一种应用于ble5.0协议系统的软硬件交互接口,所述接口是一种基于链表的软硬件交互接口,完成控制器和物理层之间的数据及信息交互,该接口基于事件event实现,实现时每个事件event使用一个名为ecpt的结构表示,每个结构ecpt包含了描述一个事件event的所有参数信息,即结构ecpt作为事件控制参数表,该ecpt结构关联一个数据接收链表和一个数据发送链表,软硬件交互接口的硬件侧通过周期性地轮询事件event列表来判断结构ecpt是否有效。一种应用于ble5.0协议系统的软硬件交互方法,所述方法是一种基于链表的软硬件交互方法,完成控制器和物理层之间的数据及信息交互,包括如下步骤:s100:当ble5.0系统进行数据发送操作时,软硬件交互接口的软件侧将准备好的数据放在发送缓存中;s200:设置结构ecpt的有效标志来告知软硬件交互接口硬件侧进行数据发送;其中,结构ecpt作为事件的控制参数表;s300:当硬件轮询到该结构ecpt有效时,依据结构ecpt中指定的参数获取发送缓存中的内容,并将待发送数据发送到空口;s400:当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至图6对其作进一步说明。如图1所示,ble5.0协议系统结构示意图,ble协议系统由下到上分为物理层、核心协议栈和应用层协议栈,其中核心协议栈包括主机协议栈和控制器,主机协议栈包括安全管理协议、属性协议、逻辑链路控制和适配层协议,控制器包括链路层,物理层包括基带和射频,主机协议栈和控制器之间采用协议规定的hci接口协议进行通信,控制器和物理层之间采用基于链表的软硬件交互接口完成数据及信息交互。应用层协议栈是协议规定的多种ble应用场景的具体实现,本发明基于协议定义的多种应用协议,包括温湿度服务、环境服务、电池服务等,对协议进行了深层次的二次封装,使得用户在不太了解ble协议细节的基础上也能进行ble应用的开发,极大简化了开发流程。主机协议栈完成主机侧数据及控制通路管理、安全管理、设备发现、服务发现等功能,通过主机控制器接口(hci)与底层协议栈进行交互。主机控制器接口(hci)用于主机协议栈和控制器的通信,目前有两种常见的ble系统实现方式,即单芯片模式和双芯片模式。单芯片的实现方式中主机协议栈和控制器运行于同一个处理器,两者之间的通信在基于hci接口的基础上可以实现用户的自定义和扩展,接口完全由软件实现,无需特定的物理通信接口。双芯片模式下,主机控制器接口基于uart等物理通信接口实现,遵循协议中定义的hci接口标准,使得控制器可以适配不同的主机协议栈,提高了使用灵活性。结合图1,能够发现:控制器还可以包括调试模块。另外,需要说明的事,链路层实现了设备在广播态、扫描态、起始态、连接态下状态机管理,完成主机到硬件的数据和控制通路实现,完成协议中规定的各种链路层控制及交互过程的实现。优选的,链路层对数据包的操作都是在共享内存中进行的,实现了数据收发在主机控制器接口(控制器侧)到软硬件交互接口整个处理过程中的零拷贝操作,这可以提高系统工作效率。物理层由基带和射频模块组成,协同上层协议栈完成ble5.0协议分层的系统功能。结合前文和图1,这体现了本发明的构思。不仅如此,本发明在核心协议栈中,链路层完成设备广播、扫描、连接等状态的定义和实现,完成物理通道选择、相关链路状态定义、设备过滤机制的实现等,对上衔接主机侧高层协议,对下实现对于硬件的调度和数据收发通路及控制通路的管理,同时负责该层核心帧的成帧操作。示例性的,就图1而言,主机控制器接口自身可以划分为主机侧和控制器侧,主机控制器接口用于对上衔接主机协议栈的:逻辑链路控制和适配层协议,并用于对下衔接链路层。一并的,能够发现,逻辑链路控制和适配层协议用于对上衔接主机协议栈的:安全管理协议和属性协议,而安全管理协议、逻辑链路控制和适配层协议、属性协议则用于对上衔接应用层协议栈的通用访问规范,特别的,属性协议可以直接对上衔接应用层协议栈中通用访问规范中的应用规范。同样的,就图1而言,控制器中的调试模块和链路层还分别用于对下衔接物理层的基带。因此,合理的功能模块划分对实现链路层功能尤为重要,为此本发明对链路层实现的功能模块进行划分,具体划分示例如图2所示,能够理解,这仅仅是一种具体的划分方式,并不意味着受限于此。此外,需要说明的是,链路层与主机协议栈通信可以通过hci接口实现,与硬件的交互通过共享内存实现。具体的,就图2而言,链路层,或者称之为逻辑链路层,在链路层功能具体实现过程中依据功能需求将该层划分为:管理模块,控制模块,公共模块,调试模块,驱动模块,其中,除控制模块可以通过命令/事件/数据与主机控制器接口进行双向的消息传递之外,管理模块、公共模块、调试模块则通过命令/事件与主机控制器接口进行双向的消息传递;至于驱动模块,其在基带与如下任一模块之间充当桥梁:管理模块、控制模块、公共模块,一方面,驱动模块与基带之间能够进行双向的函数调用,另一方面,驱动模块向管理模块、控制模块、公共模块进行消息传递,而管理模块、控制模块、公共模块则向驱动模块进行函数调用;此外,就图2而言,能够发现,驱动模块还与调试模块存在交互:驱动模块向调试模块进行消息传递,调试模块则向驱动模块进行函数调用;而调试模块除了与驱动模块交互之外,还对下衔接基带,调试模块与基带之间可以进行双向函数调用。需要说明的是,管理模块与调试模块之间存在双向的消息传递;管理模块还与控制模块之间存在双向的消息传递。进一步的,结合图2和图3,需要说明的是:管理模块负责链路层顶层状态机的管理和跳转,依据协议,该模块实现了对5个系统工作状态的维护,包括广播态、扫描态、连接态、起始态、空闲态,同时该模块实现了在广播态、扫描态、起始态、连接态和空闲态中的非连接状态下对设备的管理和调度,完成和主机侧的事件及命令交互,链路层顶层状态机可以参见图3所示。控制模块完成在连接状态下设备间信息交互及状态信息维护,同时提供数据及控制信息通路,完成设备状态管理及数据传输。控制模块实现了协议中链路层所有控制过程包括连接参数更新过程、连接参数请求过程、启动/停止加密过程、特征交互过程等,同时实现了过程冲突控制、超时控制等功能。公共模块负责接收来自主机侧的配置命令,如读取缓存空间大小,系统复位等,以及向主机侧传递命令执行结果,模块本身不改变链路层状态信息,只负责对配置命令的执行及状态结果反馈。调试模块负责完成直测模式下系统工作状态管理,同时在开发阶段进行硬件的测试和调试。驱动模块是软硬件接口的实现模块,负责数据流在硬件和软件之间的交互,同时是系统广播、扫描、初始化、连接功能的实现模块,通过读写寄存器、中断、共享内存等方式,模块完成数据在软硬件之间的传递,同时控制硬件工作状态,获取状态信息,该模块可以由管理模块、控制模块、公共模块等直接调度,实现软硬件信息交互。本系统通过划分功能模块,简化了系统开发和调试过程,便于维护和协议扩展,模块间采用消息传递机制完成信息传递,每个模块均由单独的状态机实现,缓存空间管理和事件处理均采用零拷贝方式,提高系统工作效率。控制器的基带及部分链路层功能由硬件实现,链路层软件完成和硬件的直接交互,通过软件对硬件的控制使硬件完成具体任务的执行操作,同时硬件向软件反馈动作执行状态,因此软件需要一种接口来完成与硬件的交互,软硬件交互接口在整个系统中的位置如图4所示。参见图4,其作为示例,对于控制器和物理层而言,本发明所述的软硬件交互接口即图中的软件/硬件交互接口,其对上衔接控制器的链路层,对下衔接物理层的基带。能够理解,软硬件交互接口的设计和实现关系着系统工作效率和稳定性,同时好的交互接口的设计能够加速系统开发和缩短调试周期。如图5所示,本发明实现的软硬件交互接口包括三种方式,即共享内存、寄存器组和中断。共享内存主要用于完成设备间数据收发过程控制及数据包传递,寄存器组完成硬件参数配置以及在设备工作过程中完成状态参数的获取,中断功能用于异步通知软件执行相关的动作,如数据接收、超时处理、错误状态报告等。共享内存是系统为实现软硬件高效交互专门划分的一块内存,软件和硬件可以直接访问该内存块,完成对内存中数据的操作,软硬件通过该内存块完成信息交互需要遵循统一的交互格式及流程,结合ble协议规范,本发明在共享内存方式下设计实现了一种基于链表的软硬件交互接口及方法,包括了格式定义和交互流程定义,如图6所示。由于标准规定,系统进行数据的收发都是在event(事件)中进行的,因此基于链表的软硬件交互接口格式及流程的定义需要充分考虑event的属性,实现时:每个事件event使用一个名为ecpt(作为事件的控制参数表;顾名思义,结构ecpt是eventcontrolparametertable的缩写)的结构表示,每个结构ecpt包含了描述一个event的所有参数信息,ecpt结构关联一个数据接收链表和一个数据发送链表,软硬件交互接口硬件侧通过周期性地轮询事件event列表来判断结构ecpt是否有效。当系统进行数据发送操作时,只需要软硬件交互接口的软件侧将准备好的数据放在发送缓存中,通过设置结构ecpt有效标志来告知软硬件交互接口硬件侧进行数据发送,当硬件轮询到该结构ecpt有效时,依据结构ecpt中指定的参数获取发送缓存中的内容,并将待发送数据发送到空口;当系统进行数据接收时,硬件将接收到的数据进行解白化、crc校验操作后放在接收缓存中,通过中断方式告知软硬件交互接口软件侧,交互接口软件侧获取中断并将数据取出进而交由上层软件进行进一步处理。示例性的,就图6而言,所述结构ecpt所表示的事件控制参数列表(例如图6中事件控制参数列表0、事件控制参数列表1,列表0和列表1表现为链表的形式)表现为表的形式,可以包括如下信息:事件控制信息、发送包地址信息、接收包地址信息、数据包收发计数等。其中,发送包地址信息表现为链表的形式,其包括:地址+状态、发送控制字、有效数据;接收包地址信息同样表现为链表的形式,其包括:地址字、状态信息、接收控制字、有效数据,这2个链表则示意了ecpt结构关联的一个数据接收链表和一个数据发送链表。结合图6,其形象的示意了本发明的软硬件交互接口是基于链表的。本发明实现的ble5.0协议系统、实现链路层分层的ble5.0协议系统以及系统中应用的基于链表的软硬件交互接口均可以应用于其他无线协议栈的分层以及实现上,以上所述是本发明的优选实施方式,对于本领域的技术人员来说,在不脱离本发明原理的前提下还可以作出若干改进,这些改进也应视为本发明的保护范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1