1.6 KiB
We understand that there might be some confusion between the two repositories
Ada_Drivers_Library and bb-runtimes. Who does what? What should go where?
This page will try to provide an answer.
Don't hesitate to ask more questions on this subject or suggest improvements to this page.
Ada_Drivers_Library vs bb-runtimes
The run-times (bb-runtimes repository) provide an implementation of Ada
language features as defined by the standard. These features may include
interrupt handling, tasking and time services that are usually provided by what
is called an RTOS in the C/C++ world.
The run-times will need to control a few peripherals to provide those features (interrupt controller, one timer, some CPU registers), but it won't touch the other peripherals (I2C, SPI, GPIOs, Ethernet, etc.).
Ada_Drivers_Library on the other side is a library for firmware development
in Ada. It provides drivers for remaining peripherals on the system as well
drivers for external components and also middleware services. Note that
Ada_Drivers_Library may rely on Ada run-time features but it does not mean
that the run-time has to be from the bb-runtimes repository, there are other
implementation possible depending on the architecture.
The limit between the two projects is the Ada language standard.
Even if for most projects Ada_Drivers_Library and bb-runtimes will be used
together, in the end the two remain independent. You can use the run-times with
your own drivers or bindings to drivers implemented in C. You can also use
Ada_Drivers_Library without the bb-runtimes, for instance on a Raspberry Pi
running Linux or if you use a third-party RTOS.