[英]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++
構建一個thread
、 mutex
和future
。 您幾乎肯定需要一個有效的std::atomic
實現。
POSIX 線程中有很多 grot 是由於其對各種類似 UNIX 的操作系統的改造而產生的,而且您很可能不希望這些位不受支持。 有充分的理由,它不是許多 RTOS 的默認線程 API。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.