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-L073RZ board with STM32L0 chip.
Support and test configuration for 32F769IDISCOVERY board with STM32F7 chip.
Test of Thread::generateSignal() and Thread::queueSignal() returning ENOSPC when the amount of target thread's free stack is too small to request signal delivery.
GDB pretty-printers for estd containers (estd::ContiguousRange, estd::IntrusiveForwardList, estd::IntrusiveList, estd::SortedIntrusiveForwardList and estd::SortedIntrusiveList), internal::ThreadList and all variants of FIFO and message queues (internal::FifoQueueBase, FifoQueue, DynamicFifoQueue, StaticFifoQueue, RawFifoQueue, DynamicRawFifoQueue, StaticRawFifoQueue, internal::MessageQueueBase, MessageQueue, DynamicMessageQueue, StaticMessageQueue, RawMessageQueue, DynamicRawMessageQueue and StaticRawMessageQueue). This greatly simplifies system debugging by allowing easy debugger access to thread lists (inside scheduler or synchronization objects), software timer lists (inside scheduler) and by allowing live examination of queue contents.
ThisThread::getSchedulingPolicy() and ThisThread::setSchedulingPolicy() - counterparts of Thread::getSchedulingPolicy() and Thread::setSchedulingPolicy().
Parser of devicetree *.dts files written in Python with ply - pydts.py. The script can parse a *.dts file into a Python dictionary. As this is a proof-of-concept for now, only limited set of devicetree syntax is supported. Following features are currently not handled: path references, bytestrings, any integer arithmetic other than addition and multiplication, labels for anything else than a node, multiple labels for single node, memory reservations, any non-standard extensions, /include/ statements (#include statements should be used exclusively), C or C++ comments (should be handled by C preprocessor). The features which are currently handled are enough to parse all STM32 *.dts files from Linux or from Zephyr. The script relies on C preprocessor to resolve #define macros, handle #include statements and remove C/C++ comments. Before you feed the file into this script, you should first do something like cpp -nostdinc -undef -E -x assembler-with-cpp in.dts -o out.dts. Linemarkers generated by current cpp versions are supported.
Support for cores which don't support bit-banding (ARM Cortex-M0(+), ARM Cortex-M1, ARM Cortex-M7) or don't have BASEPRI register (ARMv6-M) to STM32'sSPIv1 low-level driver.
Devicetree fragments (*.dtsi files) for architectures.
*.csv files which describe memory and selected peripherals of all supported chips.
generateChipDtsi.pyPython script (using Jinja2 template engine) which can generate chip's devicetree fragments (*.dtsi files) from *.csv input file.
Basic devicetree *.dts files for all supported boards.
Board generator Python script using .dts files as input (parsed with pydts.py module) and Jinja2 template engine for rendering output. This new feature can be used with make board CONFIG_FILE=path/to/config.dts command.
"Enable support for signals" option in Kconfig menus. When this option is enabled, all namespaces, functions and classes required for signals are available. Otherwise they are completely disabled, which reduces the size of compiled application. This affects ThisThread::Signals namespace, Thread::generateSignal(), Thread::getPendingSignalSet(), Thread::queueSignal() and DynamicSignalsReceiver, SignalInformationQueueWrapper, SignalsCatcher, SignalsReceiver, StaticSignalsReceiver classes.
Experimental "Enable link-time optimization" option in Kconfig menus.
"Enable static destructors" and "Register static destructors in run time" options in Kconfig menus. These can be used to completely disable destructors for objects with static storage duration, which reduces ROM usage of application. By default both options are disabled, as this is the most common choice for an embedded application which never exits.
Support for newlib's ratargetable locking, which makes all newlib functions with shared state - like the ones from <stdio.h>, functions which manipulate time zone, modify environment variables and so on - thread-safe. "Retargetable locking" has to be enabled during toolchain compilation - toolchains compiled in March 2017 or later should support that feature.
Changed
architecture::requestFunctionExecution() no longer handles the case of current thread sending the request to itself.
Size of stack passed as argument to DynamicThread or as template argument to StaticThread is adjusted to alignment requirements of architecture. This way "usable" size of stack will never be less than the requested value.
Generated distortosConfiguration.h file no longer "undefines" Kconfig symbols which are not set.
All boolean Kconfig symbols are now converted to #define CONFIG_... 1 in generated distortosConfiguration.h file. Previously they were converted to a macro without value (#define CONFIG_...), which made building complex conditions harder than necessary.
All supported boards were regenerated from .dts files.
All folders in source/board/STM32/STM32*/ and in configurations/ were renamed to be in sync with filenames of their generated contents.
chip::configurePin(), chip::configureInputPin() and chip::configureOutputPin() for STM32's GPIOv1 now have default values for all the arguments which are less important.
chip::configurePin(), chip::configureAlternateFunctionPin(), chip::configureInputPin() and chip::configureOutputPin() for STM32's GPIOv2 now have default values for all the arguments which are less important.
Generated linker scripts (either from .dts file by make board or during compilation when using custom board) are more similar to GNU's default linker script.
Type of TickClock counter - TickClock::rep was changed from uint64_t to int64_t. This way TickClock::duration can be negative and TickClock::time_point may represent time points before bootup.
Update CMSIS to version 5.1.0.
Update CMSIS-STM32F0 to version 1.8.0.
Update CMSIS-STM32F1 to version 1.6.0.
Update CMSIS-STM32F4 to version 1.16.0.
Deprecated
StaticRawFifoQueue<T, QueueSize>, StaticRawFifoQueueFromSize<ElementSize, QueueSize>, StaticRawMessageQueue<T, QueueSize> and StaticRawMessageQueueFromSize<ElementSize, QueueSize> were marked as deprecated and are scheduled to be removed after v0.5.0. The classes are deprecated because they don't match their "dynamic" counterparts (which use size in bytes, not type) and because StaticRaw...QueueFromSize<ElementSize, QueueSize> aliases work only for ElementSize which is a positive power of 2. New versions of these classes which were added - StaticRawFifoQueue2<ElementSize, QueueSize> and StaticRawMessageQueue2<ElementSize, QueueSize> - don't have these flaws. To upgrade your code replace StaticRaw...Queue<T, QueueSize> with StaticRaw...Queue2<sizeof(T), QueueSize> and StaticRaw...QueueFromSize<ElementSize, QueueSize> with StaticRaw...Queue2<ElementSize, QueueSize>.
chip::configureAlternateFunctionPin(chip::Pin, bool, chip::PinOutputSpeed, chip::PinPull, chip::PinAlternateFunction) for STM32's GPIOv2 was marked as deprecated and is scheduled to be removed after v0.5.0. This function is deprecated because one of the most important arguments - chip::PinAlternateFunction - is the last one, which makes it impossible to have default values for the less important arguments. New overload chip::configureAlternateFunctionPin(chip::Pin, chip::PinAlternateFunction, bool, chip::PinOutputSpeed, chip::PinPull) has chip::PinAlternateFunction passed on the second position, not the last one, thus allowing to have a default value for all the arguments that follow.
Fixed
ThisThread::Signals::setSignalMask() may never return ENOSPC, as it delivers signals directly, not via architecture::requestFunctionExecution().
Failure during generation or queuing of signal - for example due to free stack size being insufficient, which is reported with ENOSPC error code - won't leave the generated/queued signal pending.
Signals are never delived from within critical section.
Fixed compilation of USARTv2 low-level driver for some STM32F0 chips, for which USART_CR1_M0 is not defined.
Minor fixes necessary for compilation and proper behaviour in GCC 7.
Fixes required for compilation and proper execution when link-time optimization is enabled.
Fix tup-based build when Tupfile.lua from folder A is used to compile files from folder B. Previously proper folder hierarchy would not be created in the output directory.
Fix stack overflow in idle thread for ARMv6-M when Thread::detach() is enabled, "Optimize for size (-Os)" is selected and GCC 7 is used. In that case idle thread needs 264 bytes of stack, so increase its size to 320 bytes.
Removed
All support for GCC 4.x was removed, GCC 5.1 is the minimum supported version. GCC 5.1 - released more than 2 years ago - is the first version to fully support constexpr constructors. Dropping support for earlier versions finally allows global objects' initialization to be greatly simplified. This project aims to support 3 most recent "major" versions of GCC, which - currently - means GCC 5, GCC 6 and GCC 7.