Go to file
2021-09-30 14:37:51 +02:00
kinclude fixed a couple of small bugs 2021-09-30 14:37:26 +02:00
programs added example prorgam which creates and joins threads 2021-09-30 14:36:13 +02:00
.gitignore added uncrustify config for formatting 2021-08-22 19:47:31 +02:00
cleanup.sh added cleanup.sh file that cleans up all source code 2021-08-22 19:55:13 +02:00
kernel.c general cleanup in kernel code removing unised defines etc 2021-08-31 11:46:53 +02:00
kernel.h general cleanup in kernel code removing unised defines etc 2021-08-31 11:46:53 +02:00
LICENSE initial commit 2021-06-21 11:12:33 +02:00
linker.ld various imrpovements and implementations on the kernel 2021-08-21 21:18:03 +02:00
Makefile removed optimization flags as they broke scheduling 2021-09-30 14:37:51 +02:00
package.py more comments and better structure 2021-08-30 20:11:28 +02:00
README.md updated readme 2021-08-21 21:27:11 +02:00
uncrustify.cfg added uncrustify config for formatting 2021-08-22 19:47:31 +02:00

EMBARK: An Educational and Modifiable BAsic RISC-V Kernel

EMBARK is a small kernel, designed for educational projects. It has very limited scope and is designed to be extensible.

The toolchain:

I am using the riscv-gnu-toolchain, configured with --with-arch=rv32im --disable-linux --disable-gdb --disable-multilib and built using make -j <number of threads>.

The Makefile:

You can build the kernel using make kernel. Make sure the toolchain is in your path!

Packaging a kernel image with user programs

You can use the package.py script to package a kernel and multiple user binaries into a single img file.

Debugging information is also emitted, it's a json formatted file called <name>.img.dbg.

To generate such an image, run python3 package.py out/kernel <user bin 1> <usr bin 2> ... output/path/memory.img. You can edit the script to change various variables. They somewhat well documented.