A Minimal kernel for the Arduino Due
Find a file
Felix Kopp 589e9330da
sched: properly disable the watchdog
I have no idea what the FUCK the Engineers at ARM were thinking when
they decided to disable EVERY SINGLE FUCKING CPU COMPONENT on system
reset, except the FUCKING WATCHDOG.  But this change will prevent the
system from randomly firing a watchdog reset.
2020-12-08 00:08:00 +01:00
.vscode Fix vscode profile 2020-06-17 20:40:48 +02:00
arch sched: properly disable the watchdog 2020-12-08 00:08:00 +01:00
include sched: properly disable the watchdog 2020-12-08 00:08:00 +01:00
init sys: init MCK early so that it fails even faster 2020-12-01 23:36:31 +01:00
kernel sched: properly disable the watchdog 2020-12-08 00:08:00 +01:00
lib malloc: make malloc/free atomic 2020-12-02 00:00:05 +01:00
.editorconfig Add some compiler flag macros for convenience 2020-06-12 03:43:11 +02:00
.gitignore Add stupid string.h implementation 2020-06-12 00:01:15 +02:00
LICENSE Initial commit 2020-06-07 16:49:03 +02:00
Makefile Tidy up 2020-06-14 05:51:01 +02:00
README.md Ardix is ARM exclusive (at least for now) 2020-06-12 00:36:13 +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.

License

Ardix is distributed under the terms of the BSD-3-Clause ("New" or "Revised") license. See the LICENSE file for details.

Compiling

Prerequisites

  • The GNU toolchain, including
    • arm-gcc
    • arm-ld
    • arm-objcopy
  • GNU make
  • 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

Right now, you have to manually define environment variables:

  • ARM_CC: Full path to arm-none-eabi-gcc. If unset, we will search for it in your PATH.
  • ARM_LD: Full path to arm-none-eabi-ld. If unset, we will search for it in your PATH.
  • ARM_OBJCOPY: Full path to arm-none-eabi-objcopy. If unset, we will search for it in your PATH.
  • ARCH: Codename for the target architecture. This is mandatory. The following architectures are currently supported:
    • at91sam3x8e (Arduino Due)
  • EXTRA_CFLAGS: Any additional arguments that should be passed to the compiler.
  • EXTRA_LDFLAGS: Any additional arguments that should be passed to the linker.

Build

To build the EEPROM image, execute the following command:

# Replace <target> with one of the target architectures from the list above
ARCH='<target>' make ardix.bin

This will create the ardix.bin file, 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> ardix.bin

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