Go to file
Pat Rogers 1c179807ef
Merge pull request #427 from simonjwright/callgraph
Provide control over -fcallgraph-info in project wizard.
2024-02-27 11:26:52 -06:00
.github/workflows Check that each supported board is mentioned in README.md 2023-12-06 16:38:32 +02:00
arch Add more readme files. 2023-12-06 16:38:32 +02:00
boards Add missing `aliased` keywords in STM32_F4VE board 2023-12-20 18:23:27 +02:00
components Add more readme files. 2023-12-06 16:38:32 +02:00
docs Switch to GNAT FSF 12 support (#418) 2023-01-02 11:34:55 +01:00
examples Add more readme files. 2023-12-06 16:38:32 +02:00
hal/src Drop unused type (Orientation_Mode) from HAL.Bitmap 2023-12-06 16:38:32 +02:00
middleware/src Community 2021 (#386) 2021-05-26 12:24:22 +02:00
scripts Provide control over -fcallgraph-info in project wizard. 2024-02-27 15:52:11 +00:00
testsuite Migration to GNAT Community 2020 2020-05-29 18:56:37 +02:00
.gitattributes .gitattributes: Add .fs and .bmp to the list of binary files 2018-03-09 12:05:18 +01:00
.gitignore Update HiFive1 example project for new board support projects 2018-05-29 15:59:40 -04:00
.gitmodules Remove the dependency over embedded-runtimes. 2017-06-26 18:16:05 +02:00
CONTRIBUTING.md Create a CONTRIBUTING.md 2017-02-22 18:03:18 +01:00
LICENSE Add a LICENSE file and update the README 2016-11-08 20:18:16 +01:00
README.md Add more readme files. 2023-12-06 16:38:32 +02:00

README.md

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