2020-06-07 16:49:03 +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
|
2020-06-12 00:36:13 +02:00
|
|
|
by Arduino s.r.l. in any way. Only ARM-based boards are supported at the moment.
|
2020-06-07 16:49:03 +02:00
|
|
|
|
|
|
|
## License
|
|
|
|
|
2021-02-28 02:18:39 +01:00
|
|
|
Copyright (c) 2020, 2021 Felix Kopp <owo@fef.moe>.
|
|
|
|
|
|
|
|
Ardix is free software: you can redistribute it and/or modify it
|
|
|
|
under the terms of the GNU General Public License as published by
|
|
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
|
|
(at your option) any later version.
|
|
|
|
|
|
|
|
Ardix is distributed in the hope that it will be useful, but
|
|
|
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
|
|
See the GNU General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
|
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
2020-06-07 16:49:03 +02:00
|
|
|
|
|
|
|
## Compiling
|
|
|
|
|
|
|
|
### Prerequisites
|
|
|
|
|
2020-06-12 00:36:13 +02:00
|
|
|
- The GNU toolchain, including
|
|
|
|
* `arm-gcc`
|
|
|
|
* `arm-ld`
|
|
|
|
* `arm-objcopy`
|
2020-06-07 16:49:03 +02:00
|
|
|
- GNU `make`
|
2020-06-12 00:36:13 +02:00
|
|
|
- A programmer (`bossac` recommended)
|
2020-06-07 16:49:03 +02:00
|
|
|
- A Unix-like shell (sorry Microsoft lackeys, you can use the Windows Subsystem for Linux for
|
2020-06-12 00:36:13 +02:00
|
|
|
compiling but probably not for flashing)
|
2020-06-07 16:49:03 +02:00
|
|
|
|
|
|
|
### Configuration
|
|
|
|
|
|
|
|
Right now, you have to manually define environment variables:
|
|
|
|
|
2020-06-12 00:36:13 +02:00
|
|
|
- `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.
|
2020-06-07 16:49:03 +02:00
|
|
|
- `ARCH`: Codename for the target architecture. This is mandatory.
|
|
|
|
The following architectures are currently supported:
|
2020-06-10 16:51:55 +02:00
|
|
|
* `at91sam3x8e` (Arduino Due)
|
2020-06-07 16:49:03 +02:00
|
|
|
- `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
|
|
|
|
|
2020-06-12 00:36:13 +02:00
|
|
|
To build the EEPROM image, execute the following command:
|
2020-06-07 16:49:03 +02:00
|
|
|
|
|
|
|
```shell
|
|
|
|
# Replace <target> with one of the target architectures from the list above
|
2020-06-12 00:36:13 +02:00
|
|
|
ARCH='<target>' make ardix.bin
|
2020-06-07 16:49:03 +02:00
|
|
|
```
|
|
|
|
|
2020-06-12 00:36:13 +02:00
|
|
|
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).
|
2020-06-07 16:49:03 +02:00
|
|
|
|
|
|
|
```shell
|
2020-06-12 00:36:13 +02:00
|
|
|
# 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
|
2020-06-07 16:49:03 +02:00
|
|
|
```
|
|
|
|
|
2020-06-12 00:36:13 +02:00
|
|
|
Please refer to `bossac --help` for more information on how to use it.
|