问题标签 [zephyr-rtos]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
958 浏览

c - 如何使用蜂窝设备在 Zephyr OS 上实现 MQTT?

我是 Zephyr OS 的初学者,想知道是否可以在 Zephyr OS 上使用 SIM800 或 Quectel BG96 等通常在 UART 上工作并支持作为 MQTT 基础的 TCP 协议的蜂窝设备实现 MQTT。

我查看了为 Zephyr 提供的 MQTT 示例,该示例是通过 LAN 完成的,但无法弄清楚如何使用蜂窝设备实现相同的功能。

0 投票
0 回答
933 浏览

c++ - 如何在 Zephyr OS 中启用远程 BLE Mesh

我正在研究蓝牙网状网络解决方案,我需要增加范围。

我正在使用 nrf52840 DK 和 nrf52840 加密狗,nrf5SDKforMeshv310。在 Nordic Devzone 中,我找到了在 NRF SDK 中为网格启用 BLE 远程模式的解决方案。

笔记!我知道解决方案不符合蓝牙 Mesh 标准。

Mesh v310 的 nrf5 SDK 应用了以下更改:

  1. 在 Advertisement.c 中,set_default_broadcast_configuration() 将 radio_mode 更改为使用 RADIO_MODE_NRF_62K5BIT 而不是 RADIO_MODE_BLE_1MBIT。
  2. 在scanner.c 中,scanner_config_reset() 将scanner_config_radio_mode_set() 更改为使用RADIO_MODE_NRF_62K5BIT 而不是RADIO_MODE_BLE_1MBIT。
  3. 在 radio_config.c 中,radio_config_config() 在最后添加了如下代码: /li>
  4. 在 broadcast.c 中,time_required_to_send_us() 添加了:

    在同一文件中定义 RADIO_PREAMBLE_LENGTH_LR_EXTRA_BYTES = 9

    将 radio_mode_to_us_per_byte[] 中的第 5 个元素从 128 更改为 64。

    笔记。远程模式被贴错标签。它在头文件中称为 RADIO_MODE_NRF_62K5BIT,但对应的是 125kbps BLE 远程模式。

不幸的是,对于中继,我被迫使用 Zephyr 来支持朋友功能,并且在对 NRF SDK 应用更改后,Zephyr 没有中继消息。我在 Zephyr 方面做了简要调查,发现上述 NRF SDK 的 BLE 远程代码位已经到位,可以使用以下 Kconfig 设置启用:

但我仍然没有看到 Zephyr 端(使用 J-Link RTT 查看器)中继消息。我还尝试将蓝牙和 Mesh 的日志级别提高到 DEBUG,但我没有看到任何消息格式错误或被拒绝的迹象。

可能有人对我应该在 Zephyr 方面挖掘的方向有想法吗?

0 投票
0 回答
68 浏览

nrf52 - Zephyr 应用程序构建失败

我正在尝试为 NRF52 构建我的 Zephyr 应用程序,但出现错误似乎编译器的包含有问题: #include "cbor.h" 我用相关的库位置更新了我的CMakeLists.txt我感谢有关此的任何想法问题 - 谢谢

附上 CMakeLists.txt 和 west build 的输出供您查看

构建命令:

CMakeLists.txt

输出

0 投票
1 回答
245 浏览

clang - 使用 clang6.0 在 zephyr 中构建 hello_world 示例时,ld.lld 命令失败

我想使用 clang6.0 构建 samples/subsys/power/device_pm 所以我执行以下操作:

  1. 导出 ZEPHYR_TOOLCHAIN_VARIANT=llvm
  2. mkdir 构建和 cd 构建
  3. cmake -DBOARD=reel_board ..
  4. 制作

然后,我得到了一些错误:

有什么建议吗?非常感谢!

0 投票
1 回答
272 浏览

gcc - 链接描述文件总是将变量解释为零?

下面有很多日志和其他内容,所以跳到重点:我有一个链接器脚本,并在其中设置变量,并使用这些变量来设置内存部分。但似乎这些变量总是被设置为 0,无论我在脚本中将它们设置为什么。

我正在编写一个链接器脚本,试图为嵌入式系统应用程序向我的输出精灵添加两个新的内存部分。我试图砍掉预先存在的 RAM 内存部分的第一位,相应地更改 RAM 的大小,然后将我的新部分放在那里。

以前,使用 nrf52840 开发板和这个库,我可以修改示例应用程序之一的链接器脚本,如下所示:

这非常有效。最近,我需要使用 Zephyr RTOS 移植到 nrf9160,因此我开始在此链接上使用构建在 Zephyr 之上的 NordicPlayground nrf 库,修改其中的一个示例应用程序。在尝试使用与此类似的技术为该板和环境重写程序时我对 Zephyr 链接器脚本做了类似的事情,并像以前一样对其进行了修改。构建过程以某种方式采用我所做的并build/spm/zephyr/linker.cmd在构建输出文件夹中生成文件:

然而,虽然我认为这两个脚本的行为应该相同,但尝试使用 Zephyr RTOS 编译和链接 nrf9160 版本会引发此错误:

这对我来说真的很奇怪,因为这个输出使它看起来像NEWSECTION1并且NEWSECTION2长度为 0 并且都从 address 开始0x0,但是查看使用的链接描述文件绝对不应该是这种情况。更令人困惑的是,如果我替换__NewSection1Length0x500或类似的东西,那么内存部分会很0x500B长,这意味着错误似乎是在此链接描述文件中使用变量被忽略或设置为 0?任何帮助将不胜感激。

0 投票
1 回答
410 浏览

c++11 - 使用带有移动语义的 C++11 - 没有标准库(和 Boost.smart_ptr)

我正在从事嵌入式项目,使用Zephyr RTOS和 ARM 嵌入式微控制器,如 STM32 Nucleo 系列(Cortex M4/0)。

最近,由于最近版本的 Zephyr 对 C++ 的支持显着改进,我正在考虑从 C 开发转向现代 C++。

默认情况下,Zephyr 包含 C 标准库,但不包含 Cpp 的 STD。

Zephyr 实际上添加了对 Cpp 标准库的可选支持,这似乎工作得很好。然而,它需要大量的闪存使用(我的微控制器闪存中接近 65%,没有我的代码!)。

因此,我正在尝试寻找在没有实际标准库(包括内存/实用程序头文件)的情况下使用现代 C++ 的替代方法。

我考虑过将Boost.smart_ptr用于智能指针,但我想知道在我的情况下我应该如何使用移动语义 (std::move)。

我应该使用Boost.Move模块吗?即使我使用的是 C++1x 而不是 C++0x?

我应该自己使用从 T& 到 T&& 的直接转换来实现移动语义吗?

0 投票
1 回答
999 浏览

dts - zephyr中yaml文件有什么用

我开始了解zephyr

调查samples/basic/blinky,有一个文件sample.yaml

从文档:

绑定是 YAML 格式的文件。.dts 文件描述了可用的硬件设备,但不告诉系统哪些信息是有用的,或者应该生成什么样的配置输出(#define's)。绑定提供

为了理解重要性,我将 sample.yaml 移动到我们的主文件夹中并构建,闪烁 LED 闪烁应用程序,它会闪烁。

我们的应用程序目录中是否需要有 yaml 文件以及何时需要?

这个情报

0 投票
1 回答
361 浏览

cbor - 使用 Zephyr 构建 tinycbor 模块

我正在尝试在 Zephyr 2.1.0 的 zephyr hello_world 应用程序示例中测试 tinycbor 的使用。我已将以下标志添加到 prj.conf 并成功。但是,它似乎没有引入任何 tinycbor 资源,并且任何引用都无法识别。

我的安装是 west,tinycbor 源文件在“$ZEPHYR_BASE/../modules/lib/tinycbor”中可用。如何让 make 系统找到并构建 tinycbor?

prj.conf:

0 投票
0 回答
853 浏览

c - 使用 llvm 的 Zephyr 错误,与默认工具链一起工作正常

我正在为板 nrf52833_pca10100 和 nrf52840_pca10056 构建。

通过以下方式更改工具链:export ZEPHYR_TOOLCHAIN_VARIANT=llvm 我通过 apt 安装了 llvm-8-dev、clang、clang-8。对于 ZEPHYR_TOOLCHAIN_VARIANT=zephyr,sample/basic/blinky 可以构建并制作得很好。切换到 llvm 后,构建时会出现以下错误:

我可以通过在构建时喂食来强制这个问题不出现和构建-D CMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY。但是,当我尝试制作时,会发生以下错误:

并在链接的最后:

不知道有什么问题。

编辑:更多 CMakeError.log 内容

我开始怀疑这是clang 6的问题,我需要使用clang 8+,看到一篇关于clang修复他们的问题的帖子是在clang 6的发布日期之后。不知道如何更改哪个clang zephyr选择。

0 投票
1 回答
484 浏览

bluetooth - Zephyr 操作系统理解

最初,我为原生 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之类的功能?