锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

物联网操作系统Zephyr(蓝牙篇)之6.0 zephyr os中的bt stack概述

时间:2022-09-14 03:00:00 hr系列传感器用于传感器芯片的开放式封装结构

Zephyr物联网操作系统专栏汇总


Zephyr os蓝牙协议栈和完整的蓝牙协议栈BLE和部分 经典蓝牙的host.

1.支持蓝牙features

1.1.Zephyr 蓝牙协议栈与蓝牙5兼容.0.

高度可配置:*功能、缓冲区大小/计数、堆栈大小等。

可移植到由Zephyr所有支持架构(包括大端和小端、对齐风格等)。

支持主机和控制器的所有组合:

  • UART、SPI和USB物理传输控制器(HCI)
  • 仅限UART、SPI和IPM主机(共享内存)
  • 组合(主机 控制器)

1.2.蓝牙-SIG合格

  • 在nordic硬件上的控制器
  • 一致性测试定期在各层上进行

1.3.支持BLE controller(LE链路层)

  • 支持所有角色的无限角色和连接计数
  • 并发多协议支持
  • 尽量减少智能调度角色的重叠
  • 便携式设计到任何开放的BLE目前支持北欧半导体的无线电nRF51和nRF52、专有无线电
  • 支持小端和大端环境架构,抽象硬实时细节,以便在特定的硬件模块中包装。
  • 控制器用于不同的物理传输(HCI)构建的支持

1.4.支持蓝牙主机

  • 一切可能LE角色通用访问配置文件(GAP):外围和中心;观察者和广播
  • GATT(通用属性配置文件):服务器(作为传感器)、客户端(如果要连接到传感器)
  • 配对支持包括蓝牙4.22提供的安全连接功能
  • 非易失性存储支持蓝牙永久存储的特定设置和数据
  • -蓝牙网格支持:中继节点,Friend节点,低功耗节点(LPN)和GATT代理功能支持两个供应载体(PB-ADV和PB-GATT);高度可配置,适用于小至16kRAM设备
  • IPSP/6LoWPAN,用于蓝牙LE上的IPv6连接
  • 基本的蓝牙BR/EDR(经典)支持:通用访问配置文件(GAP)、L2CAP、串口仿真(RFCOMM协议)、服务发现协议(SDP)。
  • 清除HCI抽象驱动程序:3线(H:5)和5线(H:4)UART;SPI;作为虚拟控制器,本地控制器支持HCI驱动程序
  • 使用多个流行控制器进行验证

2.蓝牙协议栈架构

这部分主要说明zephyr蓝牙协议栈架构。

Zephyr主要支持蓝牙低能耗(BLE),即蓝牙规格的低功耗版本。zephyr对BR/EDR主机部分的支持也非常有限。我们交替使用整个架构文档BLE。

2.1 BLE层

BLE分三层

  • Host
  • controller
  • Radio hardware

Host controller interface蓝牙规范描述了主机必须与控制器通信的格式。称为主控制器接口(HCI)协议。HCI在一系列不同的物理传输中,如UART、SPI或USB。该协议定义了主机可以发送给控制器的命令和预期返回的事件,以及需要无线传输的用户和协议数据的格式。HCI确保不同的主机和控制器能够标准通信,从而将不同供应商的主机和控制器结合起来。

芯片配置

单个微控制器实现了所有三层和应用程序本身。也可称为片上系统(SoC)实现。在这种情况下,BLE主机和BLE直接通过控制器RAM函数调用和队列通信。蓝牙规范并没有解释如何实现这种单芯片配置HCI,也没有说明HCI如何实现命令、事件和数据流?这种配置非常适合需要较小空间和最低功耗的应用程序和设计,因为所有设备都在单个设备中运行IC上。

双芯片配置:

使用两个独立的配置IC,一个操作应用程序和主机,另一个操作控制器和无线电硬件。有时也叫连接芯片配置。当使用Zephyr OS该配置作为控制器,允许更广泛的主机组合。由于HCI确保了主机和控制器实现之间的互操作性,当然包括Zephyr自己的BLE因此,主机和控制器Zephyr控制器用户可以选择在任何他们喜欢的平台上使用任何主机。例如,主机可以在任何支持下运行Linux在处理器上Linux BLE主机堆栈(BlueZ)。当然,主机处理器也可以运行Zephyr和Zephyr操作系统主机。相反,它也支持运行Zephyr主机的IC与不运行Zephyr的外部控制器相结合。

构建类型

Zephyr作为一个软件栈RTO特别是在施工过程中,高度可配置,BLE子系统可以多种方式配置,包括减少RAM和ROM占用空间和功耗所需的功能和层。

  • 仅controller构造:当构造为BLE控制器时,Zephyr包括链接层和特殊应用程序。HCI本应用程序不同于所选物理传输:hci_uart hci_usb hci_spi

应用程序充当UART、SPI或USB监控外围设备与控制器系统之间的桥梁HCI命令,发送应用程序数据,并响应事件和收到的数据。该类型的生成设置如下Kconfig选项值:

– CONFIG_BT =y – CONFIG_BT_HCI =y – CONFIG_BT_HCI_RAW =y – CONFIG_BT_CTLR =y – CONFIG_BT_LL_SW_SPLIT =y (if using the open source Link Layer)

  • 仅host构建

一个ZephyrOS主机构建将包括应用程序和BLE主机,还有一个HCI驱动程序(UART或SPI),与外部控制器芯片接口。此类结构将设置如下Kconfig选项值:

– CONFIG_BT =y – CONFIG_BT_HCI =y – CONFIG_BT_CTLR =n
所有位于样本/蓝牙建的样本外,所有位于样本/蓝牙的样本都可以作为主机构建。
  • 组合构建

专门用于单芯片的应用程序、主机和控制器(SoC)配置。这类结构将设置如下Kconfig选项值:

– CONFIG_BT =y – CONFIG_BT_HCI =y – CONFIG_BT_CTLR =y – CONFIG_BT_LL_SW_SPLIT =y (if using the open source Link Layer)

除了控制器构建的样本外,所有位于样本/蓝牙的样本都可以组合构建

该配置不限于使用ZephyrOS主机,如图像右侧所示。我们真的可以使用许多现有的GNU/Linux其中大部分发行版包括Linux自己的BLE主机(BlueZ),通过UART或USB将其连接到ZephyrOS构建控制器的一个或多个例子。BlueZ支持多个控制器作为主机,这些应用程序需要多个控制器BLE无线电同时运行,但共享同一主机堆栈。

HOST

蓝牙主机实现了所有高级协议和配置文件。最重要的是,它为应用程序提供了高级协议API。下图描述了主机的主要协议和配置文件层。

主机堆栈底层有一个所谓的HCI负责抽象驱动程序HCI传输细节。它提供了一个基本的基础API,用于将数据从控制器传输到主机,反之亦然。

可能HCI最重要的块是通用访问配置文件(GAP)。GAP通过定义BLE蓝牙使用的四个不同简化了蓝牙LE访问:

  1. 面向连接的角色
  2. 外围设备(如智能传感器,通常有有限的用户界面)
  3. 中心设备

无连接角色

  1. 广播员(发送BLE广播)
  2. 观察者(扫描BLE广告)

每个角色在构建时都有自己的配置选项:CONFIG_BT_PERIPHERAL、CONFIG_BT_CENTRAL、CONFIG_BT_BROADCASTER和CONFIG_BT_OBSERVER。对于面向连接的角色,中央设备隐观察者角色,而外围设备隐藏支持广播者角色。通常,创建应用程序的第一步是决定需要哪些角色并从那里开始。蓝牙网是一种略显特殊的情况,至少需要观察者和广播员的角色,或者外围设备的角色

外围角色

大多数基于Zephyr的BLE设备很可能是外围角色设备。这意味着他们执行可连接的广告并公开一项或多项GATT服务。使用bt\u gatt\u service\u register()API注册服务后,应用程序通常会使用bt_le_adv_start()API启动可连接广告。
树中有几个外围示例应用程序,例如samples/bluetooth/peripheral\u hr。

中心角色

对于基于Zephyr的设备来说,中心角色可能不像外围角色那样常见,但它仍然是一个合理的角色,并且在Zephyr中同样得到了很好的支持。中心角色设备不接受来自其他设备的连接,而是扫描可用的外围设备并选择一个连接。一旦连接,中央服务器通常将充当GATT客户端,首先执行可用服务的发现,然后访问一个或多个受支持的服务。

要最初发现要连接到应用程序的设备,可能会使用bt_le_scan_start()API,等待找到合适的设备(使用扫描回调),使用bt_le_scan_stop()停止扫描,然后使用bt_conn_create_le()连接到该设备。如果中央服务器想要继续自动重新连接到外围设备,那么它应该使用bt_le_set_auto_conn()API。

树中提供了一些有关中心角色的示例应用程序,例如samples/bluetooth/central_hr。

观察者角色

观察者角色观察者角色设备将使用bt_le_scan_start()API来扫描设备,但它不会连接到其中的任何一个设备。相反,它将简单地利用已找到的设备的广告数据,可选地将其与接收到的信号强度(RSSI)相结合。

广播员角色

设备将使用bt_le_adv_start()API来宣传特定的广告数据,但广告的类型将是不可连接的,即其他设备将无法连接到它。

连接

连接处理和相关的api可以在连接管理部分中找到。

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章