/Ada_Drivers_Library

Ada source code and complete sample GNAT projects for selected bare-board platforms supported by GNAT.

Primary LanguageAdaBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

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

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

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.

  • ARM
  • STM32F4/7 USB drivers
  • Components
  • BlueNRG-MS (Bluetooth Low Energy Network Processor)
  • Services
  • Bluetooth Low Energy stack
  • USB stack

7. Project using the Ada_Drivers_Library

(Add yours to the list!)