Overview
Welcome to SweetAda.
SweetAda is a lightweight development framework whose purpose is the implementation of Ada-based software systems.
The code produced by SweetAda is able to run on a wide range of machines, from ARM® embedded boards up to x86-64-class machines, as well as RISC-V machines and Virtex®/Spartan® PowerPC®/MicroBlaze® FPGAs. It could theoretically run even on System/390® IBM® mainframes (indeed it runs on the Hercules emulator). SweetAda is not an operating system, however it includes a set of both low- and high-level primitives and kernel services, like memory management, PCI bus handling, FAT mass-storage handling, which could be used as building blocks in the construction of complex software-controlled devices.
SweetAda has some distinctive characteristics, like:
- works with standard GNU FSF cross-toolchains
- is ROMable
- uses a ZFP/SFP run-time
- has no dependencies; neither external libraries nor underlying code are needed
In order to use SweetAda, a decent POSIX® environment with a Bash shell and GNU Make are required. For a Linux® workstation this is quite standard, while for a Windows® machine you can download and install either MSYS2 (preferred) or Cygwin®. However, with the simple aid of Make and some basic utilities, SweetAda can be usable even in a standard "cmd"-like shell environment.
Being completely makefile- and script- driven, SweetAda is completely configurable and has many hooks which allow an easy integration in a GUI environment such as, e.g., Eclipse, KDE Kate or Visual Studio Code.
As an option, SweetAda could be used with the QEMU™ emulator augmented with IOEMU physical I/O system, which allows software code to interact with a visual environment.
To make SweetAda generic and, at the same time, reliable, it is regularly tested against an heterogeneous set of machines which are able to successfully execute the system code, e.g.:
- PC-style PIIX3/PIIX4 motherboards (ROM-boot)
- DECstation 5000/133 MIPS R3000 (ROM-boot)
- Memec FX12 Virtex-4 PPC405 (JTAG-boot)
- DigiNS7520 board ARM7TDMI (JTAG-boot)
- SiFive® HiFive1 (JTAG-boot)
- MVME1600-011 PPC603 VME board (JTAG-boot)
- Force SPARC®/CPU-3CE VME board (ROM-boot)
- M5235BCC ColdFire development board (ROM-boot)
- SPARCstation™ 5 (ROM-boot)
- Spartan 3E MicroBlaze softcore (JTAG-boot)
- Raspberry Pi™ 3 ARMv8 (microSD-boot)
The SweetAda software code is compiled by a build machinery which enforces a very high severity level. Usefulness, simplicity and expandability rather than extreme or obscure optimizations are the key features behind the project. Nevertheless, SweetAda grants the possibility of employ appropriate customizations, down to machine code level, to satisfy specific needs.
Please note that the platform-specific code included in SweetAda is given as an example. The emphasis of SweetAda is not about operating system design, but rather on exploiting the Ada language everywhere.
SweetAda core is distributed under the terms of the MIT license, other software parts are under GCC RLE 3.1/GPL 3.
SweetAda is a FOSDEM 2022 project:
https://fosdem.org/2022/schedule/event/ada_sweetada/
Release notes
Release notesDocumentation
Updated (but still incomplete) documentation is found in HTML format in the
Downloads
SweetAda is a GitHub project: https://github.com/gabriele-galeotti/SweetAdaSweetAda source code
version | all systems |
---|---|
SweetAda 0.10 | SweetAda-0.10.tar.gz MD5: 4ad505ef269fb0921a3f8f5fdd6b08de |