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

蓝牙开发那些事儿(1)——从抓包数据开始 从今天起,会开一个新的专栏。面向初学者试着讲讲蓝牙,网上好像有很多讲解移植蓝牙协议栈btstack的,但是都表示移植好了,对蓝牙协议还是一知半解,网上的那些讲蓝牙协议的,大多都是粘贴来粘贴去,没有深入,对初学者很不友好。 我想找一个新的角度,试着去帮助初学者入门,尝试一下,如果效果好,能帮助到其他人,那么还是有动力坚持写下去的。 一般网上讲协议栈的,都是分层去讲,先来看一下网上找到的这张协议栈的图 这个是bluelet协议栈的框图,看上去很晕是不是,对初学者很不友好。 这里可以稍微解释一下,在. 阅读详情

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.youkuaiyun.com/dinuliang/archive/2010/07/07/5717382.aspx 
http://www.bluez.org/download/

蓝牙(bluetooth)攻击与防护(一) 蓝牙技术基于芯片,提供短距离范围的无线跳频通信。它有很低的电源要求,并且可以被嵌入到任何数字设备之中。具有蓝牙芯片的数字设备,比如便携计算机、手机、PDA,可以通过蓝牙移动网络进行通信。但是,蓝牙采用的无线跳频技术使人们误认为蓝牙的安全机制已经解决。可是实际上,无线跳频技术对于窃听者和截取者不是一个技术障碍。目前的蓝牙鉴权只是对蓝牙单元进行鉴权,而没有对用户实施鉴权. 若要对用户进行鉴权必须实现应 阅读详情

相关推荐

蓝牙协议分析(一):基本概念

自1994年由爱立信推出至今,蓝牙技术已经走过了20个岁月。从最初的Bluetooth V1.0,到Bluetooth V4.0(最新的为V4.1,2013年底发布),经历了近9个版本的修订后,发展为当前的状况。说实话,如今的蓝牙4.1,简直是一个大杂烩:BR/EDR沿用旧的蓝牙规范;LE抄袭802.15.4;AMP直接使用802.11。而这一切的目的,就是以兼容性和易用性为基础,在功耗和传输速率之间左右为难。蜗蜗以为,这并不是优雅的设计。不过没关系,存在即合理。

qq_25218777的博客 971

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

1 Bluetooth Core System Protocol(蓝牙核心协议) 蓝牙技术规范(specification)包括核心协议(protocol)和应用规范(profile)两个部分。 核心协议包含蓝牙协议栈中最低的4个Layer,和一个基本的服务协议SDP(Service Discover Protocol),以及所有应用profile的基础Profile GAP(General Acess Profile)。核心协议是蓝牙协议栈中必不可少的。 除了核心协议外,蓝牙规范必须包含一些其他的应

水龙吟的备忘录 6081

蓝牙概述及基本架构介绍

蓝牙,是一种利用低功率无线电,支持设备短距离通信的无线电技术,能在包括移动电话、PDA(掌上电脑)、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换,蓝牙工作在全球通用的2.4GHz ISM(即工业、科学、医学)频段,使用IEEE802.11协议。蓝牙协议包括两种技术:BR:Basic Rate和LE:Low Energy。这两种技术都包括搜索(discovery)管理、连接(connection)管理等机制,但它们是不能互通的。厂商如果只实现了一种,那么只能与同样实现该技术的设备互通。

四儿家的小祖宗的博客 5774

蓝牙硬件简介

蓝牙硬件模块由蓝牙协议栈的无线收发器(RF)、基带控制器(BB)和链路管理层(LMP)组成。大多数生产厂家都是利用片上系统技术SOC(System-On-Chip)将这三层功能模块集嵌在同一块芯片上。它由微处理器(CPU)、无线收发器(RF)、基带控制器(BB)、静态随机存储器(SRAM)、闪存(Flash程序存储器)、通用异步收发器(UART)、通用串行接口(USB)、语音编/解码器(CODEC...

Lenzetech的博客 2220

(二十五)深入理解蓝牙BLE之“开源协议栈”

packetcraft:https://github.com/wzd5230/stacks bluez:http://www.bluez.org/ Zephyr:https://github.com/zephyrproject-rtos/zephyr/tree/master/samples/bluetooth nimble:https://github.com/RT-Thread-packages/nimble btstack:https://github.com/bluekitchen/btsta

1750

【Bluetooth|蓝牙开发】三、一篇文章,带你总览蓝牙协议

1、开篇词 2、蓝牙开发入门 3、蓝牙协议栈总览 4、蓝牙协议栈——物理层 5、蓝牙协议栈——链路层 6、蓝牙协议栈——传输层 7、蓝牙协议栈——L2CAP协议 8、蓝牙协议栈——ATT协议 9、蓝牙协议栈——GATT协议 10、蓝牙通信流程分析 11、蓝牙协议栈——Bluez交叉编译 12、蓝牙调试工具汇总

Donge's Blog 1万+

Bluedroid: 蓝牙协议栈源码剖析

https://www.cnblogs.com/blogs-of-lxl/p/7010061.html   一、 基础知识介绍 1.缩略语 BTIF: Bluetooth Interface  BTU : Bluetooth Upper Layer  BTM: Bluetooth Manager  BTE: Bluetooth embedded system  BTA :Bluee...

edmond999的专栏 5373

【蓝牙协议栈】【HCI架构】史上最全蓝牙协议栈介绍(蓝牙核心规范spec、Bluetooth Stack架构分析)

详解蓝牙核心文档Spec目录层级和蓝牙HCI架构等

风云说通信 1万+

传统蓝牙HCI(Bluetooth HCI)的概念介绍

一. 声明 本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下: 第一篇:蓝牙综合介绍 ,主要介绍蓝牙的一些概念,产生背景,发展轨迹,市面蓝牙介绍,以及蓝牙开发板介绍。 第二篇:Transport层介绍,主要介绍蓝牙协议栈跟蓝牙芯片之前的硬件传输协议,比如基于UART的H4,H5,BCSP,基于USB的H2等 第三篇:传统蓝牙controller介绍,主要介绍传统蓝牙芯片的介绍,包括射频层(RF),基带层(baseband),链路管理层(LMP)等 第四篇:传统蓝牙host介绍,主要

朝气蓬勃 2万+

蓝牙 bluetooth-之一

BT,核心规范 BT设备根据BT规范进行协议信息交换。系统核心规范是:radio(RF)协议,link(LC)控制协议,link(LM)管理协议以及 logical link control and adaptation protocol (L2CAP)。 最底下的三层是,RF,LC,LM,它们通常被放在一起组成蓝牙的(BT controller)控制子系统,蓝牙控制子系统通过(HCI,Hos

shichaog的专栏 1万+

【Bluetooth|蓝牙开发】二、蓝牙开发入门

蓝牙,是一种利用低功率无线电,支持设备短距离通信的无线电技术,能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换,蓝牙工作在全球通用的2.4GHz ISM(即工业、科学、医学)频段,使用IEEE802.11协议。

Donge's Blog 1万+

传统蓝牙HCI搜索流程介绍(bluetooth inquiry)

一. 声明 本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下: 第一篇:蓝牙综合介绍 ,主要介绍蓝牙的一些概念,产生背景,发展轨迹,市面蓝牙介绍,以及蓝牙开发板介绍。 第二篇:Transport层介绍,主要介绍蓝牙协议栈跟蓝牙芯片之前的硬件传输协议,比如基于UART的H4,H5,BCSP,基于USB的H2等 第三篇:传统蓝牙controller介绍,主要介绍传统蓝牙芯片的介绍,包括射频层(RF),基带层(baseband),链路管理层(LMP)等 第四篇:传统蓝牙host介绍,主要

朝气蓬勃 7113

Windows11安装Ubuntu 20.04.3 LTS双系统(详细过程)

一、基础环境 听说BIOS模式的传统MBR模式和新式UEFI模式,会对安装双系统产生影响。Windows11应该都是UEFI吧,可以按win+r输入msinfo32回车确认查看BIOS模式,我的电脑是UEFI+双硬盘 Ubuntu安装准备 1、 官网下载Ubuntu 20.04.3 LTS镜像iso文件:https://ubuntu.com/download/desktop 2、 下载官网推荐的U盘启动制作工具rufus: https://rufus.ie/ 3、制作启动u盘 插入U盘, 运行 rufu

学习随笔 9万+

Bluetooth协议学习

Bluetooth协议栈学习

重启专家的博客 3243

重头开始学ROS(8)---LVI-SAM复现与实机部署Ubuntu20.04以及如何适配6轴imu

本文详细记录了在Ubuntu20.04环境下复现LVI-SLAM系统的过程,主要包含四个部分:源码编译、问题解决、数据录制和6轴IMU适配。在编译过程中遇到GTSAM、PCL版本、OpenCV路径等典型问题并给出解决方案;详细说明了ROS bag包的录制规范;针对6轴IMU硬件限制,提供了核心代码修改方案。文章为LVI-SLAM系统在非标准环境下的部署提供了实用参考,特别适合需要适配不同硬件配置的研究者。

qq_73991479的博客 1558

【01】Canoe零基础手把手教学 --- Canoe安装

Canoe零基础手把手教学

jaytinlove的博客 7752

几款常见蓝牙芯片整理

常见蓝牙芯片及采用ARM核心整理ARMSilabsBluetooth Low EnergyDialogDA14585/6DA1469xNordicNRF52NRF5340 ARM Silabs Bluetooth Low Energy Dialog DA14585/6 DA1469x Nordic NRF52 NRF5340

weixin_44395477的博客 9724

点云最小二乘法拟合曲线

文章目录一、引言 一、引言

dayuhaitang1的博客 2734

Bluetooth HCI

Bluetooth HCI

Andy的博客 1065

Qt EGLFS 图形后端详解

EGLFS (EGL Full Screen) 是Qt框架在嵌入式Linux系统中的高性能图形显示后端,它提供了直接基于EGL和OpenGL ES的硬件加速渲染解决方案。

浩瀚之水的专栏 511

但是我如果真的用差速轮去控制转向 为了尽量原地旋转 转向角度精确 我应该怎么去配置左右两个轮子的速度呢

目标实现方式原地转向左右轮速度相等、方向相反精确角度用 IMU 检测 yaw 实时对齐停止判断达到目标 yaw ± 容差时立即停转控制方式状态机(idle → turning → done)推荐容差2°~3° (可根据实际调整)

qqqweiweiqq的博客 312

OpenHarmony + RN:Bluetooth连接蓝牙外设

本文系统性地讲解了在OpenHarmony平台上使用React Native实现蓝牙外设连接的完整技术路径。通过深入分析蓝牙协议栈架构、OpenHarmony平台特性与React Native的集成机制,提供了经过真机验证的实战代码。OpenHarmony蓝牙权限模型的特殊处理 ✅跨平台蓝牙库的适配优化策略 🔧数据传输过程中的性能优化技巧 ⚡平台特有问题的创新解决方案 💡随着OpenHarmony生态的快速发展,React Native在该平台的蓝牙支持将不断完善。

摘星编程的博客 873

第11节:GPU 线程层级:线程、线程块、网格

层级标识变量功能线程threadIdx执行单元,处理数据线程块blockIdx管理多个线程,提供共享内存网格管理多个 blockGPU 编程中,合理安排线程层级,是提升性能的关键。

yumeiguo的博客 210

Bluetooth

名词解释 GAP (Generic Access Profile) GATT(Generic attribute profile) ATT(Attribute Protocol) SMP(Secure manager protocol) L2CAP(Logic link control and adaptation protocol) nRF5_SDK_15.3.0 软件框架 NORDIC BL...

嵌入式技术 1757

3 路由引入

在大型企业网络中,网络规模十分庞大,选用单一的路由协议无法满足网络的需求,因此多种路由协议共存的情况十分常见。或者出于业务逻辑或行政管理的考虑,会在不同的网络结构中设计和部署不同的路由协议,使路由的层次结构更加清晰可控。路由引入是具有方向性的,将路由信息从路由协议A引入到路由协议B(A-to-B),则路由协议B可获知A中的路由信息,但是此时,A还并不知晓B路由协议中的路由信息,除非配置B-to-A的路由引入。表3-1:各种路由协议的优先级。通过路由引入,可以实现路由信息在不同路由协议间传递。

lwljh134的博客 621

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Bluetooth Core Architecture Blocks----蓝牙核心架构

参考: Core System Architecture SIG标准如今蓝牙由蓝牙技术联盟(Bluetooth Special Interest Group,简称SIG)管理。蓝牙技术联盟在全球拥有超过25,000家成员公司,它们分布在电信、计算机、网络、和消费电子等多重领域。IEEE将蓝牙技术列为IEEE 802.15.1,但如今已不再维持该标准。蓝牙技术联盟负责监督蓝牙规范的开发,管理认证

OSKernelLAB(gatieme) 9717

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

上一篇: BlueTooth: 蓝牙协议栈
下一篇: BlueTooth: 蓝牙
Augusdi
博客等级 码龄19年 1万+粉丝 1016原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值