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

问题描述 投票:0回答:2

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

mcu:手臂皮质m4 stm32f407

c ++版本:17

c++ arm microcontroller freertos bare-metal
2个回答
1
投票

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

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


0
投票

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

实际上,通常是std::thread,这是使用来自OS(或较低层)的线程并依赖它们的包装器。如果您具有兼容C ++ 11的编译器以包含std::thread,那么显然您无需执行任何操作。否则,您必须编写自己的抽象层或使用其他任何人编码的包装器,互联网上有很多想法,即:https://www.codeproject.com/Articles/1278513/Cplusplus11-FreeRTOS-GCC

© www.soinside.com 2019 - 2024. All rights reserved.