A0B36APO Virtual Hardware

From HW wiki
Jump to navigation Jump to search
Simple terminal used by students

A0B36APO (Architektury pocitacu -- Computer architectures) is a course taught by Department of Computer Science and Engineering and Department of Control Engineering.

Students have to work with specialized hardware. This page describes how to use the virtual implementation of the specialized hardware -- this can help students to work at home without the access to the real hardware.


Qemu is a processor emulator which enables to run separate Operating System on Virtual Hardware.


APOHW comprises PCIe I/O card and Simple terminal (keyboard + text LCD).

Apo diagr.png


How to obtain the source code:

 git clone git://github.com/CTU-IIG/qemu.git -b apohw

How to compile it:

 ./configure --enable-system --target-list=i386-softmmu --enable-sdl --enable-kvm

To compile Qemu on bare Ubuntu 12.04, you will need to install zlib1g-dev, libglib2.0-dev, libsdl1.2-dev

How to run it:

 ./i386-softmmu/qemu-system-i386 -device apohw \
    -hda ../../debian_lenny_i386_standard.qcow2 \
    --boot c \

You need to have some image file with GNU/Linux installed on it. KVM command is optional.

In another terminal then run:

 telnet localhost 55555

... and perceive the miracle

What is not implemented

  • Proper timing features of the hardware
  • I/O card is PCI, not PCIe -- however memory access is the same.
  • HD44780 does not support 4bit access
  • HD44780 does not support display shifting
  • HD44780 does not support editable CGRAM
  • Buzzer


Bug reports please send to lisovy@gmail.com

Useful links

HD44780 DDRAM explained

PCI drivers on Linux