Release 2017-07-26
This release is motivated by a wish to support the Crazyflie, a.k.a. Certyflie code from AdaCore in the stm32f4
RTS. However, most of the changes apply to the other RTSs as well.
The RTSs build as-is with FSF GCC 7.1.0 (for macOS users, a compiler is available at Sourceforge).
At FSF GCC 7, the interface to create a task changed (Create
takes an extra parameter, Secondary_Stack_Size
). Alternate versions are provided for use with FSF GCC 6 (macOS compiler also at Sourceforge):
common/environment_task.adb-gcc6
common/s-tarest.ads-gcc6
common/s-tarest.adb-gcc6
To use them, copy over the equivalent .ad?
file.
These patches are also needed to build the RTS with GNAT GPL 2016.
GNAT GPL 2017 does not require these patches: however, attempting to build the RTS results in
[Ada] a-stream.ads
a-stream.ads:67:09: expected type "Standard.Boolean"
a-stream.ads:67:09: found type "Ada.Tags.Size_Ptr"
a-stream.ads:67:09: expected type "Ada.Tags.Select_Specific_Data_Ptr"
a-stream.ads:67:09: found a composite type
a-stream.ads:67:09: no value supplied for component "Tags_Table"
gprbuild: *** compilation phase failed
With GNAT GPL 2016, the cortex-gnat-rts test programs work properly. The Certyflie branch also works, after removing the Create_Missing_Dirs
attributes, new in GPRBuild GPL 2017, from all the GPRs.
Common
The base is FreeRTOS 9.0.0.
Added Ada.Real_Time.Timing_Events
(with limitations: there's no finalization, so they should only be declared at library level).
SPARK annotations in Ada.Real_Time
are copied from those in GCC 7.1.0.
Added Interfaces.C.Extensions
.
type'Image()
and object'Img
are supported.
The default stack size is 4096 (the minimum size is still 768).
stm32f4
Stack overflow checking is enabled in FreeRTOS.
Added Ada.Numerics.*
(excluding random number generation).
In Ada.Interrupts.Names
, interrupts are still named *_IRQ
, but renamings to *_Interrupt
are included.
The main program can have pragma
(or aspect) Priority
.
Executables can be built to load at an offset from the STM32F4's default (this is to support the Crazyflie's over-the-air bootloader).