Micro Code

Michael's blog about teaching, hardware, software and the things inbetween

Another blast from the past

January 21, 2018 — Michael Engel

While looking through some old backups, I came across a pictures folder dating from 2006. So, here's a picture of my office at TU Chemnitz, where I spent a year as acting professor for operating systems in 2006/07.

Nowadays, my colleague Matthias Werner occupies this office...

Chemnitz office

Tags: chemnitz, professor, office

Excursion Report Part 3: The Zuse Z23

January 01, 2018 — Michael Engel

The third part of our excursion to Erlangen was centered around the Zuse Z23 machine, which I already described in a previous blog entry about the Long Night of Science I attended some months ago.

Again, the demonstration of the machine was simply great - once more, thanks a lot to Volkmar and Edwin for hosting us!

So, here are some more impressions of the Z23 (original size photos available on request). All pictures are licensed under the Creative Commons CC BY-SA 4.0 license.

The machine and its operator

Z23 total

The computer itself

Z23 computer

Core memory modules

Z23 core memory

Hand-wired backplane

Z23 backplane

Close-up of some Z23 modules

Z23 module close-up

A page of the Z23 schematics

Z23 schematic

The magnetic drum unit

Z23 magnetic drum

Close-up of the drum read-write heads

Z23 drum heads

The magnetics of the drum itself

Z23 drum

Close-up of the head driver electronics

Z23 amplifiers

Tags: Zuse, Z23, FAU, RRZE, Erlangen, Excursion

Tiny Unix on a tiny microcontroller

January 01, 2018 — Michael Engel

There is one quite nice thing I (re)discovered over the Christmas break. At a MIPS FPGA workshop in Munich last January, I was given a ChipKit Wi-Fire board. This board is based on a Microchip PIC32MZ microcontroller, which includes a MIPS M14k CPU core with MMU and FPU, 2 MB of flash memory, 512 kB RAM and a number of peripherals.

This board is not only capable of running typical embedded operating systems, but is probably one of the tiniest platforms capable of running real Unix - namely the last BSD Unix version from UC Berkeley, 4.4BSD-Lite2. This final version from the CSRG research group came out in 1995 after a lengthy litigation in which AT&T (back then the owner of Unix copyrights) tried to hinder the publication of the BSD source code due to allegations of illegaly copied AT&T proprietary source code - luckily, this trial resulted in only six files which had to be removed from the BSD source code base; the 4.4BSD source code without the infringing files was then published as 4.4BSD-Lite2 and formed the basis for subsequent open source BSD projects, including 386BSD, FreeBSD, NetBSD, OpenBSD and DragonFly BSD.

Serge Vakulenko has worked on liteBSD, a port of 4.4BSD-Lite2 to the PIC32MZ MIPS-based microcontrollers for a number of years and managed to get it to work with the rather puny hardware resources of that controller (the MIPS architecture itself was supported by 4.4BSD in DECstation and SONY MIPS machines).

I got it to run on the Wi-Fire board (which is one of the boards supported out of the box by LiteBSD); it is quite an impressive achievement and, despite the minimal hardware resources, feels familiar to people used to modern Unix or Linux systems.

So far, I have fixed two bugs in the litebsd kernel source.

One was missing support for the execution of so-called shebang interpreted executables, i.e. shell scripts or similar (Perl, Python, awk, etc.), which start with the character sequence "#!" followed by the name of the interpreter, such as "#!/bin/sh".

The other was a bug in the memory allocation code for ktrace, which resulted in a kernel panic during execution tracing when tracing was enabled in the kernel.

There is also RetroBSD, an even smaller version of BSD for very tiny microcontrollers, derived from the last PDP11 BSD Unix version, 2.11BSD.

Some links:

Wi-Fire board litebsd screen shot

Tags: mips, pic32, BSD, unix, litebsd

Teaching Award

January 01, 2018 — Michael Engel

There are some things which I need to catch up on, since the last few weeks did not leave much time for blogging.

First, a very gratifying and unexpected event - I was awarded the University of Coburg Teaching Excellence Award for the academic year 2016/17 after only one year of teaching there. This was quite unexpected and I am very proud and happy to have received this appreciation of my work here.

The physical manifestation of the teaching award, as shown below, is a glass plate etched with a picture of Friedrich Streib, who was the founder of the predecessor institution of Coburg University in the 19th century. Quite nice and original!

Btw., this is my second teaching award. The first one was the so-called Lehrer-Lämpel-Pokel (Teacher Lämpel trophy, named after a character in the Max and Moritz illustrated verse stories by Wilhelm Busch) in the summer term 2015 at TU Dortmund, Department of Computer Science, for my course on computer architecture.

Teaching award

Tags: teaching, award, 2017

Happy New Year!

January 01, 2018 — Michael Engel

A very happy new year to my readers and all the best wishes for 2018!

This picture shows a (somewhat blurry) panoramic view over Coburg including the Veste castle hill, taken tonight from the University hill. There was quite a bit going on since a number of students have also decided to enjoy the view and celebrate right there (some of the dorms are next door to the campus, so this was an obvious choice for them, I suppose).

New Year's Eve in Coburg

Tags: 2018, Silvester

The first embedded Linux system

November 09, 2017 — Michael Engel

...more or less. While digging through some stacks of old hardware components, I came across an unlabeled brown envelope. It contained a uCsimm, one of the first commercially available embedded Linux systems, built in 1999.

The uCsimm combines a Motorola Dragonball (68EZ328) CPU, the same as in early Palm PDAs, 8 MB RAM, 2 MB Flash and a 10 MBit Ethernet controller (CS8900) in the form factor of a 30-pin SIMM module. The accompanying baseboard has a voltage regulator (take care, the GND connection on the power plug is on the inner pin!) and a number of connectors.

This uCsimm runs uClinux, a variant of the Linux kernel for MMU-less CPUs. In this case, the original version, based on Linux 2.0.38, was still installed and booted without a problem. After configuring the Ethernet controller's IP address and network parameter (with the unusual ifattach commend), I could also log in to the uCsimm via telnet (no sshd...). So, in some way, this can be considered one of the very first Internet-of-Things devices :-).

Btw., the root password for the uCsimm standard Linux install is "uClinux". This wasn't mentioned in the docs...

uCsimm uCsimm bootloader uCsimm login

Tags: uClinux, uCsimm, motorola, 68000

Honey, I shrunk the Macbook!

November 02, 2017 — Michael Engel

Sometimes, the blandness of everyday life requires something to cheer me up. After two days of reinstalling (!) the stupid Macbook (Apple, please hire some people who have at least used Unix to develop macOS -- all the talent seems to have left...), a tiny new machine has arrived in the mail.

The GPD Pocket is a mini notebook featuring a seven-inch 1920x1200 screen, a quad-core Atom x7-Z8750 processor, 8 GB of RAM and a 128 GB eMMC. It runs Windows 10 as well as Linux; strangely, the Windows 10 version was cheaper than the Ubuntu one.

And it really looks a bit like a mini Macbook Pro. I hope it will make less trouble. I won't let the poor thing suffer under Windows, of course. And no systemd either!

GPD Pocket

Tags: gpd, pocket, notebook

The Coburg Z23

November 02, 2017 — Michael Engel

Coburg University did in fact have a Zuse Z23 machine. Sadly, it got decommissioned sometime back in the 1970s and its fate is unknown.

However, at least a photo has survived (thanks to my colleague, Prof. Missbach, for sending it!). The 1960s style curtains and the operator's lab coat look great!

Coburg Z23

Tags: Coburg, Zuse, Z23