Skip to content

An experiment with implementation of very simple operating system for Malta board

License

Notifications You must be signed in to change notification settings

rafalcieslak/mimiker

This branch is 3 commits ahead of, 1170 commits behind cahirwpz/mimiker:master.

Folders and files

NameName
Last commit message
Last commit date
Jan 17, 2017
Mar 26, 2017
Mar 29, 2017
Nov 28, 2016
Jan 27, 2017
Mar 27, 2017
Mar 27, 2017
Mar 10, 2017
Jan 4, 2017
Jan 23, 2017
Oct 6, 2016
Mar 17, 2017
Dec 10, 2016
Mar 10, 2017
Jul 18, 2016
Nov 17, 2015
Mar 17, 2017
Jan 20, 2017
Mar 10, 2017
Mar 26, 2017
Mar 27, 2017

Repository files navigation

Mimiker: MIPS Micro-Kernel

An experiment with implementation of very simple operating system for Malta board.

Building

To build Mimiker you will need to prepare a custom MIPS toolchain we use. We use crosstool-ng for building the toolchain, you can get it from here.

cd toolchain/mips/
ct-ng build

By default, this will build and install the mipsel-unknown-elf toolchnain to ~/local. Update your $PATH so that it provides mipsel-unknown-elf-*, i.e. unless you've changed the install location you will need to append ~/local/mipsel-unknown-elf/bin to your PATH.

With toolchain in place, you are ready to compile Mimiker. Run

make

in project root. This will result with a mimiker.elf file containing the kernel image.

Running

As you presumably do not own a MIPS Malta board, you will need a simulator to test the kernel. We currently support OVPsim (incl. Imperas proprietary variant) and QEMU. If you're using OVPsim, make sure your $IMPERAS_HOME is set correctly.

We provide a python script which simplifies loading the kernel image to simulator. In project root dir, run:

./launch

This will start the kernel using OVPsim if available, or QEMU otherwise.

Some useful flags to the launch script:

  • -d - Starts simulation under a debugger.
  • -D DEBUGGER - Selects debugger to use.
  • -S SIMULATOR - Manually selects the simulator to use.
  • -t - Bind simulator UART to current stdio.

Any other argument is passed to the kernel as a kernel command-line argument. Some useful kernel aguments:

  • init=PROGRAM - Specifies the userspace program for PID 1. Browse ./user for currently available programs.
  • test=TEST - Requests the kernel to run the specified test (from ./tests directory).
  • test=all - Runs a number of tests one after another, and reports success only when all of them passed.
  • seed=UINT - Sets the RNG seed for shuffling the list of test when using test=all.
  • repeat=UINT - Specifies the number of (shuffled) repetitions of each test when using test=all.

Documentation

Useful sites:

Toolchain documentation:

MIPS documentation:

Hardware documentation:

About

An experiment with implementation of very simple operating system for Malta board

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 88.7%
  • Python 4.8%
  • Assembly 3.6%
  • Makefile 1.4%
  • C++ 1.2%
  • Shell 0.2%
  • Objective-C 0.1%