问题标签 [chibios]

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 回答
610 浏览

kernel - 什么是 RTOS 内核锁定以及何时需要使用它?

我正在使用 ChibiOS RTOS,我有一些看起来很基本的问题,但有点让我想不到。

ChibiOS 有一个函数叫做:

据我了解,这两个函数将分别锁定和解锁内核。

所以我的问题是:

  1. 锁定内核有什么作用?
  2. 为什么要锁定内核?

最后,让我们使用这个例子:

这个函数只是为任何线程等待它的信号量发出信号。

所以我的最后一个问题是:

  1. 锁定内核只是为了发出信号量有什么意义?如果我不这样做,那么 ChibiOS 会抱怨并且在没有系统锁的情况下无法编译。
0 投票
0 回答
1292 浏览

embedded - STM32 上的 Eigen 只能工作到一定大小

我正在尝试在 STM32F4 Discovery 嵌入式板上使用 Eigen C++ 库来执行一些矩阵运算,特别是对传感器数据进行一些卡尔曼滤波。

我尝试链接标准 c++ 库,甚至尝试使用 g++ arm 编译器编译程序。

如果矩阵大小设置为 7,我可以编译相同的代码。如果我越过它,那么代码将不会编译,并且特征会给我一个警告:

这些是我收到的部分错误消息

这是我正在使用的链接器脚本中的内存分配

我只是在运行 STM32F4 发现板,但 Chibios 配置不变

更新

我无法再重现此错误。可悲的是,我没有做任何事情来解决这个问题。

如果有人感兴趣,以上是我正在使用的编译器选项。

现在我可以毫无问题地乘以 20x20 矩阵。

完成上述计算大约需要 1 毫秒。

我认为我的编译器可能有问题。所以我尝试了两个版本的编译器

版本 - 1

版本 2

0 投票
3 回答
109 浏览

c - 结构定义

我遇到了一个奇怪的代码

可以在此处找到此代码。

这是什么样的结构定义/声明?

有人可以用简单的英语解释它是什么意思吗?

0 投票
0 回答
147 浏览

c - ChibiOS_3.0.2 迁移到 ChibiOS_20.3.x 问题

我正在开发一个完美编译的 ChibiOS 版本 3.0.2 的大项目(我们称之为 chibios3)(它非常过时)所以现在我正在尝试迁移到 ChibiOS 版本 20.3.x(以免称之为 chibios20)。我从 STM32F407 Discovery 演示中获取了 chibios20 chconf.h、halconf.h、mcuconf.h 和 Makefile,并用它们替换了旧配置。旧的 Makefile 如下所示:

演示 Makefile 看起来像(我添加了源和包含目录):

现在我运行命令时make出现错误,表明该项目无法理解基本语法,如 uint8_t uint16_t .... 甚至没有定义“true”这个词。

错误如下所示:

0 投票
0 回答
56 浏览

gdb - 使用 GDB 和 Chibistudio 在 RTOS chibios 中调试线程

我是 Chibistudio 的新手并调试它的线程。现在的问题是,当我使用 chibistudio 的调试窗口时,它会列出所有正在运行的线程,如图所示。 使用 Chibistudio 线程调试窗口进行 Chibios 线程调试 当我使用 gdb 命令调试相同的代码,并使用 info threads 命令列出线程时,它只显示一个线程,并且也显示远程名称。 Chibios Thread Debugging using GDB 想知道这里出了什么问题。为什么在 gdb 名称正确的情况下它不显示所有线程.????

0 投票
0 回答
108 浏览

c++ - 如何在 Visual Studio 中为嵌入式项目添加/导入 chibios 库?

我想在我的项目中使用来自chibios的 ch.h 文件。嵌入式项目已创建并使用 stm32 的 HAL 驱动程序。我想找到一种将 chibios 库添加或导入到当前项目的方法。

我的问题是

  1. 如何在 Visual Studio 中通过 visualGDB 添加这些具有大量依赖项的嵌入式库?
  2. 我需要创建 chibios 的 .lib 文件吗?
  3. C/C++ 路径和链接器路径有什么区别?
  4. 添加 .a 和 .h 文件就足够了,还是我必须寻找其他文件?

我遵循了3种方法,但没有成功。

  1. 我按照链接添加了路径。添加到项目的文件是 libch.a 和 ch.h。它在 ch.h 中被称为其他头文件。然后,我也将其他头文件路径添加到 C/C++“其他包含目录”中。添加第三个头文件后,出现错误“重新定义”。

  2. 第二种方式,我想使用库管理器vcpkg 。但是在 vcpkg 中没有 chibios 库。

  3. 另一种方法是在标准库中添加库而不添加任何路径。但是我怎样才能找到标准库呢?如果该位置在编译器中(gcc-arm-none-eabi),则添加了 chibios 包,但在 Visual Studio 中仍未检测到。

如果您知道在 Visual Studio 中添加 chibios 的任何教程或方法,我将不胜感激