A Minimal kernel for the Arduino Due
Go to file
anna e86ef2acbd
fix atomics (finally)
2022-10-12 13:53:46 +02:00
.vscode vscode: fix debug config file location 2021-08-10 22:09:40 +02:00
arch fix atomics (finally) 2022-10-12 13:53:46 +02:00
contrib arch: use CMSIS after all 2021-08-07 14:30:09 +02:00
include fix atomics (finally) 2022-10-12 13:53:46 +02:00
init initd: implement simple test init daemon 2021-08-12 19:11:26 +02:00
kernel fix atomics (finally) 2022-10-12 13:53:46 +02:00
lib fix remaining compiler warnings 2022-09-26 13:03:56 +02:00
.editorconfig Add some compiler flag macros for convenience 2020-06-12 03:43:11 +02:00
.gitignore enable debug features by default if DEBUG is on 2022-10-10 08:20:34 +02:00
.gitmodules arch: use CMSIS after all 2021-08-07 14:30:09 +02:00
CMakeLists.txt initd: implement simple test init daemon 2021-08-12 19:11:26 +02:00
LICENSE kiss capitalism goodbye for good 2021-05-10 16:19:38 +02:00
README.md update placeholder name in comment 2022-09-26 13:06:19 +02:00
options.cmake enable debug features by default if DEBUG is on 2022-10-10 08:20:34 +02:00


The Ardix Kernel

This is the source tree of Ardix, a microkernel for various Arduino boards that implements some core concepts of the Unix philosophy. Please note that this project is not affiliated with or endorsed by Arduino s.r.l. in any way. Only ARM-based boards are supported at the moment (and probably ever will be, because AVR MCUs just don't have enough horsepower).


Copyright (c) 2020, 2021 Felix Kopp owo@fef.moe.

Ardix is non-violent software: you may only use, redistribute, and/or modify it under the terms of the CNPLv6+ as found in the LICENSE file in the source code root directory or at https://git.pixie.town/thufie/CNPL.

Ardix comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. See the CNPLv6+ for details.



  • The GNU toolchain, including
    • arm-gcc
    • arm-ld
    • arm-objcopy
  • CMake >= 3.14
  • A programmer (bossac recommended)
  • A Unix-like shell (sorry Microsoft lackeys, you can use the Windows Subsystem for Linux for compiling but probably not for flashing)


Configuration is done with the standard CMake config system. See options.cmake for a full list of available configuration variables. In the simplest case, you will only need to specify the target architecture (ARCH) to get a basic build. The following architectures are supported:

  • at91sam3x8e (Arduino Due)


To build the EEPROM image, execute the following command. Pass any other configuration options you want to set to the first command or use cmake-gui(1).

# Replace <arch> with one of the target architectures from the list above
# This will default to at91sam3x8e (Arduino Due)
cmake -DARCH=<arch> -B build -S .
cmake --build build

This will create ardix.bin in the build directory, which can be passed to bossac for flashing. If you are using an Arduino DUE (at91sam3x8e), make sure to connect the USB cable to the programmer port (the one closer to the power jack).

# Replace <tty> with the name of the tty device in /dev
# that is connected to your Arduino
bossac -e -w -v -b -a --port=<tty> build/ardix.bin

Please refer to bossac --help for more information on how to use it.