Does this project spark your interest?

Become a member to follow this project and don't miss any updates

Antares: Linux kernel-like buildsystem for uCs

An all-in-one buildsystem to rule all microcontrollers

2.0k 5 49 38

This project was created on 06/14/2014 and last updated 2 months ago.

ANTARES is an all-in-one buildsystem, aimed at baremetal targets. It is designed to be portable across a lot of MCUs and adding another MCU is trivial. It uses Kconfig as seen in linux kernel and a set of homebrew Makefiles designed to ease the development process of complex projects. Antares includes a bunch of cross-mcu library code to get you started quickly and maintain a single code base portable across a wide range of MCUs.
This page will only feature a brief description of the antares project and a link to github (see the links section on you left). No fancy buildlogs, hardware pictures,etc, since this is a purely software project made to power YOUR projects.

To save your time:
* Host OS supported: Linux, *BSD, Mac OS X
* Compilers supported: SDCC, GCC
* Target MCUs supported: 8051 (AT89 and STC) , AVR, MSP430, PIC32, ARM/STM32 (F1X and F4X families).

If you use antares for your own project, feel free to post the links in the comments.

Please note, that antares is NOT very newbie-friendly (and not documented as good as arduino is) and is aimed at more experienced developers that know and love the commandline. 

Although antares allows you to blink a LED fast and get serial output mostly instantly, its true potential can be unleashed on bigger projects where compile-time configuration gets quite complex. The ability to quickly switch the target architecture, while maintaining the common code base makes switching MCUs for your the next big revision of your project a snap. 

Antares does not come with any 'official' development boards - feel free to take any hardware you have around and start with the 'closest' example from examples repository. If the architecture is supported getting stuff to work should be fast and fun. And yes, and did I say that all your favorite arduino, maple, stm32-discovery (f1x and f4x alike) boards are supported?

Project logs
  • Youtube video posted, screencasts upcoming

    2 months ago • 0 comments

    I completely forgotten abot that youtube video I had to make for HaD prize. Well, luckily I did make it at the very last moment, despite kdenlive crashing all over the place. 

    Looks super-messy and I hate how my voice sounds through the old shitty mic, but nevertheless - see the links section for the link to it. 

    I will be also posting a series of screencasts showing off antares as I progress towards the 0.2 release.

  • 8051 (and SDCC in general) just got ANTARES_INIT_* support

    4 months ago • 0 comments

    In the experimental branch I've just implemented the support for ANTARES_INIT_LOW/ANTARES_INIT_HIGH/ANTARES_APP macros and initcall's. Don't ask how, it's an utter hackery inside and you still have to supply your own main() and call do_antares_startup() there, but it's still better than nothing and allow for more library portability.

    I've also fixed nRF24 library so it now compiles by SDCC, so rf24boot can now be ported to 8051 and other SDCC-based architectures. The bad thing is, that since SDCC can't ditch unused fucntions rf24 library uses up ~12KiBs of flash space. 14 If you disable hacky size optimisations. 

  • What's going on in antares

    4 months ago • 0 comments

    As antares slowly progresses toward the next planned release, I decided to post some info on what to expect in the next release, focusing on stuff that will allow your code to be truly portable along a wide set of architectures: 

    earlyconsole - A way to do early (before interrupts are even enabled) debugging with zero initalization. You just set in menuconfig what serial/softserial/etc. interface you want to use, and use printk(), no matter what architecture you are on. Or disable it and antares will strip all the printk's and reduce the code size. It already there and working in master, so you can check it out already today.

    console - A proper 'console' subsystem, that will take care of printk's in later stages. It will feature a simple API and glue code to work with newlib, avr-libc, whatsoever. 

    atomics - Cross-mcu macros for atomic operations have already been added for AVR and STM32, and will soon be there for all other architectures. 

    rf24 - The nrf24l01 library has been totally refactored in the past month and now reminds very little of what maniacbug's arduino library looked like. Besides a pure C port, size optimisations and a ton of fixes it now features:   

    * Major size and memory usage optimizations

    * 'bulk' transfer mode that uses nrf24l01 hardware TX FIFO as a buffer, delivering maximum possible transfer rate. 

    * Retransfer without the need to transfer the payload to nrf24 again (No more duplicate packets on RX side)

    * A lot of other bugfixes and speed improvements

    Some things will be polished over time, as a testsuite arrives, but it is already there and usable in master

    spisd - SD-over-SPI driver. Now with optional CRC support! Already available in master.

    Improved pic32 support - pic32 and their xc32 compiler (which is actually gcc for mips with... *surprise* a license manager) are a major pain in the ass. 8051 is the only thing that's worse, due to sdcc not supporting the __attribute__(("section")) magic required by ANTARES_INIT_LOW/HIGH macro magic. I hope to get the ld script generation ready ASAP (So far we DO need a ld script if we want to build a project for avrdude-compatible bootloaders, as seen in chipkit uno/max)

    batch build and config inheritance - The hard part is to make it easy to use. The idea is to allow you to batch-build several configurations of your project at once. This 

    STM32 USB Stack - webconn started some experiments with STM32 USB stack. Since ST's code for that is way beyond garbage we want to create a portable usb device stack that will feature vusb compatibility layer and will be portable (stm32/pic32/others). We're not sure we can make it into the next release, since USB Specs are a very nice example of what 'over-engineering' is. But we're working on that!

    FPGA target  - parts of my Ph.D. work is coming in antares. In other words, soon you will be able to use antares to manage an FPGA target, run tests, compile VPI if needed. Yes, and you'll have all the fancy kconfig stuff available for verilog HDL! This target will be soon available, but still heavily experimental and mostly targets Xilinx FPGAs and xst for synthesis and iverilog for simulation. 

    Stay tuned! 

    P.S. If you want me to post/explain some details about antares, or maybe make a screencast explainint things you didn't get from the first read - feel free to write in the comments.

View all 4 project logs

Build instructions
  • 1

    Install dependencies:  git, GNU/make, gcc, flex, bison, gperf

    Debian/ubuntu: sudo apt-get install build-essential git flex bison gperf

    Arch Linux: sudo pacman -S git flex bison gperf

    OS X: brew install coreutils git make

  • 2

    Compile and install kconfig-frontends

    Grab the latest tarball,


    cd kconfig-frontends

    ./configure --prefix=/usr


    sudo make install

  • 3

    Check out the latest antares master to your home directrory:

    git clone git:// ~/.antares

See all instructions


David Bender wrote 3 months ago null point

Are there any plans to support the Kinetis Freedom boards?

Are you sure? [yes] / [no]

Necromant wrote 2 months ago null point

I have no hardware to test/support them right now, but patches are always welcome.
Since kinetis is are cortex ARMs, adding some basic support for them won't be very hard. I do have stellaris (evalbot) on my TODO list, though.
If you want to do it yourself - see src/arch/arm/stm32 as a reference, the process is very straightforward:
* Add src/arch/arm/kinetis/ with all the stuff you need and link it into src/arch/arm/
* Add all kconfig stuff to src/arch/arm/kinetis/kcnf.
* Create an src/arch/arm/kinetis/Makefile and add periph libraries and startup code.
* Have a look at src/arch/arm/include/antares.h and see what you need to do with ld script/ assembly startup to make ANTARES_INIT_ work. This might be tricky, drop me an email if you get stuck.
* Add all the periph libraries to src/arch/arm/kinetis/ and edit Makefile to build them (OPTIONAL)
* See src/lib/console/ and add earlycon driver to get debugging working (OPTIONAL)
* Submit a patch

So far my top priority stuff to do:
* Finish portable ANTARES_ATOMIC_* macros, so that libraries can use atomics _portably_ when they need it.
* Some more polishing in the buildsystem (mainly fix the broken ARCH_FEATURES)
* Polish and push Neuromatrix DSP port.
* Unit-testing framework
* Config inheritance, multi-build, etc...
* Verilog/FPGA mode that is still being implemented. (Xilinx commandline toos are really weird)
* Finally record a screencast for HaD prize.

Idea of adding a web-interface kconfig/build interface has also been flying around for a while, but I'm not really sure I'll ever have the time to do it (It's all a hobby project after all).

Are you sure? [yes] / [no]

cruz.monrreal wrote 4 months ago null point

"Why not just stick to Arduino?
Personal reasons. It's unportable, ugly, very little hardware is actually supported. Most tasty chips are NOT supported at all."

OH. FUCK. YES! I'll be keeping a close eye on this. My system of choice is Arch Linux/vim. If I wasn't currently about to start a hardware project of my own that I've been wanting to work on for a while, I would so jump on this.

Best of luck!

Are you sure? [yes] / [no]

Adam Fabio wrote 4 months ago null point

As an old school program, UV erase, reprogram guy - this sounds great! I'd love to see a simple setup for my microcontrollers similar to the one I've come to know and love for setting up embedded Linux kernels. Thanks for entering Antares in The Hackaday Prize!
Try to keep the updates flowing, the community judging starts soon!

Are you sure? [yes] / [no]

Necromant wrote 4 months ago null point

Thanks, I hope you'll like antares once give it a try for a few projects. I feel realistic about the hackaday prize and pretty much expect most of the crowd to ignore antares, mostly because it's way not as newbie friendly as arduino is. But if it attracts a bunch of old-school hardcore kernel devs that will like it, use it and send patches and bug reports - this will all be well worth it!

Are you sure? [yes] / [no]

Similar projects