当前位置:文档之家› 蓝牙协议栈软件设计

蓝牙协议栈软件设计

蓝牙协议栈软件设计

B luetooth Protocol Stack Soft w are Design

张克非1,陈咏恩1,牛亏环2

(1.同济大学中德学院 上海200092;2.郑州防空兵学院 河南郑州450052)

收稿日期:2003206210

【摘 要】 蓝牙技术是一种用于个人区域网络的低成本、低功率的无线通信技术,主要包括基带芯片和协议栈两个部分。分析了蓝牙协议栈的功能和结构,提出了实现该嵌入式协议栈的软件结构,对各个模块进行了分析,最后,在硬件平台上进行了C 语言的编码和测试。

关键词:蓝牙技术,协议栈,嵌入式软件,状态机【Abstract 】 Bluetooth is a kind of low cost and low power wireless communication technology which is mainly applied in personal area net and consists of baseband chip and protocol stack.In this paper ,function and structure of Bluetooth protocol stack are studied ,then the software structure which can fulfill the functions of embed protocol stack is brought forward and the modules in software are

analyzed.The software is coded in C Language and tested in hardware platform.

K eyw ords :Bluetooth technique ,protocol 2stack ,embed 2software ,state 2machine

1 引 言

蓝牙技术是一种短距离无线通信技术,它取名于1000多年前统一丹麦和挪威的国王的名字(Harald Bluetooth ),意在形成统一的标准。1998年5月,爱立信、诺基亚、东芝、IBM 和英特尔这5家世界顶级公司联合公布了一项名为“蓝牙”的技术,不久便得到了包括摩托罗拉、朗讯、康柏、西门子等大批公司的一致拥护。蓝牙技术是一种无线数据与语音通信的开放性全球规范,它以低成本的近距离无线连接为基础,为固定与移动设备通信环境建立一个特别连接。蓝牙技术的实质内容是要建立通用的射频接口及其控制软件的公开标准,使通信和计算机进一步结合,使不同厂家生产的移动电话、便携式计算机以及各种便携式通信设备的主机之间在没有电线或电缆相互连接的情况下,也能在近距离范围内具有互用、相互操作的性能,实现无缝的资源共享。

2 蓝牙协议栈结构

蓝牙技术规范在使用通用无线传输模块和数据通信协议的基础上,开发交互式服务和应用。蓝牙技术规范的目的是使符合该规范的各种应用之间能够互通,本地设备与远端设备需要使用相同的协议,不同的应用需要不同的协议,但是,所有的应用都使用蓝牙技术规范中的数据链路层和物理层协议。

完整的蓝牙协议包括蓝牙专利协议LMP (Link Manager Protocol )、L2CAP (Logic Link Control and Adaptive Protocol )和非专利协议,例如对象交换协议(OB EX )和用户数据报文协议(UDP )。设计协议和协议栈的主要原则是尽可能利用现有的各种高层协议,保证现有协议与蓝牙技术的融合以及各种应用之间的互通性,充分利用兼容蓝牙技术规范的软硬件系统。

蓝牙协议栈如图1所示。图中显示了数据经过无线传输时,所有协议之间的相互关系。

图1 蓝牙协议栈

3 蓝牙协议栈开发平台

本系统是在一块带有CPU 的Nios 开发板上进行

的。系统的硬件是基于FP G A 开发的蓝牙芯片,用来

51・

完成蓝牙基带中需要的复杂运算和实现射频功能,并以函数调用的形式提供对这些功能的访问。

4 蓝牙协议栈的功能分析

蓝牙的协议栈是运行在CPU 核上面、管理系统资源、控制硬件、对通过HCI (Host Controller Interface )来自主机的命令进行处理、完成蓝牙功能的嵌入式软件。由于本系统提供基带的功能和实现链路管理器协议,主机是通过HCI 层来控制蓝牙的,L2CAP 属于上层的协议,所以系统要做的工作就是给主机提供HCI 的接口,并且处理来自另一个蓝牙设备的链路管理器协议的PDU (Prtocol Data Unit )包。在蓝牙协议中,蓝牙主机软件实现了L2CAP 功能和上层HCI 的驱动程序;PPP 、IP 、TCP/UDP 等协议归属于TCP/IP 协议,已经相当成熟,并且被绝大多数操作系统实现,不在嵌入式协议栈的处理范围之内

从一般软件设计分类的角度来看,设备管理和系统资源管理是操作系统的任务。在综合考虑系统简单性和成本等因素之后,本系统中没有使用独立的实时操作系统,而是由嵌入式软件完成部分应该由操作系统完成的功能。

5 蓝牙协议栈总体设计

总体设计的内容包括:结构设计,功能设计,系统任务之间的通信和重要数据结构的确定等。5.1 结构设计

系统采用单进程的结构,由主程序循环调用几个任务。当一个任务执行完之后,才会进入执行下一个任务。在任务执行期间,不屏蔽外部事件的中断请求,因而外部事件可以被实时响应,整个系统构成典型的前后台系统。这些任务包括:对HCI 命令和PDU 的处理,对LC (Link controller )的控制和管理,对Timer 的管理和数据包的处理。模块之间的关系见图2。

图2 系统模块图

5.1.1 HCI 和LC 数据处理模块

HCI 和LC 数据处理模块主要完成数据包的分包

和重组。HCI 是UAR T 接口,这里的数据包是L2CAP 层传送的上层应用程序的数据包;LC 层可以

传送的数据包是蓝牙协议规定的包类型,并且与建立连接时两个设备的协商结果有关,所以,来自HCI 的数据包可能与LC 层可以传送的数据包的大小不同。这就需要在发送来自HCI 的数据包时,根据LC 层可以使用的数据包的大小来重新组合和分包,以适合LC 层的需要;当收到LC 层的固定类型的数据包时,还要根据HCI 层规定来组合,以适合HCI 层的传送需要。5.1.2 内存管理模块

内存管理通常是操作系统的核心任务之一,由于本系统没有使用实时操作系统,所以,这部分任务是系统必需而重要的任务。

输入的数据包必须保存在内存中,由适当的任务做进一步处理。同时,应用程序产生的输出数据也必须以数据包的形式存储在内存中,由硬件设备传送出去。一般来说,协议软件的有效性最终取决于如何管理保存这些数据包的存储器。一个良好的设计要做到快速分配存储空间,并且避免数据包在各层协议之间移动时的数据复制。常用的分配方案有:

(1)缓冲区方案理论上,最理想的解决办法是将缓冲区划分得足够大,以存储最长的有效信息或数据包。采用大缓冲区时,首先选择一个系统能够处理的数据包的最大长度为D ,然后使缓冲区足够大,可以容纳长度为D 的数据包及其首信息。采用这种方法是在允许使用较长的数据包和能够给正常的通信量提供足够多的缓冲区之间的折衷。

(2)链表方案

除了大缓冲区方案外,还可以采用将较小的缓冲区以链表的形式连接起来,以处理任意长度的数据包。在链表设计方案中,表中的缓冲区既可以是大小固定的,也可以是不固定的。

链表方案允许链表中的每一个缓冲区只包含部分数据,并具有其他一些优点,例如允许快速封装而无需复制操作,当某一层的软件接收到上一层的协议发送的信息后,就分配一个新的缓冲区,填写其中的首信息,并将新缓冲区插入保存此信息的链接列表中,这样,附近的字节就可以很容易插在某个信息的前面,而无需移动已经存在的数据。

针对本系统处理的实际情况,蓝牙中的数据包只

有固定大小的包类型,因此,采用系统分配大小固定的

缓冲区的方案。这样做可以杜绝内存碎片,并保证内存的高利用率。此外,系统采用了缓冲区自识别策略,以使缓冲区的处理过程统一。需要缓冲区时,系统调用getbuf 函数。只要缓冲区分配完成,需要保存的仅

61・

相关主题