Home

Awesome

Gitter chat CI status

1. Introduction

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.

2. Supported hardware

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.

Board list

ArchBoard
ARMSTM32F407_Discovery
ARMSTM32F429_Discovery
ARMSTM32F469_Discovery
ARMSTM32F4XX_M
ARMSTM32_F4VE
ARMSTM32F746_Discovery
ARMSTM32F769_Discovery
ARMSTM32_H405
ARMNUCLEO_F446ZE
ARMCrazyflie
ARMFeather_STM32F405
ARMOpenMV2
ARMMicroBit
ARMNRF52_DK
RISC-VHiFive1
RISC-VHiFive1_rev_B
RISC-VUnleashed
Native
<!-- Examples: --> <!-- Undocumented: -->

3. Getting started

To start using the Ada_Drivers_Library, please go to the examples directory where you will find instructions to run your first project.

4. License

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.

5. Requirements

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).

6. Roadmap

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.

7. Project using the Ada_Drivers_Library

(Add yours to the list!)