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.