簡體   English   中英

如何將 C++ 系統調用連接到 freertos

[英]How to connect C++ system calls to freertos

我想用 free-rtos 為微控制器編寫一個多線程程序。 但我不想使用非標准的 free-rtos 函數,而是想使用本機 c++ 庫來運行並行和異步任務。 但我不知道如何編寫一個適配器來連接 c++ 系統調用以創建線程到 free-rtos 函數。

單片機:arm皮質m4 stm32f407

c++版本:17

該標准定義了一個接口,它指定了語法,並且可能定義了對其性能的一些要求,但它不會定義如何實現任務調度器,這是編譯器的職責。

實際上,這就是std::thread通常是一個包裝器,它使用來自操作系統(或較低層)的線程並依賴於它們。 如果你有一個 C++11 兼容的編譯器來包含std::thread ,顯然你不需要做任何事情。 否則,您必須編寫自己的抽象層或使用其他人編寫的包裝器,互聯網上有很多想法,即: https://www.codeproject.com/Articles/1278513/Cplusplus11-FreeRTOS-GCC

似乎 FreeRTOS 有一個POSIX 線程適配器層。 它是一個子集,但可能足以從 GNU libstdc++或 clang libc++構建一個threadmutexfuture 您幾乎肯定需要一個有效的std::atomic實現。

POSIX 線程中有很多 grot 是由於其對各種類似 UNIX 的操作系統的改造而產生的,而且您很可能不希望這些位不受支持。 有充分的理由,它不是許多 RTOS 的默認線程 API。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM