Advanced Operating Systems

In this module, we do not program on top of an operating system, we program its kernel: memory manager, scheduler, system calls, protection, etc.

Necessary for the practical works:

  • The subject: en pdf
  • The code from where you start: barepyOS.tgz
  • The documentation: doc.tgz
  • (Code for the video output : Framebuffer.tgz)
  • (The configuration of the pwm is done to read .wav content on 8 bits at 44100 Hz, for instance par exemple tune.wav)

Installation of Qemu for Raspberry Pi

It’s quite easy now: simply install the package for you distribution, or download and compile the sources of Qemu. Your version of Qemu must just be greater than 2.6. If you just want to compile qemu to emulate the Raspberry Pi (and not for x86 and other targets), just configure like that:

  • ./configure --target-list="arm-softmmu"
  • make

The binary file is then in arm-softmmu/qemu-system-arm

In the provided code directory, modify the file tools/run-qemu consequently, or add a symbolic link somewhere in your PATH (or modify your PATH).

Installation of GCC for ARM

Under Ubuntu: package gcc-arm-none-eabi

Installation of GDB for ARM

Under Ubuntu, package gdb-arm-none-eabi.

Beware, version 7.8 of GDB contains bugs that do not allow to use the testing system provided with the code. In this case, you may have to recompile gdb. It’s ultra simple:

    • Download the sources, for instance from
    • tar xzf gdb-xxxxxxxxxx.tar.gz
    • cd gdb-xxxxxxxxxx
    • ./configure –prefix=<install_dir> –target=arm-none-eabi –enable-tui
    • make
    • make install
    • Add <install_dir>/bin to your PATH