Releases: simonjwright/FreeRTOS-Ada
Release 2018-04-19 for GCC 6/GNAT GPL 2016
-
Support for bounded strings and CRC32 is included.
-
The performance of Timing_Events is improved.
-
delay until Ada.Real_Time.Time_Last
is supported. -
The restriction
No_Recursion
is removed (Ada_Drivers_Library
uses it). It's still a good idea to include it where you can, possibly via a local configuration pragma: in your GPR'spackage Compiler
,
for Local_Configuration_Pragmas use "no_recursion.adc";
where of course no_recursion.adc
contains
pragma Restrictions (No_Recursion);
- All but 2k of free store is available for heap.
Release 2017-10-16
Support for bounded strings and CRC32 is included.
The performance of Timing_Events is improved.
The restriction No_Recursion
is removed (Ada_Drivers_Library
uses it). It's still a good idea to include it where you can, possibly via a local configuration pragma: in your GPR's package Compiler
,
for Local_Configuration_Pragmas use "no_recursion.adc";
where of course no_recursion.adc
contains
pragma Restrictions (No_Recursion);
Release 2017-08-08
A patch is provided to support FSF GCC 8/GNAT GPL 2017. See the installation instructions.
Maths support is included for Arduino Due, STM32F429I.
All free store (bar a 2048-byte allowance for startup and interrupts) is available for heap allocation.
Sequential elaboration (with the configuration pragma Partition_Elaboration_Policy (Sequential)
) is supported.
Note that memory can't be allocated (directly or indirectly) from a protected handler. This is a feature of FreeRTOS.
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).
Release 2016-05-22
In this release,
-
There is no longer any dependence on the STMicroelectronics' STM32Cube package.
-
The support for on-chip peripherals is limited to the SVD2Ada-generated spec files. The AdaCore 'bareboard' software supports the STM32 line.
-
Tasking no longer requires an explicit start (https://sourceforge.net/p/cortex-gnat-rts/tickets/5/).
-
Locking in interrupt-handling protected objects no longer inhibits all interrupts, only those of equal or lower priority (https://sourceforge.net/p/cortex-gnat-rts/tickets/18/).