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.3 - core sweetada-0.3.tar.gz
MD5: 9dfeaa030de1ba3a14d197e2b8d62438
SweetAda 0.3 - RTS sweetada-rts-0.3.tar.gz
MD5: 7f277dbc99235d738a958bd70781eaef
SweetAda 0.3 - LibGCC sweetada-libgcc-0.3.tar.gz
MD5: 5c0c74365f47446964b050d45a17260d

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: b59353ce5b346b4e234b6e47dec59b95
aarch64-sweetada-elf-20201102W.zip
MD5: 6f3d664e5764d7b93f8ac565085347cc
aarch64-sweetada-elf-20201102M.tar.gz
MD5: 4c0be71d7cd684175087773e7d08b41e
ARM arm-sweetada-eabi-20201102L.tar.xz
MD5: 583217a5019aeb8c9d1dec2939109e88
arm-sweetada-eabi-20201102W.zip
MD5: 10786a4415081bca1355ee7058335aae
arm-sweetada-eabi-20201102M.tar.gz
MD5: bef37123cea960f88b3a8219f7eb08b3
AVR avr-sweetada-elf-20201102L.tar.xz
MD5: 7231332b70a7614ab2a2bc57d3817b5c
avr-sweetada-elf-20201102W.zip
MD5: 4ecc1897088e2eb870849274fed0dc0f
avr-sweetada-elf-20201102M.tar.gz
MD5: e4156a48cec9b63f6de452e75111e2b8
i686 i686-sweetada-elf-20201102L.tar.xz
MD5: 804e4f4843992835b089bc96cbb6b309
i686-sweetada-elf-20201102W.zip
MD5: 2cf92479b0d0d2e059cfc59c1a49530a
i686-sweetada-elf-20201102M.tar.gz
MD5: 14d9269bda507165c131cdd2db95f23f
M68k
ColdFire
m68k-sweetada-elf-20201102L.tar.xz
MD5: 8ab94279dbdf804cf93d00f63f6042d8
m68k-sweetada-elf-20201102W.zip
MD5: 29af3ca7875fdfd313f899efdad397af
m68k-sweetada-elf-20201102M.tar.gz
MD5: 29ea58c96b36dc6e70788ce1a55f9f00
MIPS mips-sweetada-elf-20201102L.tar.xz
MD5: e77a85a50b557e9155b07c75c5b36afc
mips-sweetada-elf-20201102W.zip
MD5: 12e83cdc32ed2b6f29cc6629677ad6f2
mips-sweetada-elf-20201102M.tar.gz
MD5: f794c770c04374a460db6edbe4ba0eba
MIPS64 mips64-sweetada-elf-20201102L.tar.xz
MD5: 95e99785c241c8e3a52d3dda11ea97a5
mips64-sweetada-elf-20201102W.zip
MD5: 0c2fd35f43f0109296d51dce5b327be9
mips64-sweetada-elf-20201102M.tar.gz
MD5: d801612a17572a0de2abc0f7c2cfe33b
MicroBlaze microblaze-sweetada-elf-20201102L.tar.xz
MD5: bcd273861b0424449622bed1a608a60a
microblaze-sweetada-elf-20201102W.zip
MD5: 65f72691831f6b9b5bd5db3467338fb2
microblaze-sweetada-elf-20201102M.tar.gz
MD5: 09aec418536d2660ac74a6e2cff89b6c
NiosII nios2-sweetada-elf-20201102L.tar.xz
MD5: 874842f556bd2e475a5c6e70dcbe4b22
nios2-sweetada-elf-20201102W.zip
MD5: 3d3a37888da2f159b1c818cb5c594d4f
nios2-sweetada-elf-20201102M.tar.gz
MD5: 57d7924486444357e703dbbdcc3cbb3a
PowerPC powerpc-sweetada-elf-20201102L.tar.xz
MD5: 517424d3baf8521bd1b81f9924874dfd
powerpc-sweetada-elf-20201102W.zip
MD5: 18e8f13a5ead43902db5e1db75d9a9c9
powerpc-sweetada-elf-20201102M.tar.gz
MD5: 7919f63f7e9d68b24073283279200e4b
RISCV riscv-sweetada-elf-20201102L.tar.xz
MD5: 59d814c747ca3a7c6040eb6a9e218617
riscv-sweetada-elf-20201102W.zip
MD5: fd82f1ae954a9b07a4ce987f3a0117b0
riscv-sweetada-elf-20201102M.tar.gz
MD5: 72e6ce96bf89e4005c8161b93839d2fa
S/390 s390-sweetada-linux-20201102L.tar.xz
MD5: 875d2130b8eac7b4ed08706a2b6779a5
s390-sweetada-linux-20201102W.zip
MD5: 1f135418e920abf487cc05e35addb8b6
s390-sweetada-linux-20201102M.tar.gz
MD5: 9e93345003d20ade33e4049d1ceeb19c
SuperH sh-sweetada-elf-20201102L.tar.xz
MD5: e5173ee29fcd40f4b6dae16de47f7bf0
sh-sweetada-elf-20201102W.zip
MD5: edefe11102ad8b21f67f4a79633d82f2
sh-sweetada-elf-20201102M.tar.gz
MD5: 931e886ef887935aba204552ed57a85e
SH4 sh4le-sweetada-elf-20201102L.tar.xz
MD5: 673b34b8d8d5213bc8431248c25da7a3
sh4le-sweetada-elf-20201102W.zip
MD5: e6e60024d93322cab7381c8c391c1650
sh4le-sweetada-elf-20201102M.tar.gz
MD5: fb4afa326d92488dd79cd5e74137aa84
SPARC sparc-sweetada-elf-20201102L.tar.xz
MD5: a6382840224bb754639315a3ccc32589
sparc-sweetada-elf-20201102W.zip
MD5: 5bf8f2bd0481eb7de609084db8475b54
sparc-sweetada-elf-20201102M.tar.gz
MD5: 0cfea806400bbb578298ce1e4375732d
SPARC64 sparc64-sweetada-elf-20201102L.tar.xz
MD5: a1b01d65bade8bbce3f8abab51664515
sparc64-sweetada-elf-20201102W.zip
MD5: eb7a2d34359803a0ba46d892c659a868
sparc64-sweetada-elf-20201102M.tar.gz
MD5: d3499d4f2fedf5abba921628325f2192
x86-64 x86_64-sweetada-elf-20201102L.tar.xz
MD5: 518920c75f84086e12c1dc29990923c9
x86_64-sweetada-elf-20201102W.zip
MD5: dfbfd89bcd41ae622f1142875c9c5ca5
x86_64-sweetada-elf-20201102M.tar.gz
MD5: af8e93a4ee4a59c3e829628677524e14

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:
SweetAda QEMU for OS/X is currently frozen, latest build is stuck @ 5.1.0. 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. S/390 SweetAda emulation does not use QEMU; for S/390 emulation, you can download the Hercules emulator (possibly together with a X3270 emulator), which is not supplied here since the IOEMU library is not provided for this target, so a standard Hercules executable is fine.
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
S/390 qemu-s390x-20200817L.tar.xz qemu-s390x-20200817W.zip N/A
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.