1

最初,我为原生 linux 构建了 Zephyr 蓝牙应用程序,并在 BLE 控制器上与 Bluez 一起运行它。我知道在这方面,Linux OS 和 Bluez 与 Zephyr 主机堆栈一起使用。

现在,我已经成功地将蓝牙应用程序从 Zephyr 堆栈(samples/bluetooth/beacon)刷到了 NXP 板上。这里没有使用 bluez。对于这种情况,我有几个基本的理解问题: 1. OS 功能是否也嵌入在应用程序编译后创建的 bin 文件中。我的意思是我知道蓝牙堆栈是 Zephyr,但是板上使用的是哪个操作系统?2. 另外,Zephyr 蓝牙堆栈中的 Bluez 中是否有类似 hcitool 的功能?3、有没有btmon或者hcidump之类的功能?

4

1 回答 1

1

回答您的问题:-

  1. Zephyr 本身就是一个操作系统——它是一个运行在许多不同类型硬件之上的实时操作系统 (RTOS),就像 Linux 是一个在许多不同硬件之上运行的操作系统一样。Zephyr 主要是用 C 语言编写的,并且在后台使用其寄存器和供应商的堆栈直接与特定处理器对话。您可以在此处找到所有支持的板的列表 。
  2. 与 hcitool 不同,但有一个 hci 层示例允许您发送原始 hci 命令。您可以在此处此处找到更多详细信息。归根结底,您可能不需要使用 hci,因为它是一个低层,您可能可以通过更高级别的 API 实现相同的功能。所有 Zephyr 的蓝牙示例都可以在这里找到。
  3. 同样,没有什么比 Linux 上的 btmon 更能让您看到每个命令的原始 HCI 数据包,但 Zephyr 确实支持不同的蓝牙日志记录选项,具体取决于所使用的硬件。更多信息可以在这里找到。

我希望这有帮助。

于 2020-02-21T09:09:25.480 回答