Figured I’d write something constructive about my Real-time assignment. I’ve been talking a lot about how much work I’ve had to do in this course, and I thought I’d give you a taste of what’s been done.

The final project is due on friday, so it’s still a work in progress.

To start with, we have a bare machine which is booted using the GRUB boot loader. We’re using real intel machines here, there’s 2 800MHz PC’s and 1 400MHz PC. My partner and I started with basically no more than some rudementary drivers.. most of which had to be tweaked to work properly. We were given only a keyboard map, and a serial interface which provided inbyte and outbyte.

The kernel we wrote is a microkernel design. It handles all the system calls, (about 30 in total) and not much more. examples include:

Open – open a file

Send/Receive/Reply – for interprocess communication

Create – to start a new program running

Then there are a bunch of services programs that provide some operating system services. for those there is a nameservice which allows programs to register and find other programs (so that they can communicate). there is a clockservice, which allows programs to get the time and delay themselves. There’s a serial service which allows simpler access to the serial devices.

With these features in place we started writing our application. I’ve been doing a lot of the graphics work, and my partner has delt more with the train tracking features. I started by writing a function that could display bitmap images. Then tied that in to the train tracking so that the track displays stuff that corresponds with what the track is doing.

It’s difficult to get a good screenshot of the computer, but I’ll take some with my camera at the end of the week. in addition to the picture of the track there is also a console that takes commands to execute. and a sidebar that gives train information like speed and location.

Here’s a picture of what the track looks like: