蓝牙核心协议,芯片结构,源码和移植

原创 2011年04月11日 22:41:00

1 Bluetooth Core System Protocol(蓝牙核心协议)

蓝牙技术规范(specification)包括核心协议(protocol)和应用规范(profile)两个部分。

核心协议包含蓝牙协议栈中最低的4个Layer,和一个基本的服务协议SDP(Service Discover Protocol),以及所有应用profile的基础Profile GAP(General Acess Profile)。核心协议是蓝牙协议栈中必不可少的。

除了核心协议外,蓝牙规范必须包含一些其他的应用层的服务和协议--应用层profile。

蓝牙协议栈通常有如下内容:

蓝牙5

而蓝牙的核心系统协议为最低的4个Layer,再加上应用层profile SDP,包括:RF,LC(link control),LM(Link Manager),L2CAP(Logical Link Control and Adaptation Protocol),SDP。核心系统的架构图如下,为简明起见,没有画出SDP。

蓝牙6

最低的3个Layer经常也看作一个子系统,叫Bluetooth Controler。Bluetooth Controler和包括L2CAP在内上层Profile之间的通信,是通过HCI(Host to Controler Interface)进行。HCI以下的内容Bluetooth Controler由蓝牙芯片实现,以上的内容由Bluetooth Host(比如手机Baseband)实现。

蓝牙核心系统通过一系列Service Access Point(如上图的椭圆部分所示)提供服务,这些服务包含了对蓝牙核心系统的最基本和原始的控制。可以分为3种类型:Device Control Service,修改蓝牙Device的行为,状态和模式;Tansport Control Sevice,创建修改和释放traffic bearers(信道和链接);Data Service,在Traffic bearers上进行数据传输。

由于蓝牙架构通过HCI将Controler和Host独立开来,所以对Controler做了一些基本假设。假定与Host相比,蓝牙Controler的数据buffer能力有限。所以L2CAP会对host传输给Controler的数据做预处理,数据包大小适合蓝牙Controler的buffer能力;L2CAP还会对数据进行质量控制和纠错。

对蓝牙核心系统协议的测试通过TCI(Test Control Interface)进行。

2 蓝牙芯片(Bluetooth Controler)结构

蓝牙芯片,即上一节所说的Controler,实现的是蓝牙协议栈中最底3层的协议,RF,LC,LMP。用在Feature Phone上时,蓝牙芯片作为Slave挂在BB上(不知Smart Phone是不是挂在AP上)。他是一个相对独立完整的子系统,拥有自己的RF,基带,CPU,数据总线和存储设备。通过USB或UART(通常是UART)与Host通信,上一节架构图的HCI,物理上所依赖的便是UART或USB。如下图所示:

蓝牙7

其中蓝牙基带控制器是蓝牙硬件模块的关键模块。其主要功能是在微处理器控制下,实现蓝牙基带部分的所有实时处理功能,包括负责对接收的bit流进行符号定时提取和恢复;分组头及净荷的循环冗余度校验(CRC),分组头及净荷的前向纠错码FEC处理,加密和解密处理等,且能提供从基带控制器到其它芯片的接口等。CPU一般采用RISC结构的嵌入式微处理器,如ARM7TDMI微处理器,才能满足对蓝牙核心协议的高速处理和大量数据bit流的处理。Flash 存储器用于存放基带和链路管理层中的所有协议软件。SRAM作为CPU 的运行空间,在工作时把Flash中的软件调入SRAM中处理。射频收发器负责接收或发送高频的通信信号。UART和USB接口提供到HCI的主机控制器接口传输层的物理连接,是上层协议与蓝牙硬件模块进行通信的通道。蓝牙测试模块主要提供无线层和基带层的认证和一致性规范,同时还管理产品的生产和售后的测试,为可选模块。

3 蓝牙源码和移植

由上2节的内容可知,蓝牙芯片(Bluetooth Controler)实现的是协议栈最底下的3层,即HCI以下的部分;而Host实现HCI以上的内容,其中属于蓝牙核心协议的L2CAP和SDP是必须实现的,其他的Profile是可选的。

因此,除了蓝牙芯片厂商(如博通,CSR)外,其他使用蓝牙芯片的厂商不需要关注Bluetooth Controler(Slave端)的内容,而只是实现Host端的内容。当蓝牙芯片挂到不同的软硬件平台上时,软硬件只需要处理HCI相关的部分。

现在用得很广的Bluetooth源码是Linux下的BlueZ,源码包可以在BlueZ的官网http://www.bluez.org/download/下载到。将BlueZ移植到具体的硬件平台时,只需要关注HCI部分,HCI所依赖的硬件是UART或USB,大多数情况下是UART,所以移植蓝牙源码仅需要需要关注UART 驱动;另外加上电源开关。以Android为例:
(1)UART 驱动
BlueZ内核子系统通过守护进程hciattach 与特定硬件的UART驱动进行绑定。
以MSM7201A为例,参考drivers/serial/msm_serial.c。你可能还需要编辑init.rc 中hciattach 的命令行选项。

(2)蓝牙电源开关
Android V1.0与之前的版本采用不同的方式控制蓝牙芯片的电源开关。
1.0:Android 框架向/sys/modules/board_[PLATFORM]/parameters/bluetooth_power_on 写0或1.
Post1.0: Android 框架使用 linux中 rfkill 的API。
可以参考 arch/arm/mach-msm/board-trout-rfkill.c。

4 Reference

https://www.bluetooth.org/apps/content/
http://www.avrw.com/article/art_104_1071.htm
http://blog.csdn.net/dinuliang/archive/2010/07/07/5717382.aspx
http://www.bluez.org/download/

BlueTooth: 蓝牙核心协议与蓝牙芯片结构

1 Bluetooth Core System Protocol(蓝牙核心协议) 蓝牙技术规范(specification)包括核心协议(protocol)和应用规范(profile)两个部分。 核心...
  • Augusdi
  • Augusdi
  • 2014-05-15 14:53:13
  • 2919

蓝牙协议分析_基本概念及Android4.4 BT代码架构

1. 前言 自1994年由爱立信推出至今,蓝牙技术已经走过了20个岁月。从最初的Bluetooth V1.0,到如今的Bluetooth V4.0(最新的为V4.1,2013年底发布),经历了近9个...
  • hubinbin595959
  • hubinbin595959
  • 2017-01-03 19:42:57
  • 2732

关于CSR<em>蓝牙芯片</em>的架构和profile的分析

2009-05-14 上传大小:1.65MB CSR蓝牙 对csr<em>蓝牙芯片</em>的软件架构和常见的profile以及开发过程中遇到的issue进行了介绍 综合评分:4(49位用户评分) 收藏评论(20)...
  • 2018年03月19日 00:00

蓝牙核心协议,芯片结构,源码和移植 .

from :http://blog.csdn.net/evanwu_85/article/details/6316780 1 Bluetooth Core System Protocol(蓝牙核心协...
  • rensanshi
  • rensanshi
  • 2014-03-14 14:29:18
  • 877

蓝牙核心协议 & 蓝牙芯片结构

1 Bluetooth Core System Protocol(蓝牙核心协议) 蓝牙技术规范(specification)包括核心协议(protocol)和应用规范(profile)两个部分。 ...
  • liliang9425
  • liliang9425
  • 2014-01-28 16:31:25
  • 672

蓝牙核心协议,芯片结构,源码和移植

1 Bluetooth Core System Protocol(蓝牙核心协议) 蓝牙技术规范(specification)包括核心协议(protocol)和应用规范(profile)两个部分。 ...
  • evanwu_85
  • evanwu_85
  • 2011-04-11 22:41:00
  • 4676

Linux 下的Bluetooth 架构

实战Linux Bluetooth编程(一) 协议栈概述 Sam一年前在Linux下写了一个类似Windows下BTW的库--BTX。现在需要添加新功能时发现很多知识点都忘记 了。所以决定在这次学...
  • BHJ1119
  • BHJ1119
  • 2016-12-19 11:46:53
  • 2730

1、蓝牙核心技术了解(蓝牙协议、架构、硬件和软件笔记)

原文地址:http://www.cnblogs.com/zjutlitao/p/4742428.html 声明:这篇文章是楼主beautifulzzzz学习网上关于蓝牙的相关知识的笔记,其中...
  • qq_29923439
  • qq_29923439
  • 2017-07-11 16:13:08
  • 1735

蓝牙SoC芯片之争

为了抢夺以可穿戴为代表的IoT市场,蓝牙SoC芯片巨头展开争夺,产品更新换代很快,市场占有量比较大的厂商TI,Dialog,Nordic,Qualcomm(CSR),NXP(Quintic)。不过万变...
  • StuartGuo
  • StuartGuo
  • 2015-07-08 21:01:34
  • 2046

Android中bluetooth的架构

既然我们想要系统地进行分析一下Android的bluetooth,那么就有必要首先来从总体架构上看一下bluetooth在Android中是处于哪些层次,做到手中有枪,心里不慌。Bluetooth从总...
  • wangzhen209
  • wangzhen209
  • 2015-10-17 16:19:40
  • 991
收藏助手
不良信息举报
您举报文章:蓝牙核心协议,芯片结构,源码和移植
举报原因:
原因补充:

(最多只允许输入30个字)