Skip to content

v0.1.0

Choose a tag to compare

@FreddieChopin FreddieChopin released this 26 Feb 23:09
· 3846 commits to master since this release

0.1.0 - 2016-02-26

Added

  • Build infrastructure for make and tup.
  • Fully preemptive scheduling with 256 priority levels. FIFO and round-robin scheduling policies. Completely static
    implementation.
  • Static and dynamic threads. Thread can execute any function type (regular function, member function, stateless
    functor, lambda) with any number of arguments of any type. Both thread types can be joined, while dynamic threads can
    also be detached.
  • Semaphores which can also be configured to work as binary semaphores during construction. Completely static
    implementation. constexpr constructor. Non-blocking functions can be used in interrupt handlers.
  • Mutexes which support various types (normal, error-checking, recursive) and protocols (normal, priority inheritance,
    priority protection). Priority inheritance protocol works with no limitations: through any number of inheritance
    "levels" and with any number of mutexes locked by threads in any order. Completely static implementation. constexpr
    constructor.
  • Condition variables which can work with mutexes. Completely static implementation. constexpr constructor.
  • callOnce() and OnceFlag - equivalents of std::call_once() and std::once_flag from C++11 or
    pthread_once() and pthread_once_t from POSIX. Completely static implementation. OnceFlag has constexpr
    constructor.
  • Message and FIFO queues, both in two flavors: with proper support for C++ objects and for binary serializable types
    (like POD types). 256 priority levels in message queues. Available in static and dynamic versions. Non-blocking
    functions can be used in interrupt handlers.
  • Support for POSIX-style signals with synchronous (waits) and asynchronous (signal handlers) API. Signals can be
    "generated" and "queued" with value. Completely static implementation. Non-blocking functions can be used in interrupt
    handlers.
  • One-shot static software timers which can execute any function type (regular function, member function, stateless
    functor, lambda) with any number of arguments of any type.
  • Basic device drivers for input and output pin.
  • Support for ARMv7-M (ARM Cortex-M3 and ARM Cortex-M4(F)) architecture. FPU can be used in any number of threads
    and interrupt handlers at the same time.
  • Support for STM32F4 chips.
  • Support and test configurations for 3 boards with STM32F4 chips:
    32F429IDISCOVERY,
    NUCLEO-F401RE
    and STM32F4DISCOVERY.
  • Extensive functional tests for all implemented functionalities.
  • Configuration with mconf tool from kconfig-frontends.
  • README.md file with introduction and information about configuration & building.
  • Integration with Travis CI service.