Target Architectures
We target current GHz multiprocessor cores
with a MMU (memory management unit)
and memory counted in mega bytes or more.
Wingert OS targets the following x86 and ARM based boards for the initial release:
- x86: Wingert OS runs on any modern 32 or 64-bit x86 CPU by AMD or Intel.
It requires at least SSE2+ and PAE page tables with NX support.
Multicore is supported, but ACPI and UEFI not (yet).
-
ARM: Wingert OS runs on Raspberry Pi, BeagleBone Black and i.MX6 based boards.
Of course, more than one processor is supported on Cortex A9 or newer cores.
Minimum system requirements are a ARMv6k or ARMv7 processor core with VFP.
-
QEMU: We love QEMU and support virtualized
targets as well.
More boards and architectures will be added and announced later.
We find current PowerPC SoCs also quite tempting as target for research.
Drivers
In the beginning, we'll only have a limited set of drivers in Wingert OS.
Supporting a wide range of hardware devices is hard work, and research
projects usually don't have the resources for that.
Of course, we are no exception to that rule.
The following drivers are supported by Wingert's in-kernel board layer:
- serial: always needed for crucial things like printing "Hello, world" ... or diagnostics
- timer: tick tock!
- interrupt controller: support for interrupt controllers is also handled at kernel level
- board initialization, booting additional processors, ...
- GPIO and clock handling
- minimal power management
Outside the kernel, additional drivers are implemented as user space drivers.
We aim to support at least:
- Ethernet: support on-chip ethernet devices
Probably for later:
Userland
Bionic libc
Considering user mode software, we currently can come up with a port of Android's
Bionic libc
(and
libm) libraries. They provide a crt0 for application programs and the well-known set of
routines for:
- pthreads
- Dynamic memory allocation
- ASCII/UNICODE strings: formatting, parsing, comparison, ...
- Environment variables
- Advanced math
- Handling of date and time
- Error handling by means of errno
Especially the signaling concept and time zone/localization code was not considered for the port.
libgomp
Partially based on libc-functionality, Wingert OS features an ongoing port of the OpenMP runtime
library
libgomp. Using a GCC compiler, this facilitates parallel programming and especially
parallelization of existing sequential code. Please refer to
the OpenMP specification for details.
Further research will focus on analyzing a subset of the OpenMP-Framework and determine proper mappings
to kernel facilities in order to provide deterministic runtime behavior. A description of the planned approach
can be found in the section
papers.