Skip to content

πŸ–₯️ A minimal operating system for Mips Malta

Notifications You must be signed in to change notification settings

pkrll/Armadillo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Armadillo

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.

Prerequisites

Getting started

The Makefile includes a bunch of rules to build, compile, run and test the system.

Compile

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...
Link and build

To create a binary, use the rule make build. This will, if necessary, compile and link the object files.

> make build
Linking the kernel...
Run

You can run Armadillo using the QEMU emulator.

> make run
Running armadillo.elf on qemu with flags: -M malta -m 256 -serial stdio
Tests

Unit tests are included. Run them with test.

> make test
...
All tests passed!
Debug

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

Structure

.
β”œβ”€β”€ 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

Documentation

Here you'll find the documentation for Armadillo, along with some useful links.