This repository contains drivers and sample projects to program micro-controllers with the Ada and SPARK languages. The library also provides some middleware services and drivers for external devices such as sensors. We intend this to be a location for both AdaCore and the community in general to contribute support for additional processors, platforms, and vendors.
Ada_Drivers_Library provides support for various devices in the ARM Cortex-M and RISC-V architectures. Some devices are only partially supported. Go to the boards directory for a list of supported hardware.
Arch | Board |
---|---|
ARM | STM32F407_Discovery |
ARM | STM32F429_Discovery |
ARM | STM32F469_Discovery |
ARM | STM32F4XX_M |
ARM | STM32_F4VE |
ARM | STM32F746_Discovery |
ARM | STM32F769_Discovery |
ARM | STM32_H405 |
ARM | NUCLEO_F446ZE |
ARM | Crazyflie |
ARM | Feather_STM32F405 |
ARM | OpenMV2 |
ARM | MicroBit |
ARM | NRF52_DK |
RISC-V | HiFive1 |
RISC-V | HiFive1_rev_B |
RISC-V | Unleashed |
Native |
To start using the Ada_Drivers_Library, please go to the examples directory where you will find instructions to run your first project.
All files are provided under a 3-clause Berkeley Software Distribution (BSD) license. As such, and within the conditions required by the license, the files are available both for proprietary ("commercial") and non-proprietary use.
For details, see the LICENSE
file in the root directory.
The software is written in Ada 2012 and uses, for example, preconditions, postconditions, and the high-level iterator form of for-loops.
In addition, a GNAT implementation-defined pragma is used extensively. This
pragma makes it possible to avoid explicit temporary copies when assigning
components of types representing hardware registers requiring full word or full
half-word accesses. The pragma is named Volatile_Full_Access
. Those persons
wishing to submit additions to the library should see the GNAT Reference Manual
for details.
Therefore, building with the sources requires a compiler supporting both Ada
2012 and the GNAT-defined pragma Volatile_Full_Access
. For instance a recent
GNAT Pro compiler or GNAT FSF 12 for ARM ELF or RISC-V ELF (Download
here).
Here is a list of projects that we are either dreaming about or already working on. If you are interested by one of those, please contact us on the project's GitHub page.
(Add yours to the list!)