APP下载

蓝牙协议栈软件设计

2014-04-29李曼

电子世界 2014年15期
关键词:嵌入式软件

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

【关键词】蓝牙技术;协议栈;嵌入式软件

引言

蓝牙技术是一种无线数据与语音通信的开放性全球规范,它以低成本的近距离无线连接为基础,为固定与移动设备通信环境建立一个特别连接。蓝牙技术的实质内容是要建立通用的射频接口及其控制软件的公开标准,使通信和计算机进一步结合,使不同厂家生产的移动电话、便携式计算机以及各种便携式通信设备的主机之间在没有电线或电缆相互连接的情况下。也能在近距离范围内具有互用、相互操作的性能.实现无缝的资源共享。

1.蓝牙协议栈结构

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

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

2.蓝牙协议栈开发平台

本系统是在一块带有CPU的Nios开发板上进行的,系统的硬件是基于FPGA开发的蓝牙芯片,用来完成蓝牙基带中需要的复杂运算和实现射频功能,并以函数调用的形式提供对这些功能的访问。

3.蓝牙协议栈的功能分析

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

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

4.蓝牙协议栈总体设计

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

4.1 结构设计

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

4.1.1 HCI和LC数据处理模块

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

4.1.2 内存管理模块

内存管理通常是操作系统的核心任务之一。由于本系统没有使用实时操作系统。所以。这部分任务是系统必需而重要的任务。输入的数据包必须保存在内存中。由适当的任务做进一步处理。

同时,应用程序产生的输出数据也必须以数据包的形式存储在内存中。由硬件设备传送出去。一般来说。协议软件的有效性最终取决于如何管

理保存这些数据包的存储器。一个良好的设计要做到快速分配存储空间。并且避免数据包在各层协议之间移动时的数据复制。常用的分配方案有:缓冲区方案、链表方案、时钟管理模块、事件处理模块。

4.2 任务之间的通信

任务之间的通信是协议栈软件的重要部分,对协议的性能有很大的影响。对于操作系统来说,任务之间的通信通常采用的方法有信号量、邮箱、消息队列、管道等。在我们的实现中,借鉴了管道的思想,亦即给所有需要通信的任务之间建立管道。为所有需要通信的任务建立管道,需要发送消息的任务把消息的内容放入双方已协商的管道中,然后由需要消息的任务从中取出。对管道中消息的存取和检查都由一组统一的函数完成。

4.3 重要数据结构的确定

从对蓝牙协议的分析可知,链路管理器的核心任务是管理和维护由数个蓝牙设备组成的Piconet。Pi-conet的基本组成单元是两个蓝牙设备之间的连接,最基本的Piconet由两个蓝牙设备组成。因此,由两个蓝牙设备组成的一个连接是系统最基本的组成部分,对这种连接的建立、维护和参数管理是软件最基本的功能。对这种连接的操作就是嵌入式软件实现的核心任务。根据蓝牙规范和连接的属性,确定了描述这个对象的参数,用结构TACLConnection来描述这个对象。

5.试验结果分析

本系统利用Nios开发板,对所设计的软件和蓝牙基带芯片进行了测试,证明软件可以完成蓝牙基带的基本功能。蓝牙嵌入式通信协议栈的开发工作尚未全部结束,目前完成的是在两个蓝牙设备之间建立连接的工作。测试结果表明,在这个协议栈的开发工作中采取的一系列技术手段是基本成功的。这使得我们可以进一步开发更加完善的协议栈。

参考文献

[1]王璞,张臻鉴,王玉空.面向实时嵌入式机载软件的测试技术研究[M].航空计算技术,1997,27(4):4-11.

[2]金纯,许光辰,孙容.蓝牙技术[M].北京:电子工业出版社,2001.

[3]李伟华,康继昌.实时软件测试用例构造的充要策略研究[J].航空计算技术,1996,26(2):20-25.

作者简介:李曼(1980—),女,陕西西安人,工学硕士,西安外事学院讲师,研究方向:机械工程。

猜你喜欢

嵌入式软件
嵌入式软件测试数据传输稳定性检测方法
嵌入式软件测试数据传输稳定性检测方式分析
基于人工智能的模块化嵌入式软件开发研究
基于安全性分析的嵌入式软件测试
实时嵌入式软件的测试技术
全景相机遥控器嵌入式软件V1.0 相关操作分析
基于VPRS方法的汽车嵌入式软件品质评估
嵌入式软件在计算机软件开发过程中的运用
计算机软件设计中嵌入式实时软件的应用探析
基于Eclipse的航天嵌入式软件集成开发环境设计与实现