喜好

喜好检索

生活 蔬菜

蔬菜大全

思考

见闻与录

BT技术

BT蓝牙技术

标签

BT蓝牙技术 2025年04月02日

    目录

    蓝牙

    
    
    蓝牙技术基于FHSS(Frequency-Hopping Spread Spectrum)跳频扩频技术 (动态切换传输信道,以提升抗干扰能力)
    蓝牙旨在解决移动电话与耳机等设备间的有线连接问题.
    
    
    蓝牙技术历经迭代升级,关键里程碑包括:
    蓝牙1.12001年) :首个稳定版本,支持基础数据传输与语音通信
    蓝牙2.02004年) :引入 增强数据速率(EDR ,传输速度提升至3 Mbps,支持CD级音质。
    蓝牙4.02010年) :新增 低功耗(BLE 模式,推动物联网设备普及。
    蓝牙5.02016年) :传输距离扩展至300米,速率达2 Mbps,支持多设备连接。
    蓝牙5.22020年) :强化音频传输与定位功能,适配智能家居与可穿戴设备。
    
    
    工作频段: 2.4 GHz ISM频段,通过79个跳频信道减少与WiFi的干扰, 兼容 IEEE 802.15.1 
    
    
    
    Android的蓝牙框架分为
    
    3.高层应用层___________高层有  SDP(服务发现)、RFCOMM(串口模拟)、AVCTP(音频控制)等支持应用场景
    2.中间协议层___________中间层有 HCIHost硬件控制接口)、L2CAP(逻辑链路控制)
    1.底层硬件模块_________RF(射频)、BB(基带)、LM(链路管理)
    
    
    Android 4.2前:使用BlueZ协议栈,架构依赖Linux内核与用户空间库(libbluetooth.so )。
    Android 4.2后:过渡到BlueDroid,结构更简洁,与DBus解耦并通过HAL标准化硬件交互。 BTE负责核心功能,BTA与应用层通信
    Android 11及更新版本:引入 Gabeldorsche 作为协议栈重构,目标为降低延迟并提升稳定性。
    
    
    ═══════════════════════════════════════
    Android蓝牙系统分为六个层次:内核层、BlueZ库、适配库、JNIJava框架和应用层
    
    
    6.蓝牙应用层
    5.蓝牙Java框架    框架层在  /framework/base/core/java/android/bluetooth
    4.蓝牙JNI
    3.蓝牙硬件抽象层(HAL) 蓝牙适配库
    2.BlueDroid_蓝牙协议栈
    1.蓝牙内核层
    __________________________________
    
    6.蓝牙应用层使用逻辑
    包括用户开发的蓝牙应用(如设备扫描、数据传输等),通过Android提供的android.bluetooth API与底层交互。
    开发者可使用BluetoothAdapterBluetoothSocket等类实现功能
    
    
    5.蓝牙Java框架    框架层在  /framework/base/core/java/android/bluetooth
      提供标准的蓝牙API接口(如配对、连接、数据传输)
      蓝牙系统服务:以独立APK形式存在 /packages/apps/Bluetooth 通过Binder IPC机制与应用交互,管理蓝牙服务和Profile(如 HFPA2DP
    
    
    4.JNI
       代码位于 /packages/apps/Bluetooth/jni  实现Java框架层与本地C/C++代码的交互 调用HAL接口并接收回调
       
    3. 蓝牙硬件抽象层(HAL) 
        定义标准接口(如bluetooth.h),协议栈通过HAL与硬件驱动通信
    
    
    2.BlueDroid_蓝牙协议栈
      BlueDroid :分为两层: BTE   BTA 
      BTEBluetooth Embedded System :实现核心功能(如L2CAPRFCOMM协议)
      BTABluetooth Application Layer :与框架层通信,处理应用逻辑
      代码位置:external/bluetooth/bluedroid
    
    1.蓝牙内核层 
        Linux内核模块:包括HCI驱动(如UARTUSB)、协议支持(如L2CAPSCO)及BlueZ遗留组件(部分版本保留)
        厂商驱动:如高通、博通的定制实现,通过 hciattach 等工具加载
    
    
    ════════════════════════════════════════════════════
    
    
    
    
    
    
    
    复制

    缩词

    ATT

    ATT === Attribute Protocol === ATT(属性协议)

    
    
    ATT 定义了客户端-服务器模型,客户端通过操作码(OpCode)向服务器发送请求(如读取、写入特征值),服务器返回响应或通知
    
    
    属性操作与服务发现
    
    
    复制

    Gabeldorsche

    代码路径: 
    /packages/modules/Bluetooth/system/gd/
    
    
    Gabeldorsche在德语中是“叉须鳕鱼” , (简称“gd”) 同时与蓝牙名称的历史人物Harald Bluetooth有关联,是双关语
    
    Gabeldorsche(简称“gd”)是Android系统蓝牙功能的核心软件层,负责设备发现、连接管理、数据传输等
    
    Gabeldorsche Android 13中集成的蓝牙技术,替代了旧版的 Bluedroid 协议栈
    Android 13 Gabeldorsche作为新的蓝牙栈被默认启用,主要用于扫描、广告、连接管理等功能
    Gabeldorsche 用【 Rust 】编写 , 模块化设计,处理线程和进程交互, 提高安全性和可靠性,特别是内存安全方面
    
    
    
    
    复制

    GATT

    GATT === General Attribute Profile ===

    GAP

    GAP === General Access Profile ===

    SMP

    SMP === Security Manager Profile ===

    SDP

    SDP === Service Discvery Profile === 蓝牙服务发现协议

    SDP 蓝牙服务发现协议(SDP
    
    蓝牙服务发现协议(SDP)是蓝牙协议栈中的核心组件,用于设备间动态发现对方支持的服务及其属性
    
    
    服务发现:SDP允许设备在建立连接前查询对方支持的服务类型、属性及访问参数。
    例如,手机连接蓝牙耳机时,会通过SDP查询耳机支持的音频服务(如A2DP)和控制命令。
    
    
    
    工作机制
    客户端-服务器模型:
    SDP服务器:提供服务的一方(如蓝牙耳机、打印机)维护服务记录列表,每个记录描述服务的属性(如服务类型、协议通道号)
    
    SDP客户端:发起查询的设备(如手机)通过发送SDP请求获取服务信息。发现服务后,客户端需通过其他协议(如RFCOMM)建立实际连接
    
    
    
    
    复制

    HCI

    HCI === Host Controller Interface = 蓝牙主机控制器接口

    
    蓝牙主机控制器接口(HCI
    
     HCI位于主机和控制器之间,属于协议栈的一部分,无论是经典蓝牙、双模还是BLE-only都包含HCI
    
     HCI在蓝牙协议栈中位于 逻辑链路控制与适配协议(L2CAP)层与  链路管理协议(LMP)层之间,是软硬件交互的桥梁
    
     它向上为主机提供统一访问蓝牙硬件的接口,向下通过物理传输层(如UARTUSB等)与蓝牙控制器通信.
    
    
    
    主机通过HCI发送命令   Command 】控制蓝牙控制器,例如设备初始化、连接建立等操作
    控制器通过HCI返回事件【 Event   】反馈执行结果或状态更新,如连接成功、数据接收完成等
    
    
    
    HCI支持两种数据包类型:
    ACL(异步无连接数据包)   :用于可靠的非实时数据传输,如文件传输或传感器数据。
    SCO(同步连接导向数据包) :专为低延迟实时音频设计,如蓝牙耳机通话
    
    
    
    以设备连接为例:
    1. 主机发送Inquiry Command搜索周围设备。
    2. 控制器返回Inquiry Complete Event报告搜索结果。
    3. 主机发送Create Connection Command发起连接请求。
    4. 控制器通过Connection Complete Event通知连接状态。
    
    
    
    复制

    L2CAP

    L2CAP === Logical Link Control and Adaptation Protocol === 逻辑链路控制与适配协议

    
    L2CAPLogical Link Control and Adaptation Protocol,逻辑链路控制与适配协议)是蓝牙协议栈中的核心协议,
    主要负责在蓝牙设备之间建立逻辑链路,为上层协议提供数据传输服务,并支持多种功能
    
    
    
    L2CAP通过 通道标识符(CID 区分不同逻辑连接,支持多路复用
    
    
    CID=0x0001用于信令通道,0x0002用于无连接通信,0x0004ATT)、0x0006SMP)等用于BLE特定协议
    
    
    
    
    复制

    ISO数据包

    ISO === isochronous === ISO data === 等时(Isochronous)数据包

    
    蓝牙5.0LE Audio的普及,HCI新增了对ISO数据包(等时传输)的支持,以满足超低延迟音频传输需
    
    
    
    蓝牙等时数据包通过分组同步(CIG/BIG)、时间戳对齐及LC3编解码优化,解决了音频传输中的延迟与同步问题,扩展了蓝牙在无线音频领域的应用场景
    
    同步连接组(CIG
    广播同步组(BIG
    
    
    
    等时数据包分为两种模式:
    
    连接模式(CISConnected Isochronous Stream :用于双向同步通信,例如真无线耳机的左右声道同步。多个CIS可组成 同步连接组(CIG ,组内所有数据流共享相同时间戳,确保播放同步性
    
    广播模式(BISBroadcast Isochronous Stream :用于单向广播通信,例如车站广播或多人共享音频。多个BIS可形成 广播同步组(BIG ,接收设备(称为同步接收器)通过周期性的PDU(协议数据单元)同步数据
    
    
    
    
    
    
    复制

    LE Audio

    LE Audio === Low Energy Audio === 低功耗语音

    
    LE Audio是蓝牙技术联盟推出的新一代低功耗音频标准,全称为Bluetooth Low Energy Audio。它基于蓝牙5.2及以上版本实现
    
    
    
    
    复制

    RFCOMM

    RFCOMM === Radio Frequency Communication Protocol === 蓝牙无线电通讯协议

    RFCOMM 基于L2CAP协议的串行通信模拟协议 提供可靠的数据流传输,类似于TCP
    
    
    
    复制