本文共 2056 字,大约阅读时间需要 6 分钟。
1998.5,瑞典爱立信、芬兰诺基亚、日本东芝、美国IBM和英特尔公司五家著名厂商,在联合拓展短程无线通信技术的标准化活动时提出了蓝牙技术。1999年下半年,著名的业界巨头微软、moto、3COM、朗讯与蓝牙特别小组5家公司共同发起成立了蓝牙技术推广组织,从而在全球范围内掀起了一股蓝牙潮。
解决的是 一些小型的设备和移动终端的互联wifi 解决的是 移动终端与网络(网关设备)互联的技术蓝牙解决的是点对点的问题,但是wifi解决的是 点到 中央的问题.
传统蓝牙特点 短距离通信(一般10m内) // 蓝牙技术利用短距离、低成本的无线连接取代了电缆连接,从而为现存的数据网络和小型的外围设备提供统一的连接 蓝牙设备工作在全球通用免费的2.4GHz的ISM(即工业、科学、医学)频段 现在拥有三种类别和四个版本 比特率已经从1Mbps发展的将近54Mbps的境界,在传输速度上似乎要与Wifi分庭抗礼 蓝牙最致命的弱点在于高功耗 一旦打开蓝牙,它就会持续进行搜索并试图与设备保持连接,这个过程的功耗是很大的。 所以蓝牙技术的未来在于如何降低功耗,同时保持高速的传输速率。低功耗蓝牙特点 蓝牙4.0支持低功耗蓝牙 耗电量极低,睡眠模式一般是4-7个uA,广播状态是1个mA以下 接入时间短 低功耗蓝牙设备匹配和接入时间比传统蓝牙大大降低,低功耗蓝牙15ms就可以匹配上。 低功耗不是协议达成,是硬件决定
蓝牙系统 天线单元 // 处理发送介质,就像i2c 的两根物理电线一样. 链路控制(硬件)单元 // 控制器,就像i2c控制器一样. ---------------------------- 上面都是硬件,下面都是软件 链路管理(软件)单元 软件(协议)单元
三个类别,四个版本(还是5个?)现在蓝牙(V4.0的蓝牙)主要分三类br/edrleamp版本从 v1.0 到 v5.0 ,5个版本
全是硬件,怎么实现?
全是硬件,怎么实现?
全是软件,是怎么实现的?
CSRBlueZBlueDroidBroadcom BSA
纯硬件(浅绿色部分)就是蓝牙硬件模块(一般是芯片中的一个模块),下面就以蓝牙模块(硬件)代指浅绿色部分这个蓝牙模块需要驱动程序,来控制蓝牙模块(硬件)工作.这个驱动程序提供给其他软件的接口(这个接口包括硬件和软件接口)为 HCI,其他软件不会直接操作蓝牙模块,只会通过 该驱动程序,准确来说是该驱动程序提供的 HCI 来操作硬件.一般驱动程序提供的接口不是 API 吗?不是纯软件的吗?是的,但是蓝牙模块可以 单单 以模块存在,然后驱动程序跑在蓝牙模块上.如果其他软件(想要使用该驱动程序的软件)想要调用这些接口,就要看 该软件 是否和 蓝牙模块上的驱动程序是否在同一cpu上.如果是,则是纯软件接口.如果不是,那除了软件接口还需要考虑硬件接口,例如硬件接口可能是串口,可能是usb接口.Link Manager 的主要内容一般是 驱动该蓝牙模块(硬件)的 驱动程序该驱动程序一般提供什么样的软件 API1. 定义数据包结构/信道2. 发现/连接程序3. 发送/接收数据。
L2CAP 从0开始 一开始涉及的 ble 蓝牙协议只有一种 profile ,那么就不需要用到 L2CAP . 此时想再弄一个 profile ,问题就来了. 如果两个应用并发调用驱动,怎么办?显然会出现问题. 有人就说了,那应用处理吧,应用就不干了,我用你的协议,还要处理你内部的并发,这不合理 有人就说了,说的也是,那蓝牙协议栈处理吧,于是,蓝牙协议栈内部为了解决这个计算机难题,就在蓝牙协议栈中加了一层.(该层用来去并发),做出来了之后,各种好处就出来了.又增又补的,这一层的功能又多了起来.
从0 开始 有很多应用,每种应用都要处理自己的封包, 例如 蓝牙耳机使用的 蓝牙音频协议. 应用1 想用 蓝牙传输音频 ,对不起,蓝牙传输音频的协议没有,自己实现吧,于是,应用1实现了一套 应用2 想用 蓝牙传输音频 ,对不起,蓝牙传输音频的协议没有,自己实现吧,于是,应用2实现了一套 应用3 想用 蓝牙传输音频 ,对不起,蓝牙传输音频的协议没有,自己实现吧,于是,应用3实现了一套 ... 有些人一看,得了,这么多人用蓝牙传输音频, 我能不能将一些 通用的 蓝牙传输音频 的代码抽出来,单独做出来,然后别人再实现的 这种应用的时候,直接调用不就行了.ok,于是,出来了 一种 通用的应用协议. 然后麻烦事就来了,这些协议放哪里呢? 照旧,新增一层,这层就放到 L2CAP 和 之前的 app 层 中间吧.用于存放各种 通用应用协议虽然历史不是这么发展的,但是应该是这么理解的.
转载地址:http://bligi.baihongyu.com/