"); //-->
了解系统与辅助设备的关系是成功开发蓝牙应用的关键。本文将介绍通过设备查找、名称查找、服务查找、安全保证以及应用连接五个步骤实现设备之间连接的过程,以及通过安全管理器进行安全认证和授权来实现设备间可靠连接的安全性等蓝牙开发的关键技术。
蓝牙协议解决实现了数据和声音的无线传输,并定义了一套包含无线部分、协议、甚至还有应用规范的完整系统。应用规范包括在应用中使用无线和协议组件的方法,并在规范中作了详尽的定义。
蓝牙特别兴趣小组定义这些规范的目的就是为了确保不同制造商的蓝牙产品可以相互兼容,具有互操作性。
如果对蓝牙系统的工作原理缺乏基本的理解,在设计蓝牙解决方案时将会遇到很多困难。设计工程师需要真正了解蓝牙系统是如何工作的,以及如何将多种不同的部分组合成一整套规范。
网络基础知识
蓝牙设备仅在个人区域网络(PAN)的范围内受到支持,这一点与802.11无线局域网明显不同。在所需功率、实现成本和支持的数据传送速率等方面对二者进行比较,最主要的(也是经常被忽略的)区别在于蓝牙能支持很多在802.11所不能实现的各种独特功能。进一步的区别还在于蓝牙技术可以方便地接入不断变化的应用阵列,这个特点可以用于高度移动的应用。
在典型的蓝牙网络或者微型网络中,射频连接可以建立在一个主设备和最多7个激活的从设备之间。在允许时,从设备与主设备之间实现通信(见图1),而从设备之间不能直接互相通信。
如图所示,#7主设备在LAN接入点(LAP)所能覆盖的10米范围之外。进入服务区时,PDA就会与LAP建立连接,并根据LAP的命令从主设备转变为从设备(假设其身份为第7号激活从设备)。在这个站中,它将作为客户利用LAP提供的服务。
这一过程看似简单,实际上包含了多个步骤,这些步骤在应用软件中实现。
蓝牙系统的设计工程师应该牢记一些影响系统性能的问题,例如RF链路预算和带宽共享。蓝牙设备规定的工作半径为10米,这是由于必须延长电池的使用寿命,但是也允许设计更大发射功率的蓝牙单元,将覆盖面积扩展到半径100米。由于非移动设备可以利用交流电源,所以电池寿命并不成为问题。但是这种大功率和低功率的混合使用(如LAP)将会产生RF功率不均衡的通讯链路。此时为了建立无线链路,单元之间的距离必须等于或小于10米。
无线链路能支持的主设备到从设备之间最大数据传输速率为723.2kbps,从设备到主设备的最大传输速率为57.6kbps。
应该注意该带宽由微型网内所有激活的从设备共享。另外一种数据链路配置(还有其他多种不同的配置)支持均衡数据流,在两个相反的方向上均能达到433.9 kbps。数据传输速率由主控制器(无线硬件)严格限制,同时也在一定程度上受到蓝牙堆栈和应用代码上层的影响。
具有基本堆栈的协议在不同程度上推进了由堆栈功能定义的网络连接的发展(见图2)。基带和无线硬件可以控制跳频和时分双工操作,实现对通讯信道的支持。由于这一层的功能对设计工程师来说是透明,设计工程师不必深入了解该部分的原理。
链路管理协议(LMP)是协议链中的底层部分。该部分负责很多功能,包括认证、加密使能、维护以及无线链路的控制等。这些功能由应用软件来管理。
主控制器接口(HCI)是允许主控制器(无线硬件)与通常运行在另一个处理器上的蓝牙协议堆栈的上层进行通讯的接口。在开发蓝牙解决方案的时候,这一点尤为重要,因为该接口允许无线硬件跨越硬件边界与上层堆栈和应用软件相集成,这些应用软件通常基于通用异步收发器(UART)或USB接口。
逻辑链路控制和适配协议(L2CAP)作为可以建立点到多点的数据链路层协议(一个主设备带多个从设备),将数据包分割和重组,将上层协议(如RFCOMM和服务发现协议(SDP))汇集或混合在一块,并为输入数据指定合适的协议。
RFCOMM是与堆栈连接的一个串行端口,能支持最多60个不同的连接(例如DOS中的COM1和COM2接口)。SDP可以作为客户机或者服务器工作。作为客户机时,它从另一个蓝牙节点获得有关的服务信息;作为服务器,它提供正在蓝牙设备上执行的服务的关键相关信息。
组成功能模块
在图2中有标为管理实体、安全管理器和事件管理器的其它模块,他们实现蓝牙设备控制操作所需的功能。管理实体向应用开发商提供接口,允许他们在覆盖范围内找到其它蓝牙节点,并与这些节点建立RF连接。
安全管理器对希望通过建立连接来得到服务的其它设备进行认证。它还能起动一个加密模式以保护通过公共的RF链路传输和接收的数据。事件管理器是堆栈中的关键部分,它提供将堆栈集成到操作系统中所必需的所有接口,而这是实现任何解决方案的第一步(见图2)。
如果忽略了某些防范措施,则有可能对堆栈操作(以及蓝牙认证委员会的强制性产品认证)产生不良的影响。堆栈再进入、存储器管理和外围集成软件有可能消耗处理器的大量时间,这是设计工程师亟待解决的问题。由于很多不同的开发商提供这方面的蓝牙方案,因此这些问题与所使用的协议堆栈软件有关。
堆栈处理必须规范地进行,只有这样才能及时对输入数据作出响应,并发送本地应用所产生的数据。因为嵌入式硬件解决方案是唯一的,开发自己的硬件驱动器必须支持主控制器或无线硬件和主机或控制处理器之间的通讯。
主机和主机控制器之间的接口使HCI成为保障不同协议和无线硬件组件之间的兼容所必须的。几家销售商提供的大多数无线硬件支持UART或者USB连接。传输控制器源代码通常是由协议销售商提供,可以让设计工程师在开发与无线的接口时无限制地使用。根据产品开发者使用的硬件平台不同,通常需要修改源代码。
应用程序开发
图2表示出两种截然不同的应用模块:一个负责与其它蓝牙设备的连接管理。另一个则实际实现这一应用。本例子中的应用是LAN接入点,并包括PPP和与LAN连接的协议接口,图中没有表示出这部分。
在开发中最为重要的一点是了解蓝牙系统如何使用协议组件来构造堆栈,并实现正常工作。使用应用程序之前,在设备之间建立连接有五个步骤:
图1中的PDA首先必须通过反复发送“INQUIRY”包来发现其它蓝牙设备的存在。在10米服务区内的其他设备希望PDA发现自己,这些设备在此期间通过发送包含自己地址的响应信息来向其他设备表明自己的存在,在响应信息中包含所支持的服务种类和服务属性等信息。
下一个步骤是可选的。如果在PDA的查找过程中发现的服务是可以接受的(在这个例子中是LAN访问),PDA可以确定远程设备的正确名称。实现的方法是通过连接到LAP,并询问名称,然后断开连接。PDA可以将该名称提交给用户,通过识别后就可以开始建立连接的过程。
服务查找是PDA必须进行的下一步骤。通过向LAP发送请求来获得关于所提供的服务的进一步信息。提交给PDA的重要信息不仅包括所提供的服务,还有PDA建立与LAP的客户链路所必须采取的方式,该方式能动态改变。
在这里,有两条信息值得关注:连接到RFCOMM模块层的串行端口号,以及LAN加载统计数。如果LAN处在重负荷工作状态,由于速度可能会很慢,PDA可能不会继续使用所提供的服务。
由于蓝牙是一个公共网络,通常使用安全措施来防止对节点的未授权访问。有三种安全模式可供选用:无安全模式、应用安全模式和无线链路安全模式。采用无安全模式时,任何设备都允许访问LAP,但是规范不允许出现这种情况。采用LAP规定的无线链路安全模式,则在PDA等其它设备希望建立无线连接的时候调用安全处理程序。
使用第二种安全模式时,在收到一个建立在L2CAP或RFCOMM层(见图3)上的对等连接请求后,LAN接入节点就开始认证过程(或匹配)。在本例子中,RFCOMM是作为调用LAP的安全措施的触发点。在触发后,LAP就使用建立RF连接时提供的PDA的唯一地址。LAP获得由用户输入或者存储在存储器里的个人识别码(PIN)。然后,LAP生成一个随机数,并将该数送给PDA。双方都使用PIN、PDA地址和随机数产生一个数字(链路密钥)。PDA将该数字送回给LAP,并与另一方生成的数字进行比较。如果匹配,PDA则通过了认证。
图4为支持第二种安全模式的应用层情况。在进一步研究该实例之前,必须首先了解另外两个与安全有关的技术:授权与加密。授权是通过用户接口向用户询问是否允许连接的行为,如果得到肯定的回答,则允许连接;加密是在设备之间对发送和接收数据进行的,这样可以保证数据不被第三方截获。
建立RFCOMM连接的过程
重新回到实现安全的LAP应用实例,该实例需要执行11个步骤。PDA通过发送一个建立L2CAP连接请求。建立连接后,再请求建立RFCOMM连接,安全管理器查询数据库,了解该请求的认证和授权信息。
然后,安全管理器会检查设备数据库,查看该蓝牙设备是否曾经通过该服务的认证。如果该设备曾经通过认证,它应该有一个可以使用的链路密钥,则认证的过程可以是透明的-这些设备将被连接。假定PDA是一个新用户,安全管理器会指示主控制器开始认证。
无线硬件从安全管理器请求到一个PIN,该PIN反过来调用连接管理应用程序,以便从用户(或者存储器)得到PIN号码。该PIN将被返回至安全管理器,再由安全管理器提供给主控制器。至此,认证过程成功完成(假定PDA使用相同的PIN号码)。
该设备的信息被输入到设备数据库供将来参考。安全管理器然后开始认证过程:它首先向用户询问(或者查看存储器)是否允许PDA连接。如果允许,该信息将被存储在设备数据库中,并打开加密功能。然后就可以建立RFCOMM连接。
现在,PPP会话可以如常进行,这在蓝牙协议V1.0B的LAN访问规范中有定义。现在可以启动并使用应用程序、访问LAN和后续服务器节点。
应用程序初始化
尽管链路管理可能很复杂,但对于一位具备了全局观念的通信设计工程师来说,不会太难。在管理任何无线连接之前,软件必须先通过执行一些特定任务来对嵌入式系统进行配置。
首先,必须为连接到无线单元的硬件地址的产品指定一个名称(例如Hardware_Design)。还必须定义CoD参数(这可能由终端用户决定),以保证识别产品的唯一性。
另外,软件还必须用一项或多项服务记录初始化SDP数据库,这些记录能表明产品支持的应用类型以及进一步描述应用特点的相关属性(例如,RFCOMM的第四个端口用来支持到LAN的连接)。
作为该过程的一部分,软件必须用与安全模式相关的信息初始化服务数据库,这些信息是提供蓝牙服务的产品在服务接入时所要求的(见图4)。然后,所有应用程序必须以蓝牙堆栈注册,从而允许堆栈通知应用程序输入数据已准备就绪,可以进一步处理。
如果在RFCOMM层的数据端口注册后,并可以接受远程应用的连接,或者可以对远程蓝牙设备的数据进行处理,则软件应该对无线硬件进行配置使之能不断地侦听区域内是否有其它蓝牙设备发送请求。
很明显,LAN接入点构成一个服务器。它向其它蓝牙设备提供服务,并必须将服务准备成多种响应方式,以向远程蓝牙设备提供允许其使用服务的强制信息。
使用蓝牙技术开发应用程序首先要求开发包括操作系统集成、硬件集成、RF连接管理和安全措施的支持软件。当这一工作完成后,工程师可以集中精力于如何成功设计和实现应用程序。
成功地实现软件设计并不需要对无线操作或者蓝牙协议堆栈操作有深厚的知识基础,而了解系统是如何与其它设备之间运作才是关键。
本文重点讨论了底层软件的开发,因为这些是希望快速实现解决方案的应用开发商经常提出的问题,而评判蓝牙设备成功的关键在于是否能与市场上其它设备进行互操作。
作者:Brian Senese
应用工程师
Extended Systems公司
brianse@extendsys.com。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。