OSPP (1DT096) 2018 - Project iota
Armadillo is a very simple operating system for the MIPS Malta board, created as a group project in Operating systems and process oriented programming (1DT096), spring 2018, Uppsala university.
- Mipsel-elf cross compiler (See GCC Cross-Compiler)
- Qemu (Developed using version 2.11.1)
- GDB cross compiled for mipsel-elf. (See Cross build GDB)
The Makefile
includes a bunch of rules to build, compile, run and test the system.
To compile the project, use compile
. This compiles and creates object files in the obj
directory, but does not build a binary.
> make compile
Compilation done...
To create a binary, use the rule make build
. This will, if necessary, compile and link the object files.
> make build
Linking the kernel...
You can run Armadillo using the QEMU emulator.
> make run
Running armadillo.elf on qemu with flags: -M malta -m 256 -serial stdio
Unit tests are included. Run them with test
.
> make test
...
All tests passed!
Debugging Armadillo requires GDB
. Start by running the OS in debug mode, and then send the job to the background before starting GDB
:
> make debug
[ctrl+z]
> bg
> make gdb
.
βββ Doxyfile
βββ Makefile
βββ README.md
βββ bin
βββ docs
βββ guidelines
βΒ Β βββ git.md
βΒ Β βββ styleguide.md
βββ meta
βΒ Β βββ gruppkontrakt.md
βΒ Β βββ medlemmar.md
βΒ Β βββ meetings
βββ obj
βββ src
βΒ Β βββ common
βΒ Β βΒ Β βββ k_rand.c
βΒ Β βΒ Β βββ memory.c
βΒ Β βΒ Β βββ queue.c
βΒ Β βΒ Β βββ stack.c
βΒ Β βΒ Β βββ stdio.c
βΒ Β βΒ Β βββ stdlib.c
βΒ Β βββ include
βΒ Β βΒ Β βββ common
βΒ Β βΒ Β βΒ Β βββ k_rand.h
βΒ Β βΒ Β βΒ Β βββ math.h
βΒ Β βΒ Β βΒ Β βββ memory.h
βΒ Β βΒ Β βΒ Β βββ processes.h
βΒ Β βΒ Β βΒ Β βββ queue.h
βΒ Β βΒ Β βΒ Β βββ stack.h
βΒ Β βΒ Β βΒ Β βββ stdint.h
βΒ Β βΒ Β βΒ Β βββ stdio.h
βΒ Β βΒ Β βΒ Β βββ stdlib.h
βΒ Β βΒ Β βββ kernel
βΒ Β βΒ Β βΒ Β βββ dispatcher.h
βΒ Β βΒ Β βΒ Β βββ exceptions.h
βΒ Β βΒ Β βΒ Β βββ pcb.h
βΒ Β βΒ Β βββ mips
βΒ Β βΒ Β βββ adresses.h
βΒ Β βΒ Β βββ bitmasks.h
βΒ Β βΒ Β βββ registers.h
βΒ Β βββ kernel
βΒ Β βΒ Β βββ boot.S
βΒ Β βΒ Β βββ context_switch.S
βΒ Β βΒ Β βββ dispatcher.c
βΒ Β βΒ Β βββ exceptions.S
βΒ Β βΒ Β βββ kernel.c
βΒ Β βΒ Β βββ pcb.c
βΒ Β βΒ Β βββ processes.c
βΒ Β βΒ Β βββ rand.S
βΒ Β βΒ Β βββ timer.S
βΒ Β βββ linker.ld
βββ tests
βββ include
βΒ Β βββ minunit
βΒ Β βΒ Β βββ unit.h
βΒ Β βββ test_dispatcher.h
βΒ Β βββ test_memory.h
βΒ Β βββ test_stack.h
βΒ Β βββ test_stdlib.h
βββ kernel
βΒ Β βββ test_boot.S
βΒ Β βββ test_exception.S
βΒ Β βββ test_kernel.c
βββ linker.ld
βββ test_dispatcher.c
βββ test_main.c
βββ test_memory.c
βββ test_stack.c
βββ test_stdlib.c
Here you'll find the documentation for Armadillo, along with some useful links.