HCI 功能规范【2. Overview of Host Controller transport layer】
这部分内容是HCI 章节第 2 节Host Controller Transport Layer 概述。它主要想表达的是Host 和 Controller 之间虽然通过 HCI 进行通信但 HCI 数据本身还需要一个“传输层”来负责搬运。这个传输层就是 Host Controller Transport Layer。1. 这部分整体想表达什么蓝牙协议栈中Host 和 Controller 之间通过 HCI 交互。但是 HCI 只是定义了HCI Command HCI Event HCI ACL Data HCI ISO Data HCI Packet 格式 HCI 参数含义 HCI 命令与事件流程可是这些 HCI 数据包要真正从 Host 发送到 Controller还需要经过某种实际传输方式。例如UART USB SDIO SPI 其他物理总线所以这一节讲的就是Host Controller Transport Layer也就是Host 和 Controller 之间的传输层。它的位置可以理解为Host └── HCI Driver / Upper HCI ↓ Host Controller Transport Layer ↓ Controller └── Lower HCI2. Host Controller Transport Layer 的核心目标透明性规范里说The main goal of this transport layer is transparency.意思是这个传输层的主要目标是透明性。这里的“透明性”不是说看得见而是说上层 HCI Driver 不需要关心底层到底是 UART、USB、SDIO 还是其他传输方式。也就是说Host 侧的 HCI Driver 只关心我要发送一个 HCI Command 我要接收一个 HCI Event 我要发送或接收 HCI ACL Data它不应该关心这个 HCI Command 最终是通过 UART 发出去的 还是通过 USB 发出去的 还是通过 SDIO 发出去的这种设计的好处是HCI 逻辑接口可以保持稳定 底层传输方式可以替换 Controller 可以升级 Transport Layer 可以独立实现3. Transport Layer 不应该理解 HCI 数据内容规范里还有一句非常关键the transport should not require any understanding of the data that the Host Controller Interface driver passes to the Controller.意思是传输层不应该需要理解 HCI Driver 传给 Controller 的数据内容。也就是说Transport Layer 只是搬运数据不负责解释数据。可以这样理解HCI Driver知道这是 LE Set Advertising Enable Command Transport Layer不知道也不需要知道只负责把这串字节送过去 Controller收到后再按 HCI 规则解析和执行举个例子Host 要开启 BLE 广播Host HCI Driver ↓ 生成 HCI CommandLE Set Advertising Enable ↓ Transport Layer ↓ 通过 UART / USB / SDIO 搬运这包数据 ↓ Controller Lower HCI ↓ 解析并执行开启广播这里 Transport Layer 不需要知道这是开启广播命令 这是 LE 命令 这是 OGF / OCF / Opcode 这是 Advertising_Enable 参数它只需要知道这是一段要从 Host 送到 Controller 的数据4. 为什么要这样设计这种设计的意义在于解耦。HCI 层和 Transport Layer 分开后可以带来几个好处。4.1 HCI 逻辑不依赖具体总线无论蓝牙芯片通过 UART 接入还是通过 USB 接入Host 侧 HCI 的逻辑都可以保持一致。例如同样是开启广播LE Set Advertising Enable在 UART 蓝牙模块上是这个命令。在 USB 蓝牙适配器上也是这个命令。在 SDIO 蓝牙芯片上还是这个命令。区别只是在于HCI Packet 是通过什么物理通道送过去的4.2 Controller 可以升级不影响传输层规范里说This allows the logical interface (HCI) or the Controller to be upgraded without affecting the transport layer.意思是这样可以让 HCI 逻辑接口或者 Controller 升级时不影响 Transport Layer。例如 Controller 支持了新的 BLE 特性扩展广播 Periodic Advertising LE 2M PHY LE Coded PHY PAwR Channel Sounding这些是 HCI 命令和 Controller 能力层面的变化。但是底层 UART / USB / SDIO 传输层原则上不需要理解这些新功能。它仍然只是搬运 HCI 数据包。4.3 Transport Layer 可以替换不影响 HCI 语义例如同一个蓝牙 Controller有的产品使用 UART 接入主控有的产品使用 USB 接入主控。HCI 命令语义不变设置广播参数 设置扫描参数 建立连接 发送 ACL 数据 接收 HCI Event变化的是底层传输路径UART HCI USB HCI SDIO HCI所以 Transport Layer 的存在让 HCI 成为一个更加稳定的逻辑接口。5. Transport Layer 和 HCI 的关系可以把它们的关系理解成HCI定义 Host 和 Controller 之间说什么 Transport Layer负责把这些话送过去更具体一点HCI CommandHost 要 Controller 做什么 HCI EventController 告诉 Host 发生了什么 HCI ACL DataHost 和 Controller 之间传输连接数据 Transport Layer负责承载这些 HCI Packet所以 Transport Layer 不是 BLE 的业务逻辑层也不是 Link Layer。它只是 Host 和 Controller 之间的数据通道。6. 一个通俗类比可以把 HCI 和 Transport Layer 类比为HCI 语言和命令格式 Transport Layer 快递/运输方式例如你要告诉 Controller开启广播HCI 规定这句话应该怎么说LE Set Advertising Enable Command Opcode 是多少 参数是什么 返回事件是什么Transport Layer 只负责把这句话送过去。至于是通过UART USB SDIO送过去对 HCI 命令本身来说不应该有影响。7. “The specified Host Controller Transport Layers are described in the other parts of Volume 4”是什么意思这句话的意思是具体的 Host Controller Transport Layer 规范不在这一节详细展开而是在 Volume 4 的其他部分中描述。也就是说当前 HCI 章节只是告诉你Host 和 Controller 之间存在 Transport Layer Transport Layer 的目标是透明性 Transport Layer 不应该理解 HCI 数据内容 Transport Layer 负责承载 HCI 数据至于具体 UART HCI、USB HCI、SDIO HCI 怎么定义要看 Volume 4 其他部分。常见的 Transport 相关内容包括HCI USB Transport Layer HCI UART Transport Layer HCI SDIO Transport Layer这些章节会具体说明HCI Packet 怎么封装到 USB 传输里 HCI Packet 怎么封装到 UART 字节流里 HCI Packet 类型如何区分 初始化流程是什么 流控怎么做 错误怎么处理8. 2.1 This section is no longer used 是什么意思截图里有2.1. [This section is no longer used]意思是第 2.1 节已经不再使用。这通常表示蓝牙规范历史版本中这里曾经有内容但后来内容被删除、迁移、废弃或不再适用。学习时可以直接跳过。不要在这里纠结因为它没有有效技术内容。9. 这部分的关键信息9.1 Host 和 Controller 之间不只是 HCI还需要传输层HCI 定义逻辑接口。Transport Layer 负责实际搬运 HCI 数据。HCI 逻辑接口 Transport Layer 传输承载9.2 Transport Layer 的核心目标是透明性Host Controller Interface Driver 不应该依赖具体的传输方式。也就是说HCI Driver 不应该强绑定UART USB SDIO而应该尽量只面对统一的 HCI 逻辑。9.3 Transport Layer 不理解 HCI 数据内容Transport Layer 不需要知道这包数据是LE Set Advertising Parameters LE Set Scan Enable LE Create Connection HCI ACL Data HCI Event它只负责搬运。真正理解 HCI 数据含义的是Host 侧 HCI Driver Controller 侧 Lower HCI9.4 这种设计是为了方便升级和替换由于 HCI 和 Transport Layer 解耦所以Controller 可以升级 HCI 可以增加新命令 Transport Layer 可以保持不变 底层总线可以替换 Host 上层逻辑可以尽量少受影响10. 结合 BLE 开发应该怎么理解对于 BLE App 开发来说一般接触不到 Transport Layer。因为在手机上App ↓ 系统蓝牙 API ↓ 系统 Host 协议栈 ↓ HCI ↓ 蓝牙芯片 ControllerApp 通常无法直接操作 HCI Transport。但是在这些场景下Transport Layer 就很重要做蓝牙芯片驱动 做嵌入式 Linux 蓝牙适配 做 Android 蓝牙底层调试 做蓝牙模块固件对接 分析 btsnoop / HCI log 调试 UART HCI 蓝牙模块 调试 USB 蓝牙 Dongle例如一个 UART 蓝牙模块主控通过串口连接蓝牙芯片MCU / Linux Host ↓ UART Driver ↓ HCI UART Transport ↓ Bluetooth Controller此时你看到的串口数据本质上就是 HCI Packet 被 UART Transport 承载后的字节流。11. 和前面 Introduction 的关系前面 Introduction 讲的是HCI 是 Host 和 Controller 之间的接口这一节进一步补充HCI 数据在 Host 和 Controller 之间传输时需要 Transport Layer 来承载所以完整关系是Host ↓ Upper HCI ↓ Host Controller Transport Layer ↓ Lower HCI ↓ Controller也可以简单总结为Host 通过 HCI 控制 Controller。 HCI Packet 通过 Transport Layer 在 Host 和 Controller 之间传输。 Transport Layer 只负责搬运不负责理解 HCI 语义。12. 对这部分内容的学习建议这部分不需要深挖太多重点掌握一个概念即可HCI 是逻辑接口Transport Layer 是承载通道。如果当前目标是理解 BLE 广播、扫描、连接、GATT 通信那么优先级更高的是HCI Command HCI Event HCI ACL Data LE Controller Commands LE Meta Event ATT / GATT GAPTransport Layer 只需要知道它负责把 HCI Packet 通过 UART、USB、SDIO 等方式送到 Controller 即可。除非后续要做蓝牙芯片驱动、Linux 蓝牙底层、UART HCI 模块调试否则暂时不用深入。

相关新闻

NBTExplorer:简单三步掌握Minecraft数据编辑的终极工具

NBTExplorer:简单三步掌握Minecraft数据编辑的终极工具

NBTExplorer:简单三步掌握Minecraft数据编辑的终极工具 【免费下载链接】NBTExplorer A graphical NBT editor for all Minecraft NBT data sources 项目地址: https://gitcode.com/gh_mirrors/nb/NBTExplorer 你是否曾经想要深入了解Minecraft世界的内部数据…

2026/7/3 13:00:38阅读更多 →
模型剪枝、量化、知识蒸馏核心区别

模型剪枝、量化、知识蒸馏核心区别

三者都属于模型轻量化 / 压缩加速技术,目标都是:减小体积、降低算力、提升推理速度、适配边缘设备,但底层原理、作用对象、优缺点完全不同。一、核心定义与本质区别1. 模型剪枝(Pruning)核心逻辑:删掉没用的…

2026/7/3 12:55:36阅读更多 →
Web应急响应实战:从靶场到战场的入侵排查与处置指南

Web应急响应实战:从靶场到战场的入侵排查与处置指南

1. 项目概述:从“靶场”到“战场”的实战演练最近在安全圈里,“应急响应”这四个字的热度一直居高不下。无论是护网行动前的备战,还是日常安全运维中的突发状况,如何快速、精准地应对安全事件,已经成为衡量一个安全团队…

2026/7/3 12:55:36阅读更多 →
openEuler Compiler-docs:全面解析openEuler编译器SIG的技术文档宝藏库

openEuler Compiler-docs:全面解析openEuler编译器SIG的技术文档宝藏库

openEuler Compiler-docs:全面解析openEuler编译器SIG的技术文档宝藏库 【免费下载链接】compiler-docs A repo used to store documents from the compielr sig 项目地址: https://gitcode.com/openeuler/compiler-docs 前往项目官网免费下载:ht…

2026/7/3 14:40:51阅读更多 →
DS28EC20单线EEPROM在嵌入式存储中的实践应用

DS28EC20单线EEPROM在嵌入式存储中的实践应用

1. 项目背景与核心需求 在嵌入式系统开发中,保存用户设置和偏好是一项基础但关键的功能需求。传统方案通常采用微控制器内部Flash模拟EEPROM或外挂标准I2C/SPI接口的EEPROM芯片,但这些方法在特定场景下存在明显局限: 内部Flash擦写次数有限&…

2026/7/3 14:40:51阅读更多 →
考虑火 - 储联合调频 (火电机组 - 混合储能) 的协同控制策略研究(Matlab代码实现)

考虑火 - 储联合调频 (火电机组 - 混合储能) 的协同控制策略研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 &#x1f381…

2026/7/3 14:40:51阅读更多 →
OpenEuler Rubik最新特性解读:2023年不容错过的5大功能升级

OpenEuler Rubik最新特性解读:2023年不容错过的5大功能升级

OpenEuler Rubik最新特性解读:2023年不容错过的5大功能升级 【免费下载链接】rubik rubik is a QoS manager agent for online/offline workload colocation 项目地址: https://gitcode.com/openeuler/rubik 前往项目官网免费下载:https://ar.ope…

2026/7/3 14:40:51阅读更多 →
STM32与EEPROM低功耗数据存储方案详解

STM32与EEPROM低功耗数据存储方案详解

1. 项目背景与硬件选型考量在嵌入式系统开发中,用户偏好、日程设置和自定义配置的持久化存储是一个常见但关键的需求。我们选择了M95M04 EEPROM芯片与STM32L021K4微控制器的组合方案,这个搭配在低功耗、可靠性和成本之间取得了良好平衡。M95M04是STMicro…

2026/7/3 14:40:51阅读更多 →
高性能M3U8下载器架构解析:如何实现多线程并发处理与AES解密优化

高性能M3U8下载器架构解析:如何实现多线程并发处理与AES解密优化

高性能M3U8下载器架构解析:如何实现多线程并发处理与AES解密优化 【免费下载链接】m3u8-downloader 一个M3U8 视频下载(M3U8 downloader)工具。跨平台: 提供windows、linux、mac三大平台可执行文件,方便直接使用。 项目地址: https://gitcode.com/gh_mirrors/m3u…

2026/7/3 14:35:51阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/7/3 14:18:39阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/7/3 14:38:35阅读更多 →
LV3296与PIC18F45K22的UART通信与USB扩展方案

LV3296与PIC18F45K22的UART通信与USB扩展方案

1. LV3296与PIC18F45K22的硬件搭档解析在嵌入式数据采集系统中,LV3296条形码扫描模块与PIC18F45K22微控制器的组合堪称经典搭配。LV3296作为一款工业级条码扫描头,其核心是一颗高性能CMOS图像传感器,配合专用解码芯片,能自动识别包…

2026/7/3 0:03:41阅读更多 →
AI初创生存指南:6个月完成可信度验证闭环

AI初创生存指南:6个月完成可信度验证闭环

1. 这不是“逆袭指南”,而是一份AI初创公司真实生存手记“How To Beat Odds As an AI Startup?”——这个标题乍看像一句热血口号,但在我带过7个从0到1的AI产品团队、亲手踩过融资失败、技术债崩盘、客户POC卡在最后一公里等23类典型坑之后,…

2026/7/3 0:03:41阅读更多 →
多模态+推理链+RAG 2.0+智能体:工业级AI系统落地四支柱

多模态+推理链+RAG 2.0+智能体:工业级AI系统落地四支柱

1. 这不是又一篇“AI趋势速览”,而是一份实操者手记:当多模态、推理链、检索增强与智能体协作真正撞进工程现场“LAI #73”这个编号本身就像一个暗号——它不属于某家大厂的白皮书,也不是学术会议的议程表,而是长期泡在模型训练集…

2026/7/3 0:03:41阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/3 1:12:46阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/3 1:36:36阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/3 2:08:15阅读更多 →