问题标签 [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 回答
68 浏览

lora - LoRaWAN OTAA TTN 超时,网关捕获消息

我尝试在 LoRaWAN 中设置一个终端节点。我使用 ST Microelectronics 的板 b_l072z_lrwan1 和 Zephyr OS。我在 VSCode 上使用 PlatformIO。

我使用 GitHub 上的代码https://github.com/fcgdam/zLorawan_Node

这是我在网关上看到的(所有 EUI 都将被更改):

对我来说,这意味着网关收到了一个好的请求。这是我在 ZephyrOS 上的配置。

我的请求因 errno -116 超时,即 ETIMEOUT

这是我在 TTN 中的设备配置: 我的设备说明

你知道为什么我的请求超时吗?

0 投票
1 回答
96 浏览

device-tree - 如何将常量添加到设备树覆盖?

我想在设备树覆盖中定义一些常量。例如:为了给gpio pin 9命名为led-blue,我在 devicetree 覆盖中添加了以下内容:

这将以下内容添加到zephyr.dts

但是,什么都没有出现devicetree_unfixed.h,这使得读取代码中的值有点困难......

将常量添加到设备树覆盖的正确方法是什么?你如何读取代码中的值?

0 投票
0 回答
32 浏览

llvm - Zephyr OS LLVM IR

我想获取zephyr os ( https://github.com/zephyrproject-rtos/zephyr ) 的LLVM IR进行静态分析。为此,我基本上需要获取每个文件的 IR。但正如指出的那样,每个文件都不能直接编译,因为 zephyr 需要一个板架构和一个 Kconfig 应用程序,然后使用 python 脚本会产生一些事先不存在的头文件。那么你能建议我能做什么吗?有什么方法可以让我分别获得编译每个文件所需的所有文件,即使它们没有一起编译。

我一直在尝试这样做,但我无法这样做。你能建议一下吗?谢谢。

0 投票
0 回答
26 浏览

zephyr-rtos - 在 Zephyr 上运行单元测试

我刚刚开始使用 Zephyr。任何人都可以帮助我实施 zephyr 单元测试吗?我无法理解测试目录中给出的示例,并且可以真正使用一些关于如何实现它们的输入。

0 投票
0 回答
17 浏览

gcc - 使用 -0s 编译时丢失功能(gcc-arm-none-eabi,Zephyr OS)

再会!当我使用 -Os 选项运行编译时,某些函数会忽略。例如,我有 -Og

和 -Os 这个功能消失

需要建议如何“调试”编译过程或开始搜索错误源的起点。

0 投票
0 回答
57 浏览

architecture - Zephyr - 事件驱动固件

我有一个关于如何使用 Zephyr RTOS 构建事件驱动固件的问题。应该使用哪种方式是一个普遍的问题。或者也许我完全错了?该应用程序不是时间关键的。

案例一:

  • 尽可能使用 k_work、k_timer、k_poll/k_sem 等特征
  • 由于这些函数需要 c 风格的回调,因此将使用很多免费函数
  • 用于发布事件的调度程序/订阅者事件队列(如按下按钮、打开 LED 等),这些事件将在主循环内处理(类似于案例 B)
  • LED动画可以由模块本身处理(k_work)

案例B:

  • 调度器/订阅者系统的自己实现
  • 类可用于所有元素(按钮、LED、...)
  • 所有事件都在主循环内处理
  • 如果主线程休眠,中断可以唤醒它
  • LED 对象可以在需要唤醒时发送事件(用于动画,...)
  • Main 使用上述事件中的最低睡眠时间值
  • LED订阅LoopEvent做动画

我认为Case B更有条理,也更清楚发生了什么。一切都由主循环控制,一切都使用相同的调度/订阅系统。

0 投票
0 回答
42 浏览

lua - RTOS 中 setjmp/longjmp 函数与 ISR 的冲突

介绍

Lua 基于setjmp/longjmp函数实现协程。我在将 lua 移植到这些 RTOS 环境时发现了一些问题:

1. Zephyr RTOS:失败

标题

MISRA C 2012规则 21.4 指出:

不应使用标准头文件 <setjmp.h>

当我调用 setjmp/longjmp 函数时,它表明发生了 MPU 故障,尽管CONFIG_MPU=n设置在prj.conf.

2. Mbed OS:成功

我调用了lua API,main()它在程序中不包含其他线程或任务。还可以。但我不测试多线程案例。

3. FreeRTOS:尚未测试,但可能没问题

NodeMCU 和 Lua RTOS 等开源项目使用 Lua 和 FreeRTOS 作为其基本框架。但我不确定他们是否在 FreeRTOS 多任务情况下进行了测试。

我在 FreeRTOS 论坛上找到了一个关于这个问题的帖子。一位 FreeRTOS 开发人员说他不知道。另一个人指出,由于冲突寄存器更改,可能会导致 ISR 或任务上下文切换中的意外行为。

我的问题

  • setjmp如果我在/使用期间禁用了所有中断longjmp,是否可以避免setjmp/longjmp和 ISR/任务切换冲突时出现意外行为?

  • 为什么setjmp/longjmp在 Zephyr RTOS 中失败了?

0 投票
0 回答
73 浏览

cmake - Adding External Library to Zephyr

Context:

I am trying to add an external library which uses CMake to my Zephyr project. I have explored the modules documentation, but this does not seem a good fit as I am unable to modify the upstream library and would like to avoid forking.

To add the library, I am using FetchContent in my Cmake file. This is working successfully and I am able to download and build the files.

Problem: When linking, I encounter a "Conflicting CPU architectures" error. After inspecting into compile_commands.json, I can see the libraries source code is not receiving the same CMAKE_ARGS as the other files, leading to the architecture mismatch.

I am looking for the suggested way of adding external libraries to a zephyr project, without using the module system.

0 投票
1 回答
39 浏览

c++ - 从 Zephyr RTOS 项目在 CMake 中构建多个二进制文件,每个文件都有不同的设备地址

我有一个项目,它由网格中的节点组成,它们之间将进行无线通信,并使用地址相互识别。

节点的职责是相同的,因此每个节点的源代码都是相同的,除了我想为每个节点指定和唯一的地址。

该项目将是一种演示或技术演示,因此为简单起见,我不想介绍一些地址协商或类似的复杂内容。

我正在研究并发现一些在 CMake 中使用 target_compile_definitions 的建议,但我不确定如何将其应用于通用 Zephyr CMakeLists.txt:

所以我想知道最好的方法是什么?有没有办法在 CMake 中做到这一点(在 CMake 方面我还是个菜鸟)?还是我应该修改一些 Python 脚本?

编辑:我在想是否可以从 CMake 级别执行 #define <device_addr> 之类的操作,然后对其余设备重复 X 次。所以最后我会得到 X 二进制文件,它们仅在#define <device_addr> 方面有所不同。

感谢您提前回复。

0 投票
1 回答
26 浏览

device-tree - zephyr 设备树节点中是否可以有任意数据?

我想使用设备树来存储一些系统级常量。

是否可以从设备树中存储和检索任意值?

尝试加载这些值无法编译,因为 build/zephyr/include/generated/devicetree_unfixed.h 缺少“custom-num”或“another-value”的值。

设备树覆盖文件: