APP下载

技术干货:基于Zephyr OS 1.9++版本构建一个合…

消息来源:baojiabao.com 作者: 发布时间:2024-05-04

报价宝综合消息技术干货:基于Zephyr OS 1.9++版本构建一个合…

  作者:Carles Cufi

  大到笔记本电脑,小到手机、可穿戴设备几乎都支持蓝牙通信,蓝牙俨然已经成为消费电子产品的标配。加上蓝牙5.0的推出,意味着蓝牙传输速度更快,传输范围更广,连接稳定性更强,在物联网应用中的技术优势更加明显。作为专门为物联网设备推出的Zephyr操作系统,自推出以来就已经包括了对蓝牙BLE的支持。最新的Zephyr OS 1.9版本又对蓝牙的支持做了更新,包括支持mesh,支持LwM2M协议,还包括具有资格认证的控制器子系统,允许带有BLE无线电的MCU连接到运行BLE主机堆栈的处理器上。

  那么,如何基于Zephyr OS 1.9++版本构建一个合格的BLE控制器?这是使用Zephyr OS和蓝牙技术进行设计的开发者们最关心的问题,本文就从技术应用的角度来详细阐述。首先,仔细观察构成完整BLE协议栈的不同层,有助于开发者们了解这一个功能。

  有三个主要层共同构成了一个完整的BLE协议栈:

  BLE主机:这一层位于应用程序下面,它由多个(非实时)网络和传输协议构成,使应用程序和对等设备之间以标准的和可互操作的方式进行通信;

  BLE控制器:BLE控制器执行链路层(LL),这是一种低级实时协议,它与BLE无线电硬件一起提供标准的互操作性无线通信。链路层调度包接收和传输,保证数据传输,并处理所有LL控制过程;

  BLE无线电硬件:所需要的模拟和数字基带功能模块允许链路层固件在2.4GHz频段发射和接收;

  蓝牙规范描述了BLE主机与BLE控制器通信的格式,这被称为主机控制器接口协议(HCI)。HCI能在一系列不同的物理传输口(如:USRT、SPI或USB)上实现。这个协议定义了主机能发送给控制器的命令和(由此带来的)可以期待的事件,以及需要通过无线传输的用户和协议数据格式。HCI确保不同的BLE主机和控制器能通过标准方式通信,使来自不同的供应商的BLE主机和控制器能够组合。

  协议的三个独立层和标准接口使主机和控制器可以在不同的平台上实现。以下是两种经常用到的典型配置:

  单芯片配置:在这种配置中,单控制器包含所有的三层和自身应用程序。这也可以被称为片上系统(SoC)实现。在这种情况下,BLE主机和BLE控制器通过RAM中的函数调用和队列直接通信。蓝牙规范并没有规定如何在单芯片配置中执行HCI,因此两者之间的HCI命令、事件和数据流能根据具体情况来实现。Zephyr OS在Nordic公司的IC上支持这种配置,适用于体积小且尽可能最低功耗的应用程序和设计,因为所有操作都运行在一颗单一的芯片上。

  双芯片配置:采用两个单独的IC,一个运行应用程序和主机,另一个带有控制器和无线电硬件,有时候也称为连接芯片配置。当采用Zephyr OS作为控制器时,此配置允许更多种类的主机组合。因为HCI确保主机和控制器之间的互操作性,包括Zephyr自己的BLE主机和控制器,Zephyr控制器的用户可以选择使用它们喜欢的任何平台上运行的主机。例如:主机可以是运行在任何能支持Linux的处理器上的Linux BLE主机堆栈。主机控制器也能够运行Zephyr和Zephyr操作系统的 BLE主机。

  Zephyr软件堆栈作为一个实时操作系统是高度可配置的,尤其是在构建程序时,BLE子系统能够通过多种方式配置,仅包括需要的特性和层,来减少RAM和ROM占用的空间及功耗。以下是能够在Zephyr项目代码库中生成的BLE启用构建的短列表:

  组合构建:包括应用程序、主机和控制器,并且它专应用于单芯片配置;

  主机构建:Zephyr OS主机构建将包括应用程序和BLE主机,以及与外部控制器芯片接口的HCI驱动程序(USRT或SPI);

  控制器构建:当作为BLE控制器构建时,Zephyr项目包括链路层和特殊应用程序(hci_uart 或 hci_spi),它作为UART和SPI外设之间的桥接器,监听HCI命令,发送应用程序数据,以事件和接收的数据作为响应;

  下图展示了,当使用Zephyr OS组合构建时的SoC或单芯片配置(构建包括在相同图片中的BLE主机和控制器)

  这种配置现在只能在Nordic半导体的IC上实现,因为它们是Zephyr项目内置BLE控制器唯一完全支持的芯片系列。然而,未来该项目旨在扩展对更多其它SoC系列进行支持,只要它们的BLE无线电硬件接口是公开文档的,因而适用于开源实现。

  当使用连接或双芯片配置时,几种主机和控制器组合是可以的,其中一部分如下所示:

  当使用Zephyr OS主机时(左图),Zephyr OS的两个实例必须使用两种不同的配置构建,产生两个独立的且必须分别编程到每个芯片中的映像。主机构建映像包括应用程序,BLE主机和所选的HCI驱动程序(UART或SPI),而控制器构建运行hci_uart 或 the hci_spi app,向BLE控制器提供接口。

  如图片右侧显示,这种配置不限于使用Zephyr OS主机。确实可以采用众多现有的GNU/Linux发行版之一,其中大部分包括Linux自己的BLE主机(BlueZ),通过USRT(BlueZ不支持SPI)将其连接到一个或多个Zephyr OS控制器构建的实例。

  作为主机,BlueZ同时支持多个控制器,为那些需要同时操作多个BLE无线电却又共享相同主机堆栈的应用程序。

  为了在商业产品中使用Zephyr OS控制器进行构建,需要通过蓝牙特别兴趣小组(SIG)的资格认证流程。控制器子系统必须遵守蓝牙规范,并且符合在蓝牙低功耗设备中预期的行为。资格认证流程对所有蓝牙产品是强制性的,由一系列被SIG定义的针对特殊实现的测试组成。然后将测试证据提供给蓝牙SIG,以证明该设备在被授予资格认证前确实符合要求。

  Nordic半导体已经宣布,Zephyr OS 1.9通过了所有必须的HCI 和链路层一致性测试,以便于基于nRF5x系列芯片作为控制器子系统进行设计的认证。Zephyr OS控制器子系统的预确认允许终端产品制造商快速开发BLE终端用户产品,并有信心他们的解决方案能被认证。Nordic将为Zephyr 1.9 OS控制器在nRF5x系列IC上构建提供认证QDID(认证设计ID),然后可以在认证终端产品时加快产品认证,如:终端产品制造商不需要重复链路层和HCI测试。

  像RTOS的其它部分一样,Zephyr OS控制器构建是可配置的。然而,资格列表包括对实现功能的引用,这些意味着符合授权的QDID需要并入控制器构建。以下功能已经被并入控制器构建且经过了认证;

  在nRF52x 芯片上除了Advertising Extensions之外,所有蓝牙5.0功能;

  在nRF51x芯片上除了Advertising Extensions之外所有蓝牙5.0功能, 数据长度扩展,2Mbps和编码PHY,以及基于控制器的隐私。

  注意:Nordic的资格认证将只包含BLE控制器,它意味着那些被用于特殊设计的主机将必须被独立认证。

  开发者们可以自己动手测试BLE控制器,并且验证它是否符合你未来产品的需求,请采用1.9版本进行测试!

  关于Zephyr

  Zephyr 项目是一款小型且可扩展的操作系统,尤其适用于资源受限的硬件系统,可支持多种架构;该系统高度开源,对于开发人员社区完全开放,开发人员可根据需要对该系统进行二次开发,以支持最新硬件、工具和设备驱动程序;该系统高度模块化平台,可轻松集成任何架构的第三方库和嵌入式设备。

  --end--

特别提醒:本网内容转载自其他媒体,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。

2019-03-08 19:00:00

相关文章