Code Monkey home page Code Monkey logo

freertos-addons's Introduction

freertos-addons

After working with FreeRTOS for over 12 years, I decided to start adding features and implementations that I wish would have been there at the beginning.

Current Features

  • C++ Wrappers Coverity Scan Build Status

    • A collection of C++ wrappers encapsulating FreeRTOS functionality, allowing you to write your RTOS application in C++ while still using FreeRTOS. This wrapper layer does all the integration work for you.
    • This library is for you if you are planning on using C++ and FreeRTOS in your project but don't want to spend the time integrating the two.
    • Everything was tested successfully using FreeRTOS versions 8.2.3, 9.0.0, 10.0.0, and 10.5.1.
    • There are numerous demo / unit test projects using these wrappers and various features they provide. Last count we are at 48 Demo projects showing how you might use the C++ Wrapper library.
    • Licensing now follows the MIT Open Source License, the same as FreeRTOS starting from version 10.0.0.
    • Project web page
    • Full cross-referenced documentation. Documents were auto-generated and cross-referenced using Doxygen.
  • C Add-on Wrappers

    • A collection of C Add-on functionality for FreeRTOS. Right now these consist of:
    • Memory Pools: Fixed size memory allocation buffers. Using these elminates the possibility of memory fragmentation. There is overhead associated with these, so it's better if you are maximizing the size of each allocation.
    • Reader / Writer Locks: These allow multiple threads to simultaneously access a shared resource all as readers. If something needs to change, then a Writer lock needs to be taken which will allow a singe thread to modify the shared resource.
    • Workqueues: These allow you to queue "work" (i.e. a function) to a different thread. Useful if you have a lot of "one off" things that need to be done in different threads but they happen very asynchronous.
    • Licensing now follows the MIT Open Source License, the same as FreeRTOS starting from version 10.0.0.
    • There are numerous demo / unit test projects using these wrappers and various features they provide. Last count we are at 10 Demo projects showing how you might use the C libraries.
    • In addition, to support these there are implementations of standard optimized compter science singly linked lists, doubly linked circular lists, queues, and stacks.
    • Full cross-referenced documentation. Documents were auto-generated and cross-referenced using Doxygen.
  • Updated Linux port - REMOVED

    • I have switched to using the distributed GCC/Posix port that comes with the FreeRTOS Kernel, under the ThirdParty directory. All demos have been updated to point to this port.

Overall Releases

Version 1.6.1

  • Updated Demos to now use the new FreeRTOS-Kernel directory structure hosted on Github.
  • Updated Demos to use the supported, distributed GCC/Posix port in the ThirdParty directory of the FreeRTOS Kernel.
  • Demos work with version 10.5.1 of the FreeRTOS Kernel.
  • Cleaned up Demo Makefiles. Leveraging a few common makefiles which are included in most other ones. Also renamed from makefile to Makefile, to better match Linux / make case conventions.

Version 1.6.0

  • https://github.com/michaelbecker/freertos-addons/releases/tag/v1.6.0
  • C++ Wrappers 1.6.0:
    • Merged in Event Groups work from Danilo Pucci Smokovitz ([email protected])
    • Updated license to MIT.
    • Updated doxygen documentation.
  • C Add-ons 1.1.0:
    • Fixed bugs in Memory Pools.
    • Added initial implementation of Zero Copy queues.
    • Updated license to MIT.
    • Updated doxygen documentation.
  • Linux Port
    • Merged in some of the work done by KKoovalsky to handle cleanup better. This does not solve all issues. See michaelbecker#14 for details.

Version 1.5.1

Version 1.5.0

Version 1.4.0

Version 1.3.2

Version 1.3.1

Version 1.3.0

  • https://github.com/michaelbecker/freertos-addons/releases/tag/v1.3.0
  • Added preprocessor variable "CPP_FREERTOS_NO_CPP_STRINGS". If you do not want to use C++ strings, simply define this in your makefile or project. Note that if you define this, you must also define "CPP_FREERTOS_NO_EXCEPTIONS". Some classes throw exceptions if they cannot be constructed, and the exceptions they throw depend of C++ strings.
  • Added an implementation of condition variables. These are not enabled by default. To use, define "CPP_FREERTOS_CONDITION_VARIABLES". Also include the files condition_variable.hpp and ccondition_variable.cpp in your project.

Version 1.2.0

  • https://github.com/michaelbecker/freertos-addons/releases/tag/v1.2.0
  • Adding preprocessor flag to exclude exceptions for smaller footprint and C++ compilers that do not support them.
  • Updated license to one similar to FreeRTOS version. What does that mean for you? It means you are free to use FreeRTOS C++ Wrappers in your commercial product without making your product open source.

Version 1.1.0

Version 1.0.2

Version 1.0.1

Version 1.0.0

TODO

This is my todo list for this project. If there's something you'd like to see done sooner, feel free to make a request.

FreeRTOS Features Not Yet Implemented

  • events
  • MPU restricted threads
  • eTaskGetState
  • uxTaskGetNumberOfTasks
  • uxTaskGetStackHighWaterMark
  • Thread Local Storage

New Value Added

  • In Timers, add OnStop / OnStart / mutex sync with these methods?
  • Priority queues
  • Tick Hooks - option to round robin hooks, one per tick

freertos-addons's People

Contributors

michaelbecker avatar danilopucci avatar kpochwala avatar lukasnee avatar kohnech avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.