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 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
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.
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 notesDocumentation
- User's Manual - all platforms
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.
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.