基于ESP32的Bluedroid蓝牙协议栈架构分析(1) --- HCI线程分析

目录

 

ESP32蓝⽛架构

BLUEDROID主机架构

BLUEDROID协议栈下HCI线程的数据处理流程。


ESP32蓝⽛架构

在 ESP32 的系统上,选择 BLUEDROID 为蓝⽛牙主机,并通过 VHCI(软件实现的虚拟 HCI 接⼝口)接⼝口,访问控制器器。此场景下,BLUEDROID 和控制器器都运⾏在同⼀宿主上(即 ESP32 芯⽚)

ESP-IDF 的默认运⾏行行环境为双核 FreeRTOS,ESP32 的蓝⽛牙可按照功能分为多个任务(task) 运⾏,不同任务的优先级也有不同,其中优先级最⾼高的为运⾏控制器的任务。控制任务对实时性的要求较⾼,在 FreeRTOS 系统中的优先级仅次于 IPC 任务(IPC 任务⽤于双核 CPU 的进程间通信)。BLUEDROID(ESP-IDF 默认蓝⽛牙主机)共包含 4 个任务,
分别运行 BTC、BTU、HCI UPWARD,及 HCI DOWNWARD。

BLUEDROID主机架构

从上图可以看到,BLUEDROID 内部⼤致分为 2 层:BTU 层和 BTC 层(除去 HCI ),每个层都有对应的任务来处理。

BTU 层主要负责蓝牙主机底层协议栈的处理,包括L2CAP、GATT/ATT、SMP、GAP 以及部分规范等,并向上提供以“bta”为前缀的接口;
BTC 层主要负责向应⽤用层提供接⼝支持、处理理基于 GATT 的规范、处理杂项等,并向应⽤层提供以“esp”为前缀的接⼝。所有的 API 都在 ESP_API 层,开发者应当使⽤“esp”为前缀的蓝⽛牙 API(特殊的除外)。
上图并未详细描述 HCI 部分,⽽事实上,HCI 具有 2 个任务(⾄少在 ESP-IDF V2.1 以前),分别处理 Downward 和 Upward 的数据。
此框架的其中一条设计思路路是尽量量将蓝⽛牙相关的任务交给 BTC 来处理,从而避免和降低用户任务 (User Task) 的负载,也使

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值