Overview

Screenshot of IOEMU

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 MIPS® 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:
- is ROMable
- uses a ZFP run-time
- has no dependencies; neither external libraries nor underlying code are needed

Screenshot of debugger

SweetAda has a complete toolchain (assembler, linker, Ada compiler and debugger), and optionally you could even use a machine emulator, which can execute the final output code inside a virtual target. 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®. Anyway, SweetAda toolchains for Windows have an integrated Make suited for a Windows CLI. 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. Insight debugger is also available.

SweetAda comes with high-quality GNU toolchains based on modern official FSF Binutils/GCC/GDB releases, unpatched and compiled with strictly controlled options. The emulators are mainly based on the latest QEMU™ official release, augmented with the IOEMU physical I/O system, which allows software code to interact with a visual environment.

Screenshot of MemecFX12

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)
- Terasic DE10-Lite Nios®II softcore (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.

SweetAda is in a state of steady growth. BSPs, device drivers, a TLSF memory allocator, TCP/IP basic functionalities, as well as low-level CAN primitives are under heavy development. More target machines and additional feautures/modules such as intrinsic floating point support and expanded SFP runtimes are scheduled in future releases, as well as language tools and system utilities, like ASIS.

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.

Release notes

Release notes

Documentation

Downloads

SweetAda source code

Uncompress the RTS package in the same "rts" directory of the SweetAda top-level hierarchy. The LibGCC support files are assembler sources needed to make the code completely self-consistent (this is required for ARM, AVR, M68k, SH, SH4 and SPARC targets). Uncompress the package in the same "cpus" directory of the SweetAda top-level hierarchy. If you want to link with the standard LibGCC library the package can be ignored.
version all systems
SweetAda 0.2 - core sweetada-0.2.tar.gz
MD5: c56797dae746d856ede96f1d603f1cda
SweetAda 0.2 - RTS sweetada-rts-0.2.tar.gz
MD5: 5627452b82fd513381a36a6737ada3ad
SweetAda 0.2 - LibGCC sweetada-libgcc-0.2.tar.gz
MD5: 722ebf8863a0b0de2daaba29d03ee413

Toolchains - build 20201102 - Binutils 2.35, GCC 10.2.0, GDB 10.1

target CPU Linux 64-bit Windows 64-bit OS X 64-bit
AArch64 aarch64-sweetada-elf-20201102L.tar.xz
MD5: 81c1fcbd3f913246a6da33a00f29278a
aarch64-sweetada-elf-20201102W.zip
MD5: 030de3f28e55b6f6ab023baabdc6d223
aarch64-sweetada-elf-20201102M.tar.gz
MD5: d82d97f1b794868eb37af5d747aae460
ARM arm-sweetada-eabi-20201102L.tar.xz
MD5: 34b88aae724e159c19d60b086cd393f2
arm-sweetada-eabi-20201102W.zip
MD5: 3fea1cb39ac3803d279a6a0cb0d62909
arm-sweetada-eabi-20201102M.tar.gz
MD5: 7545283b33e0993c2b24e047b2fcaf9a
AVR avr-sweetada-elf-20201102L.tar.xz
MD5: 7b898c09928af5a4a310ed798269d560
avr-sweetada-elf-20201102W.zip
MD5: b6a4224b981328d6ec996178b15eb484
avr-sweetada-elf-20201102M.tar.gz
MD5: 20cea3c6d92d24e7a90babce2732e71c
i686 i686-sweetada-elf-20201102L.tar.xz
MD5: 627706b8da7be2e32020263774517834
i686-sweetada-elf-20201102W.zip
MD5: 0ec7f4957be1697701414ca97d2a35b9
i686-sweetada-elf-20201102M.tar.gz
MD5: cdd4cc9ab0ccd4ac86cfa3e7447934a9
M68k
ColdFire
m68k-sweetada-elf-20201102L.tar.xz
MD5: 9bfcf07458b758ed8437b4b3fb62ed7b
m68k-sweetada-elf-20201102W.zip
MD5: 29ee7f8ed296e536c9c299575ccd053f
m68k-sweetada-elf-20201102M.tar.gz
MD5: 9b9edb74070b60dd6b535dcceab5c21d
MIPS mips-sweetada-elf-20201102L.tar.xz
MD5: e13cde9e101637d0700c71370b4edf11
mips-sweetada-elf-20201102W.zip
MD5: f0932d6ab41946a58b943755386d7dfc
mips-sweetada-elf-20201102M.tar.gz
MD5: b85aa9ebd80e029cdd5947b72e80e80b
MIPS64 mips64-sweetada-elf-20201102L.tar.xz
MD5: 5f059f527b295dcc93eaed758ef6716a
mips64-sweetada-elf-20201102W.zip
MD5: c16ba4ed9b400dd9eeb80dd436e5a27a
mips64-sweetada-elf-20201102M.tar.gz
MD5: bccf8475507c0fcb6f3a39334e5ab299
MicroBlaze microblaze-sweetada-elf-20201102L.tar.xz
MD5: 57115a2cdb5e847a9e28b320a50d3364
microblaze-sweetada-elf-20201102W.zip
MD5: 67eafdc44a15b08781fab3c0c8657b8b
microblaze-sweetada-elf-20201102M.tar.gz
MD5: 3e0418987152555dbdbcf84f13c6abea
NiosII nios2-sweetada-elf-20201102L.tar.xz
MD5: 82f489b9e57d1e1afc089ed806cee560
nios2-sweetada-elf-20201102W.zip
MD5: f782f98a7b42402d53172886dcb0628d
nios2-sweetada-elf-20201102M.tar.gz
MD5: 7e1b069e4ada8597263dbd50782872bd
PowerPC powerpc-sweetada-elf-20201102L.tar.xz
MD5: a3709d33613abd6aa713a86e5fd86e35
powerpc-sweetada-elf-20201102W.zip
MD5: 52ce864c01af2f3e4f5717a87aa89235
powerpc-sweetada-elf-20201102M.tar.gz
MD5: 306a71227a56e357d2392fcbf91ed6a0
RISCV riscv-sweetada-elf-20201102L.tar.xz
MD5: 8a50af3497e5aba1263779ad73a682d6
riscv-sweetada-elf-20201102W.zip
MD5: b1dc2f63088a807bccd834a0964e393f
riscv-sweetada-elf-20201102M.tar.gz
MD5: 5904db5f548755f7b221c8c6ee61e1c5
S/390 s390-sweetada-linux-20201102L.tar.xz
MD5: 9142ccbe083728db54daefe422434806
s390-sweetada-linux-20201102W.zip
MD5: ca7738753dc02e5bc7590b2bcb125b0e
s390-sweetada-linux-20201102M.tar.gz
MD5: dbf6c50f0fe73eff49b8af49d2dbb4b7
SuperH sh-sweetada-elf-20201102L.tar.xz
MD5: 494c7595e2efd047481671751a7ad2b1
sh-sweetada-elf-20201102W.zip
MD5: 9317d46be561ee2cba294088019b260c
sh-sweetada-elf-20201102M.tar.gz
MD5: c457403e7c96a55e9a8dfbf279c6bd5d
SH4 sh4le-sweetada-elf-20201102L.tar.xz
MD5: 9a5bbb0ca2661a3b2e729c21ad65f0b0
sh4le-sweetada-elf-20201102W.zip
MD5: e95c7b873e3bd4393cc07fc208928c8a
sh4le-sweetada-elf-20201102M.tar.gz
MD5: 97d6ba81249ce7770870ee2306cf2568
SPARC sparc-sweetada-elf-20201102L.tar.xz
MD5: 2266783b6ef71181ca482bc70c0b953b
sparc-sweetada-elf-20201102W.zip
MD5: bbd26f3d8dfabc3e7a7f1c0fa9dd56bb
sparc-sweetada-elf-20201102M.tar.gz
MD5: ee51c5de4089219fd18b390ea7c3add2
SPARC64 sparc64-sweetada-elf-20201102L.tar.xz
MD5: 91850a9d9b021bc9f84ce56efb9db10d
sparc64-sweetada-elf-20201102W.zip
MD5: 54bbd52702fdfca2a4858479338a1bbf
sparc64-sweetada-elf-20201102M.tar.gz
MD5: 29e9894d88433bb9a169d919d51b20e1
x86-64 x86_64-sweetada-elf-20201102L.tar.xz
MD5: 81003158c1e699f9051bef63671e81d5
x86_64-sweetada-elf-20201102W.zip
MD5: 50f1980041fc904d605f7bd231ad492c
x86_64-sweetada-elf-20201102M.tar.gz
MD5: 9a4e52671ee76b3d1860b34e2d3e5fbf

GPRbuild support - build 20200417

Note that GPRbuild is an optional component of the toolchain.
Linux 64-bit Windows 64-bit OS X 64-bit
gprbuild-20200417L.tar.xz
MD5: 80d633fa4b0765ef31600ed58ff0147d
gprbuild-20200417W.zip
MD5: c2010fe5dde3119a7f5e109aca56c94e
gprbuild-20200417M.tar.gz
MD5: a30d54a4b5bbb51da819a5db97b662b8

Insight debugger - build 20200417 - GDB 9.1

Note:
Insight requires Tcl 8.6.10, Tk 8.6.10, iTcl 4.2.0, iTk 4.1.0 and iWidgets 4.1.1.
Windows packages have libraries included, for Linux you should refer to your distribution package manager in order to download them.
target CPU Linux 64-bit Windows 64-bit OS X 64-bit
AArch64 insight-aarch64-sweetada-elf-20200417L.tar.xz
MD5: 40cc145c248567a5d804204abcaa45b8
insight-aarch64-sweetada-elf-20200417W.zip
MD5: 63e08cc88eceaed54f20ff48ec18bacf
N/A
ARM insight-arm-sweetada-eabi-20200417L.tar.xz
MD5: e62ce37dfc4787b6cd3a3a430b51d3b9
insight-arm-sweetada-eabi-20200417W.zip
MD5: cc763351bed5893995cdc2bf5acb0a0c
N/A
AVR insight-avr-sweetada-elf-20200417L.tar.xz
MD5: 569c26c849c7fae1db8a1e14d8b135a8
insight-avr-sweetada-elf-20200417W.zip
MD5: 00ccd9fa850b15db26da5acedf07798a
N/A
i686 insight-i686-sweetada-elf-20200417L.tar.xz
MD5: f8a45fb0cc43716108d91d66d07fc5f8
insight-i686-sweetada-elf-20200417W.zip
MD5: 685090ae861ab32b1680d9dee1e4922f
N/A
M68k
ColdFire
insight-m68k-sweetada-elf-20200417L.tar.xz
MD5: 79c99493152c7f455e58dd7d218aa5c8
insight-m68k-sweetada-elf-20200417W.zip
MD5: 002205830b78981bc0cc51afba63218f
N/A
MIPS insight-mips-sweetada-elf-20200417L.tar.xz
MD5: 0a674a45b3a1a6c7e47ad821ae2ce1b5
insight-mips-sweetada-elf-20200417W.zip
MD5: 10d0133d02653bb4d2389025e0072dc1
N/A
MIPS64 insight-mips64-sweetada-elf-20200417L.tar.xz
MD5: db54ca8b286eb06b279ca19d9f1b8af5
insight-mips64-sweetada-elf-20200417W.zip
MD5: f026e45badde98554482f338abb6c425
N/A
MicroBlaze insight-microblaze-sweetada-elf-20200417L.tar.xz
MD5: 8d34ee9e7553b982ade1af4446ce8980
insight-microblaze-sweetada-elf-20200417W.zip
MD5: ea97b5bff9b042094ae1b3d6024098b7
N/A
NiosII insight-nios2-sweetada-elf-20200417L.tar.xz
MD5: 2163f2cfdbd37f19024d5c84321a7599
insight-nios2-sweetada-elf-20200417W.zip
MD5: b6679f98a071b912d6983628ad06b741
N/A
PowerPC insight-powerpc-sweetada-elf-20200417L.tar.xz
MD5: a1ad3c30f1dacb0d22e9e35372ec2b9c
insight-powerpc-sweetada-elf-20200417W.zip
MD5: 4b823f6a0549fb7a222dc8c4b96e0467
N/A
RISCV insight-riscv-sweetada-elf-20200417L.tar.xz
MD5: 841d413f6251e88918a3e37a1742acda
insight-riscv-sweetada-elf-20200417W.zip
MD5: 627516567c9ae068f6f81d3118d1a4a2
N/A
S/390 insight-s390-sweetada-linux-20200417L.tar.xz
MD5: eee313dab83f71c72058c2285cb9a8aa
insight-s390-sweetada-linux-20200417W.zip
MD5: 45462e30c62a8aaf2f9ec6055a7f1fc1
N/A
SuperH insight-sh-sweetada-elf-20200417L.tar.xz
MD5: 5f02057712519b997368272a0f12366f
insight-sh-sweetada-elf-20200417W.zip
MD5: 916dc927532adab8cd06ff1a3f69b8b7
N/A
SH4 insight-sh4le-sweetada-elf-20200417L.tar.xz
MD5: 7ec0c7bb2fe9dc652204b384997b57b4
insight-sh4le-sweetada-elf-20200417W.zip
MD5: 0d248bafc12b86e2571edb0b8714362a
N/A
SPARC insight-sparc-sweetada-elf-20200417L.tar.xz
MD5: cfc2ffd62c775946489ef45774773bd8
insight-sparc-sweetada-elf-20200417W.zip
MD5: 5af3341202da44f87cf56178aacabf92
N/A
SPARC64 insight-sparc64-sweetada-elf-20200417L.tar.xz
MD5: 63cfb6214517e094b6a155c8a4da7472
insight-sparc64-sweetada-elf-20200417W.zip
MD5: 7e8e180ff2ab382c307a8efc34fd18db
N/A
x86-64 insight-x86_64-sweetada-elf-20200417L.tar.xz
MD5: e4ded10ac59469cb96b3c829c4c2abe8
insight-x86_64-sweetada-elf-20200417W.zip
MD5: 48295c0ac35f37e9d83d5ade62e56ff1
N/A

Emulators - QEMU 5.1.0 - FS-UAE - GXemul

Note:
Linux and Windows versions of QEMU are linked against SDL2 library (previously the Linux version was linked against GTK+3). The library is included only in Windows packages. FS-UAE requires libmpeg2 and OpenAL libraries. For S/390 emulation, you can download and build the Hercules emulator (possibly together with a X3270 emulator), which is not supplied here since the IOEMU library is not provided for this target.
target CPU Linux 64-bit Windows 64-bit OS X 64-bit
AArch64 qemu-aarch64-20200817L.tar.xz qemu-aarch64-20200817W.zip qemu-aarch64-20200817M.tar.gz
ARM qemu-arm-20200817L.tar.xz qemu-arm-20200817W.zip qemu-arm-20200817M.tar.gz
AVR qemu-avr-20200817L.tar.xz qemu-avr-20200817W.zip qemu-avr-20200817M.tar.gz
i686 qemu-i386-20200817L.tar.xz qemu-i386-20200817W.zip qemu-i386-20200817M.tar.gz
M68k/ColdFire qemu-m68k-20200817L.tar.xz qemu-m68k-20200817W.zip qemu-m68k-20200817M.tar.gz
M68k fs-uae.tar.xz N/A N/A
MIPS qemu-mips-20200817L.tar.xz qemu-mips-20200817W.zip qemu-mips-20200817M.tar.gz
MIPS64 qemu-mips64-20200817L.tar.xz qemu-mips64-20200817W.zip qemu-mips64-20200817M.tar.gz
MicroBlaze qemu-microblaze-20200817L.tar.xz qemu-microblaze-20200817W.zip qemu-microblaze-20200817M.tar.gz
NiosII qemu-nios2-20200817L.tar.xz qemu-nios2-20200817W.zip qemu-nios2-20200817M.tar.gz
PowerPC qemu-ppc-20200817L.tar.xz qemu-ppc-20200817W.zip qemu-ppc-20200817M.tar.gz
PowerPC64 qemu-ppc64-20200817L.tar.xz qemu-ppc64-20200817W.zip qemu-ppc64-20200817M.tar.gz
RISCV32 qemu-riscv32-20200817L.tar.xz qemu-riscv32-20200817W.zip qemu-riscv32-20200817M.tar.gz
RISCV64 qemu-riscv64-20200817L.tar.xz qemu-riscv64-20200817W.zip qemu-riscv64-20200817M.tar.gz
SH4 gxemul.tar.xz N/A N/A
SPARC qemu-sparc-20200817L.tar.xz qemu-sparc-20200817W.zip qemu-sparc-20200817M.tar.gz
x86-64 qemu-x86_64-20200817L.tar.xz qemu-x86_64-20200817W.zip qemu-x86_64-20200817M.tar.gz

Additional downloads

Note:
The Tcl/Tk package should be installed in the same directory where SweetAda toolchains exist. Otherwise, specify the path to the tclsh executable in the top-level configuration.in.
Linux 64-bit Windows 64-bit OS X 64-bit
N/A Tcl/Tk 8.6.10 N/A

Forum

Note: SweetAda forum is temporarily shutted down due to excessive hacker attacks. Sorry.

Contacts

My name is Gabriele Galeotti; I work as a software engineer. You can reach me at < gabriele dot galeotti at sweetada dot org >. Feel free to contact me for everything (chances are I will respond from another email account due to ISP spam restrictions on dynamic not-business-class websites).

POSIX is a registered trademark of the IEEE. Linux is a registered trademark of Linus Torvalds. Windows is a registered trademark of Microsoft Corp. OS X is a registered trademark of Apple Inc. Cygwin is a registered trademark of Red Hat, Inc. ARM is a registered trademark of ARM Ltd. ColdFire is a registered trademark of Motorola, Inc. MIPS is a registered trademark of MIPS Technologies, Inc. MicroBlaze and Virtex are trademarks and/or registered trademarks of Xilinx, Inc. Nios is a registered trademark of Altera Corp. PowerPC is a registered trademark of IBM Corp. SPARC is a registered trademark of SPARC International, Inc. Raspberry Pi is a trademark of the Raspberry Pi Foundation. IBM and System/390 are registered trademarks of IBM Corp. QEMU is a trademark of Fabrice Bellard. Other trademarks and trade names are properties of their respective owners.