Cover image
Try Now
2021-09-09

在现代C ++类中包装Freertos

3 years

Works with Finder

4

Github Watches

8

Github Forks

35

Github Stars

FreeRTOS Modern C++ Wrappers

License

freertos-mcpp is a C++ wrapper library that allows developers to use the ubiquitous FreeRTOS kernel while simplifying its use by a new API that closely follows the C++ standard classes.

Features

  • No virtual classes, the wrapper classes accurately encapsulate the underlying data structures
  • Promotes static allocation, optimizing RAM use and reducing heap fragmentation risks
  • Public API closely matches the standard C++ thread support library
  • The API selects the threading or interrupt service routine (xFromISR) FreeRTOS API calls by detecting ISR context

Compatibility

  • C++11 and above
  • Tested with FreeRTOS 10, its public API is stable enough to enable the use on a wide range of versions
  • Only works with FreeRTOS ports that have xPortIsInsideInterrupt() call implemented

Porting

This library requires certain configuration values to be set for correct operation. Consider the recommended settings for FreeRTOSConfig.h:

// required globally
#define configSUPPORT_STATIC_ALLOCATION         1

// required to allow termination of threads and automatic resource freeing (see thread documentation)
// and for thread_owner that builds on it
#define configSUPPORT_DYNAMIC_ALLOCATION        1
    extern void vTaskExitHandler(void);
#define configTASK_RETURN_ADDRESS               vTaskExitHandler

// required for thread termination signalling, used by thread::join
// configNUM_THREAD_LOCAL_STORAGE_POINTERS must be higher than configTHREAD_EXIT_CONDITION_INDEX
#define configNUM_THREAD_LOCAL_STORAGE_POINTERS 1
#define configTHREAD_EXIT_CONDITION_INDEX       0

// required to support mutex, timed_mutex
#define configUSE_MUTEXES                       1

// required to support recursive_mutex, recursive_timed_mutex
#define configUSE_RECURSIVE_MUTEXES             1

// required to support counting_semaphore
#define configUSE_COUNTING_SEMAPHORES           1


// recommended to use on Cortex Mx architectures (see src/helpers/runtime_stats_timer.c)
#define configGENERATE_RUN_TIME_STATS           1
    extern void ConfigureTimerForRunTimeStats(void);
#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS()    ConfigureTimerForRunTimeStats()
    extern uint32_t GetRuntimeCounterValueFromISR(void);
#define portGET_RUN_TIME_COUNTER_VALUE()            GetRuntimeCounterValueFromISR()

In addition to the C++ wrappers, there are helper files located in src/helpers for some common use-cases:

  1. tasks_static.c is required as source to support static allocation of kernel objects
  2. runtime_stats_timer.c is a zero-cost runtime statistics timer for Cortex Mx architectures
  3. malloc_free.c and new_delete_ops.cpp redirect heap allocation to FreeRTOS's heap management

相关推荐

  • Joshua Armstrong
  • Confidential guide on numerology and astrology, based of GG33 Public information

  • https://suefel.com
  • Latest advice and best practices for custom GPT development.

  • Alexandru Strujac
  • Efficient thumbnail creator for YouTube videos

  • Emmet Halm
  • Converts Figma frames into front-end code for various mobile frameworks.

  • Elijah Ng Shi Yi
  • Advanced software engineer GPT that excels through nailing the basics.

  • lumpenspace
  • Take an adjectivised noun, and create images making it progressively more adjective!

  • https://maiplestudio.com
  • Find Exhibitors, Speakers and more

  • Yusuf Emre Yeşilyurt
  • I find academic articles and books for research and literature reviews.

  • Carlos Ferrin
  • Encuentra películas y series en plataformas de streaming.

  • https://zenepic.net
  • Embark on a thrilling diplomatic quest across a galaxy on the brink of war. Navigate complex politics and alien cultures to forge peace and avert catastrophe in this immersive interstellar adventure.

  • apappascs
  • 发现市场上最全面,最新的MCP服务器集合。该存储库充当集中式枢纽,提供了广泛的开源和专有MCP服务器目录,并提供功能,文档链接和贡献者。

  • ShrimpingIt
  • MCP系列GPIO Expander的基于Micropython I2C的操作,源自ADAFRUIT_MCP230XX

  • jae-jae
  • MCP服务器使用剧作《无头浏览器》获取网页内容。

  • ravitemer
  • 一个功能强大的Neovim插件,用于管理MCP(模型上下文协议)服务器

  • patruff
  • Ollama和MCP服务器之间的桥梁,使本地LLMS可以使用模型上下文协议工具

  • pontusab
  • 光标与风浪冲浪社区,查找规则和MCP

  • av
  • 毫不费力地使用一个命令运行LLM后端,API,前端和服务。

  • appcypher
  • 很棒的MCP服务器 - 模型上下文协议服务器的策划列表

  • Mintplex-Labs
  • 带有内置抹布,AI代理,无代理构建器,MCP兼容性等的多合一桌面和Docker AI应用程序。

  • chongdashu
  • 使用模型上下文协议(MCP),启用Cursor,Windsurf和Claude Desktop等AI助手客户,以通过自然语言控制虚幻引擎。

    Reviews

    2 (1)
    Avatar
    user_nafTJBTT
    2025-04-17

    I have been using the freertos-mcpp from IntergatedCircuits, and I am thoroughly impressed with its capabilities. This tool synergizes FreeRTOS with MCP perfectly, enhancing performance while keeping the complexity minimal. The repository is well-documented, making the integration process straightforward. Highly recommended for anyone looking to optimize their real-time operating systems with practical and efficient solutions.