# 架构

Source: [https://docs.qualcomm.com/doc/80-70014-13Y/topic/bt_architecture_overview.html](https://docs.qualcomm.com/doc/80-70014-13Y/topic/bt_architecture_overview.html)

蓝牙软件架构由开源软件和 Qualcomm 专有软件组成。

下图显示了从 btapp 到 host 协议栈再到蓝牙 controller 的双向命令流：

Figure : 蓝牙软件架构
                ![](data:image/png;base64,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)

蓝牙软件架构由用户空间、内核空间和蓝牙控制器组成。

## 用户空间组件

用户空间包含以下蓝牙应用程序、核心协议栈和接口层：

| 组件 | 说明 |
| --- | --- |
| btapp 示例程序 | <ul class="ul" id="bt_architecture_overview__ul_d2r_2mq_tbc_navyanka_06-17-24-2220-6-703"><br>                                    <li class="li">将 Fluoride 协议栈编程接口用于 GAP 和其他配置文件功能。</li><br><br>                                    <li class="li">注册接口并接收相应的回调。</li><br><br>                                    <li class="li">提供使用命令行界面 (CLI) 测试每个 profile 的选项。每个蓝牙 profile 都在主可执行文件的线程中运行。</li><br><br>                                    <li class="li">允许使用 CLI 命令执行以下功能：<ul class="ul" id="bt_architecture_overview__ul_qn4_lmq_tbc_navyanka_06-17-24-2222-7-954"><br>                                            <li class="li">启用蓝牙</li><br><br>                                            <li class="li">扫描其他蓝牙设备</li><br><br>                                            <li class="li">与对端设备配对</li><br><br>                                            <li class="li">通过服务发现功能连接到其他设备</li><br><br>                                            <li class="li">与其他设备之间传输数据</li><br><br>                                            <li class="li">断开与另一台设备的连接</li><br><br>                                            <li class="li">关闭蓝牙</li><br><br>                                        </ul><br></li><br><br>                                </ul> |
| Fluoride 协议栈 | <ul class="ul" id="bt_architecture_overview__ul_tqw_2mq_tbc_navyanka_06-17-24-2220-10-411"><br>                                    <li class="li">可以使用 <code class="ph codeph">dlopen</code> 命令从 <span class="keyword wintitle">btapp</span> 应用程序加载的蓝牙协议栈。</li><br><br>                                    <li class="li">由以下部分组成：<ul class="ul" id="bt_architecture_overview__ul_b3b_5mq_tbc_navyanka_06-17-24-2224-37-205"><br>                                            <li class="li">蓝牙接口 (BTIF) 层</li><br><br>                                            <li class="li">核心协议栈层</li><br><br>                                            <li class="li">主机控制接口 (HCI)</li><br><br>                                        </ul><br></li><br><br>                                </ul> |
| 蓝牙接口 (BTIF) 层 | <ul class="ul" id="bt_architecture_overview__ul_jq3_fmq_tbc_navyanka_06-17-24-2220-18-513"><br>                                    <li class="li">实现通过 JNI 调用来调用的 HAL 接口。</li><br><br>                                    <li class="li">维护由 JNI 注册的回调。</li><br><br>                                    <li class="li">基于 <span class="keyword wintitle">btapp</span> 应用或蓝牙协议栈的更新来调用 JNI 回调。</li><br><br>                                </ul> |
| 核心协议栈层 | <ul class="ul" id="bt_architecture_overview__ul_dkl_fmq_tbc_navyanka_06-17-24-2220-20-379"><br>                                    <li class="li">包含所有 profile 的核心实现和核心协议（如 RFCOMM 和逻辑链路控制和适配协议 (L2CAP)）。</li><br><br>                                </ul> |
| 主机控制接口 (HCI) | <ul class="ul" id="bt_architecture_overview__ul_b1n_fmq_tbc_navyanka_06-17-24-2220-21-469"><br>                                    <li class="li">用于与内核空间中嵌入的 BlueZ HCI 内核交互。</li><br><br>                                </ul> |
| 音频平台抽象层 (PAL) | <ul class="ul" id="bt_architecture_overview__ul_xvp_fmq_tbc_navyanka_06-17-24-2220-23-389"><br>                                    <li class="li">使用支持 Fluoride 协议栈的套接字接口来获取编解码器信息、启动或暂停音频会话等。</li><br><br>                                </ul> |

## 内核空间组件

内核空间包含以下核心组件和驱动程序：

| 组件 | 说明 |
| --- | --- |
| BlueZ 主机控制接口 (HCI) 内核 | <ul class="ul" id="bt_architecture_overview__ul_ntg_qnq_tbc_navyanka_06-17-24-2231-7-555"><br>                                        <li class="li">通过 RAW 套接字在用户空间 HCI 组件与 Qualcomm 蓝牙驱动程序之间发送和接收 HCI 命令/事件。</li><br><br>                                    </ul> |
| Qualcomm 蓝牙驱动程序 | <ul class="ul" id="bt_architecture_overview__ul_hbj_qnq_tbc_navyanka_06-17-24-2231-9-109"><br>                                        <li class="li">处理蓝牙通用输入/输出 (GPIO) 配置。</li><br><br>                                        <li class="li">启用或禁用 regulator 以打开或关闭芯片。</li><br><br>                                        <li class="li">在蓝牙开启期间处理蓝牙补丁和非易失性 (NV) 数据的下载。</li><br><br>                                    </ul> |
| 通用异步收发器 (UART) 串行驱动程序 | <ul class="ul" id="bt_architecture_overview__ul_nkk_qnq_tbc_navyanka_06-17-24-2231-10-25"><br>                                        <li class="li">一种用于与蓝牙控制器通信的 teletype (TTY) 串行驱动程序。</li><br><br>                                    </ul> |
| SLIMbus 蓝牙驱动程序 | <ul class="ul" id="bt_architecture_overview__ul_pxl_qnq_tbc_navyanka_06-17-24-2231-11-42"><br>                                        <li class="li">为蓝牙音频用例配置、打开和关闭 SLIMbus 端口。</li><br><br>                                    </ul> |

## 蓝牙控制器组件

蓝牙控制器组件包括蓝牙固件和硬件。

Last Published: Aug 22, 2024

[Previous Topic
功能](https://docs.qualcomm.com/bundle/publicresource/80-70014-13Y/topics/bt_ft_overview.md) [Next Topic
验证](https://docs.qualcomm.com/bundle/publicresource/80-70014-13Y/topics/bluetooth_usecases.md)