You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Anton Lydike c2484838c1 kernel.(c|h) moved debugging code into if (DEBUGGING) section and cleaned up whitespace 3 years ago
kinclude removed unused and unimplemented malloc definitions 3 years ago
programs added various (bad) example programs 3 years ago
.gitignore added .img files to gitignore 3 years ago
LICENSE initial commit 3 years ago
Makefile bundled all types into ktypes.h and added optionals 3 years ago
README.md updated readme 3 years ago
kernel.c kernel.(c|h) moved debugging code into if (DEBUGGING) section and cleaned up whitespace 3 years ago
kernel.h kernel.(c|h) moved debugging code into if (DEBUGGING) section and cleaned up whitespace 3 years ago
linker.ld various imrpovements and implementations on the kernel 3 years ago
package.py added end of config comment to package.py 3 years ago

README.md

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.