文档章节

蓝牙协议栈

xiaocui911
 xiaocui911
发布于 2016/07/25 16:42
字数 1071
阅读 80
收藏 1

蓝牙协议框架体系基本上就是这个图了,有点乱。

然后,我们先从底层开始分析,主要是由基带层和链路管理层组成。

无线连接(RF)通过2.4GHZ无需申请的ISM频段,实现数据的过滤与传输。

基带层提供两种不同的物理链路(同步面向连接链路SCO,异步无连接链路ACL)主要负责跳频和蓝牙数据帧的传输。

LMP负责两个或多个设备链路的建立和拆除及链路的安全和控制,同时他为上层软件模块提供了不同的访问入口。

蓝牙主机控制器HCI:是由基带控制器,连接管理器,控制和时间寄存器等组成。他是蓝牙中软硬之间的接口。上下两层的数据和消息必须通过HCI的解释才能进行。

中间协议层:

中间协议层主要是由逻辑链路控制与适配协议L2CAP(logical link control and adaptation protocol),服务发现协议SDP,线缆替换协议和二进制电话控制协议TCS等功能组成。

L2CAP是核心部分,他是其他协议实现的基础。位于基带之上,向上层提供面向连接和无连接服务。他主要完成数据的拆装,服务质量控制,协议复用,分组的分割与复用。

SDP是一个基于客户/服务器结构的协议。工作于L2CAP层之上,为上层应用程序提供一种机制来发现可用的服务与属性。

RFCOMM是一个仿真有线链路的无限数据仿真协议。他在蓝牙基带上仿真RS-232控制和数据信号,为上层业务提供传送。

TCS定义了用于蓝牙设备之间建立语音和数据呼叫的控制信令。

高端应用层:

高端协议层主要是包括了PPP,TCP UDP,WAP等协议,这里不多介绍。

蓝牙很重要的一个特性就是所有的蓝牙产品无需实现所有的蓝牙规范。为了更加容易保持蓝牙设备之间的兼容,所以采用了profile(不懂!!!)。profile定义了设备如何实现一种连接或应用。有四种基本的profile他们包括GAP/SDAP/SPP/GOEP

属性协议(AP),通用属性规范(GATT) 一般访问应用规范(GAP)。属性协议定义了客户端与服务器端如何发送符合标准的消息。由6种基本操作构成:请求,响应,命令,指示,通知,确认。通用属性规范:定义了如何发现与使用服务,特性与描述符的标准方法。主要有服务,特性的发现,客户端的读写等。一般访问规范:定义了蓝牙设备如何发现和建立与其他设备的连接。他处理一些一般模式的业务和一些安全性问题,同时还处理一些有关连接的业务。

蓝牙协议栈通过软中断将底层事件(收到蓝牙数据,链接成功,收到广播)抛给app,app再捕获自己感兴趣的时间做相应的处理。至于怎么捕获,就是根据switch   case语句(你懂的)来的。如图:

应用程序通过_SVC 指令触发异常进入协议栈SVC异常处理函数,然后根据number调用协议栈中预先实现的底层协议处理函数。

而中断实际上是根据中断向量表中中断号进入协议栈相应中断,然后通过中断号的“中断偏移”返回到应用程序的中断处理函数。

协议栈收到底层数据做相应处理后,处理器进入协议栈将evt_id放入事件队列,后执行SWI中断处理函数。然后程序进入应用程序再取出事件并交给事件派发程序(即ble_evt_dispatch()函数)处理。事件派发程序将事件传给相关服务和事件处理任务。

更具体的代码分析,等到二更了,因为我也是菜鸟。。。

© 著作权归作者所有

共有 人打赏支持
xiaocui911
粉丝 6
博文 69
码字总数 14765
作品 0
深圳
程序员
IVT 发布世界上首个支持 Moblin 和 Android 的蓝牙最新标准 V3.0 协议栈

北京2009年4月29日电 /美通社亚洲/ -- 全球主要的蓝牙软件供应商 IVT 宣布,该公司已发布了世界上第一个支持英特尔 Moblin 和谷歌 Android 平台的蓝牙最新标准 V3.0+HS 的协议栈。多年来,I...

老枪
2009/04/30
460
0
AliOS Things蓝牙协议栈及应用开发框架介绍

摘要: AliOS Things从1.2.0版本开始支持蓝牙协议栈(BLE),及基于蓝牙协议栈的应用层开发框架。本文分为三部分对蓝牙组件进行介绍:蓝牙组件,蓝牙协议栈介绍及接口说明,和应用开发框架介绍...

阿里云云栖社区
01/11
0
0
第四章 怎样开发低功耗蓝牙产品

1.1,准备 Nordic Semiconductors的开发工具包nRF51-DK nRFgo Studio综合开发环境 nRF51 SDK(软件开发套件)软件开发包(含芯片开发的参考代码以及文档) 用于模拟低功耗蓝牙主机的USB加密狗...

weixin_38915701
04/22
0
0
Android: Android Bluetooth

Android Bluetooth 原文链接:http://blog.csdn.net/zmyde2010/article/details/6619915

长平狐
2012/06/20
1K
0
浅谈昇润科技蓝牙4.2模块:HY-40R204P

浅谈BLE蓝牙4.2 从应用层面出发,低功耗蓝牙(BLE)的诞生对物联网应用具有颠覆性的意义。目前多数移动设备上使用的蓝牙是蓝牙4.2,而蓝牙4.2标准最大特性在于:数据传输更快、隐私功能更强大...

昇润科技
06/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

内存模型是怎么解决缓存一致性的?

在再有人问你Java内存模型是什么,就把这篇文章发给他。这篇文章中,我们介绍过关于Java内容模型的来龙去脉。 我们在文章中提到过,由于CPU和主存的处理速度上存在一定差别,为了匹配这种差距...

Java填坑之路
15分钟前
1
0
vue-cli 3.0 初体验

最近复习了下vue,突然发现vue-cli已经更新到3.0版本了,并且变化蛮大,看来要不停的学习,真是一入前端深似海。 安装步骤: 1、全局安装 npm install -g @vue/cli Vue CLI 的包名称由 vue-...

tianyawhl
17分钟前
0
0
Angular进阶之路

【初级】会写页面,能出东西。 给定环境和 rest API,不用第三方库,能在十分钟内完成一个 master/detail 结构的带路由的应用(可以不管美观)。 知识点:Angular CLI、组件、路由、HTTP 服务...

陆小七的主页
20分钟前
0
0
Redis缓存数据库安全加固指导(一)

背景 在众多开源缓存技术中,Redis无疑是目前功能最为强大,应用最多的缓存技术之一,参考2018年国外数据库技术权威网站DB-Engines关于key-value数据库流行度排名,Redis暂列第一位,但是原生...

中间件小哥
20分钟前
0
0
百万级数据mysql分区

1. 什么是表分区? 表分区,是指根据一定规则,将数据库中的一张表分解成多个更小的,容易管理的部分。从逻辑上看,只有一张表,但是底层却是由多个物理分区组成。 2. 表分区与分表的区别 分表...

罗文浩
22分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部