You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Support and test configuration for NUCLEO-F446RE board with STM32F4 chip.
distortos/C-API/ConditionVariable.h - C-API for condition variables, implemented as wrappers for distortos::ConditionVariable member functions.
distortos/C-API/Mutex.h - C-API for mutexes, implemented as wrappers for distortos::Mutex member functions.
distortos/C-API/Semaphore.h - C-API for semaphores, implemented as wrappers for distortos::Semaphore member functions.
distortos::fromCApi() which can be used to cast referenes to C-API objects (like distortos_Semaphore) into references to regular C++ API objects (like distortos::Semaphore).
distortos::DynamicSoftwareTimer class - a dynamic and (mostly) non-templated counterpart of distortos::StaticSoftwareTimer.
distortos::ThisThread::exit(), similar to pthread_exit(), which can be used to cause early exit of the current thread.
distortos::ThreadIdentifier type which can be used to uniquely identify and access thread's instance. Identifier of the thread can be obtained using distortos::Thread::getIdentifier() and distortos::ThisThread::getIdentifier().
Unit tests of C-API for condition variables, mutexes and semaphores, using Catch unit test framework and Trompeloeil mocking framework. Build system of unit tests uses CMake.
New overload of distortos::Mutex's constructor for "normal" type.
BIND_LOW_LEVEL_PREINITIALIZER() and BIND_LOW_LEVEL_INITIALIZER() macros, which can be used to bind (at compile/link time) any function as low-level preinitializer (executed before .bss and .data sections' initialization, before constructors for global and static objects) or low-level initializer (executed after .bss and .data sections have been initialized, but before constructors for global and static objects). Each preinitializer/initializer has its own order of execution from 0 to 99.
include/CONCATENATE.h and include/STRINGIFY.h with useful macros for token concatenation and stringification.
CMake-based build system. At this moment all configuration is still done with Kconfig - CMake loads selected distortosConfiguration.mk and only deals with compilation. Typical use case involves following steps: select configuration with make configure CONFIG_PATH=..., create output folder of your choice (mkdir output) and enter it (cd output), configure compilation with cmake .. -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-arm-none-eabi.cmake and finally start the build with make. You can obviously use other CMake generators, e.g. Ninja, Eclipse CDT4 project, ... CMake-based build system will only support configurations with proper board, i.e. "Custom board" choice for "Board" in Kconfig is not supported.
Added rbegin(), rend(), crbegin() and crend() functions to IntrusiveList and SortedIntrusiveList classes, making them usable with estd::ReverseAdaptor.
Changed
Reduced size of distortos::Mutex from 28 bytes to 24 bytes (5 pointers + 4 bytes).
distortos::ThreadCommon was moved to distortos::internal namespace. distortos/ThreadCommon.hpp was moved to distortos/internal/scheduler/ThreadCommon.hpp. There's no need for this class to be available in the public API.
All low-level initializers (architecture, chip, peripherals, scheduler, threads, ...) use BIND_LOW_LEVEL_INITIALIZER() instead of being called via distortosPreinitArray[] from newlib's __libc_init_array().
Changed linker script symbols related to .bss and .data section initializers - __{bss,data}_array_{end,start} becomes __{bss,data}_initializers_{end,start}.
Replaced generateChipDtsi.py with generateChipYaml.py. New script reads all input data and its hierarchy from *.csv files - no templates or external files are used. Output *.yaml files for described chips are generated by ruamel.yaml parser/emitter module, which is the only dependency of this script.
Replaced devicetree-based board generator with one using *.yaml files as input. Model of data in *.yaml files resembles devicetree, but is more suited for requirements of distortos (static code generation instead of dynamic run time configuration). New version of generateBoard.py requires ruamel.yaml parser/emitter module and jinja2 template engine. It is also possible to use chip *.yaml files directly to generate so-called "raw" board, which can then be used by CMake. Basic documentation of bindings for chip and board *.yaml files is included in documentation/yaml-bindings/.
Indexes of board buttons and LEDs - generated automatically by generateBoard.py - were changed from <name>ButtonIndex and <name>LedIndex to <group><Name>Index. For example b1ButtonIndex and ld3LedIndex were changed to buttonsB1Index and ledsLd3Index. Similar change was done for counts of available board buttons and LEDs - they were changed from total<Name> to <group>Count. For example totalButtons and totalLeds were changed to buttonsCount and ledsCount.
Renamed StaticRawFifoQueue2 to StaticRawFifoQueue and StaticRawMessageQueue2 to StaticRawMessageQueue. Aliases for old names were added and marked as deprecated and are scheduled to be removed after v0.6.0
Update CMSIS to version 5.3.0.
Fixed
Fixed GDB pretty-printers of distortos queues when using GCC 7. New version of libstdc++v3 from GCC changed implementation of std::unique_ptr, which is used internally by queues for managing storage. Fixed pretty-printers from distortos.py now handle both variants of std::unique_ptr.
Mark all .bss sections in generated linker scripts as (NOLOAD). Without this change .bin file for a project containing zero-initialized data in additional memories would be extremely large - for example ~134 MB in case of STM32F4 when anything is placed in .ccm.bss.
Fixed interrupt priorities for STM32'sSPIv2 and USARTv2 for cases when CONFIG_ARCHITECTURE_ARMV7_M_KERNEL_BASEPRI is defined and non-zero. Previously interrupt priorities of these peripherals were always set to 0 (highest possible).
Restore 4-byte alignment for .bss and .data sections in linker scripts generated for ARMv6-M and ARMv7-M architectures. Previously when beginning/end of these sections were not 4-byte aligned (for example there's just one byte in such section), the __..._start / __..._end symbols would not be properly aligned for use by Reset_Handler()'s initialization code, which initializes 4 bytes at a time.
#include ... examples in documentation generated by doxygen use proper paths - e.g. #include "distortos/Semaphore.hpp" instead of #include "Semaphore.hpp".
Fixes necessary for compilation with GCC 8.
Removed
Removed call to lowLevelInitialization0() from Reset_Handler() for ARMv6-M and ARMv7-M. All low-level preinitializers should use BIND_LOW_LEVEL_PREINITIALIZER() macro.
Removed board::lowLevelInitialization() declaration. Low-level initializers of board should use BIND_LOW_LEVEL_INITIALIZER(60, ...);.
Removed pydts.py, as new version of board generator uses *.yaml files as input.
Removed tup build infrastructure - tup is no longer supported for building distortos.
Removed deprecated functions and aliases: StaticRawFifoQueueFromSize, old StaticRawFifoQueue, StaticRawMessageQueueFromSize, old StaticRawMessageQueue, old variant of STM32's GPIOv2 configureAlternateFunctionPin().