如何将 C++ 系统调用连接到 freertos

How to connect C++ system calls to freertos

我想用 free-rtos 为微控制器写一个多线程程序。但我不想使用非标准的免费 rtos 函数,相反,我想使用本机 c++ 库来 运行 并行和异步任务。但我不知道如何编写一个适配器来将创建线程的 C++ 系统调用连接到 free-rtos 函数。

mcu: 手臂皮质 m4 stm32f407

c++ 版本:17

似乎 FreeRTOS 有一个 POSIX threads adaptor 层。它是一个子集,但可能足以从 GNU libstdc++ 或 clang libc++ 构建 threadmutexfuture。您几乎肯定需要一个有效的 std::atomic 实现。

POSIX 线程中有很多问题是由于它对各种类 UNIX 操作系统的改造而导致的,您很可能不希望这些位不受支持。有充分的理由,它不是许多 RTOS 的默认线程 API。

标准定义了一个接口,它指定了语法,可能定义了一些性能要求,但它不会定义如何实现任务调度程序,这是编译器的职责。

实际上,std::thread 通常是一个包装器,它使用来自 OS(或更低层)的线程并依赖于它们。如果你有一个 C++11 兼容的编译器来包含 std::thread,显然你不需要做任何事情。否则,您必须编写自己的抽象层代码或使用其他人编写的包装器,互联网上有很多想法,即:https://www.codeproject.com/Articles/1278513/Cplusplus11-FreeRTOS-GCC