A micro kernel.
- Message passing handled by the kernel for IPCand interrupts.
- Virtual memory handled outside of the kernelwith support from the kernel.
- Userspace device drivers for everything exceptthe interrupt controller, and the system timer.Currently the kernel also takes a serial devicefor debugging.
- QNX
- L4
- Barrelfish OS
- Minix
- Plan9
It doesn't do much at the moment but it should start up andshow you that it isn't doing much on the following devices:
- beaglebone black
- qemu vexpress-a9, this hasn't been tested in a while.
Currently the kernel is not portable between devices andrelies on a board specificdevice.c
file and kerneldevice drivers. Each board needs to have its own kerneland proc0 compiled.
You will need:
- an arm cross compiler. I'm using arm-none-eabi6.3.1 on OpenBSD 6.2.
- Make. I'm use BSD make but GNU should also work.
- U-Boot tools/mkimage for the version of U-Bootyou are using.
Then go to the directory of the board you want to buildand run make. For example to build for vexpress-a9:
export CROSS=arm-none-eabicd arm/vexpress-a9make
The kernel should be built and bundled for U-Bootatarm/vexpress-a9/kern.umg
. Copy that across to your devicesomehow and use U-Boot to load the kernel.
To run it I am currently using qemu to emulate, bootingU-Boot which is loading the kernel from dnsmasq's tftpserver. Look at the scriptarm/vexpress-a9/test
. The U-Bootbinary is atarm/vexpress-a9/u-boot
. There is a scriptarm/vexpress-a9/test
which starts qemu and sets upthe networking loop back for U-Boot to load the kernel.You will probably have to make some changes to get it workingon your system.