excimer Readme

Trevor Woerner


Table of Contents
The Need for OpenSource
Legal Stuff

Knowing that the embedded market was about to explode i wanted to start honing my skills while still in school instead of hoping to get in with an embedded employer and only starting to learn about these first, if i was lucky enough to get such a job, and second only after starting to work. I was also very interested in RISC assembly programming so i started looking for some device that would allow me to learn while at the same time would teach me interesting and in-demand skills.

My search led me to Motorola's site and to a product called the excimer board. It is a minimal system on a board device that comes with a PowerPC 604 chip. Being a poor student at the time i could only wish for the device since it was way too far out of what i could afford at the time, and besides, the prices were all in USD, which made it all the more expensive.

I started putting asside some money and then one day i figured i had enough so i sent away for this board. I was so excited the day it arrived! I unpacked the device and marvelled at how beautiful it was. Eager, i was (of course) to start playing with it -- and that's where the problem appeared.

In the package were about a dozen or more software development kits, along with an assortment of cables and other periphenalia, for connecting the device to your computer and to develop software for it. Of the dozen or more software kits from all sorts of different companies, each and every one of them required MS Windows of some flavour, all were limited time trail versions, and the full versions of even the cheapest ones cost well over $1000USD!! At that point i had already done away with MS products and wasn't even running MS anything anywhere, i was doing everything with Linux and running it exclusively at home.

Can you understand how disgusting this is? The excimer board isn't a specialized production board of any sort, it was made for learning and for goofing around with. It was enough that i saved up to actually buy the stupid thing, now i need even more money to be able to use and program the thing? Of course in the world of proprietary software this is normal.

So it was either 'forget about the board' or 'do something to be able to use it', i chose the latter. I already had LinuxPPC running on my 8500 but i didn't know how to be able to connect the board to the mac. I did have x86 Linux running on a PC which had the regular serial ports. Thinking about this situation i realised that the GNU compiler can be made to cross-compile to other platforms. Therefore i could connect the excimer to my x86 machine, create a cross-compiling compiler, and be able to work with the excimer for no cost!

The first thing that was required was to create a terminal application that would allow me to communicate with the board and to download Motorola S-records (which contain executable programs) to the board. Then i would need a cross-compiler.

The details of creating a cross-compiler can be found in the documentation that accompanies the gcc compiler so i won't recreate them here. Creating the terminal application is what this package is about. The excimer board has a little BIOS on it that boots and runs a little tiny "OS" called the monitor (which has nothing to do with video monitors). Interracting with the monitor you can tell the board to prepare to download an S-record, start execution at some point, or debug a program by stepping into, over, and through it.

You can look at my sources to see what i did. But basically i read the Serial-Programming HOWTO to understand how to write code to interract with the computer's serial communications. I wrote a program that uses two threads, one for input from the board (and subsequent output to the terminal application) and another for receiving input from the user (via the keyboard) to be sent to the board.

The trickiest part of the code was the download of S-records to the board. Each line of the S-record is sent one at a time. There is a checksum that gets computed and then the board will ack/nak you to say if it liked the packet or not. The trick was to pause the sending long enough for the board to be able to respond. This took some intuition at the time, but seems obvious in retrospect.

The terminal application is simply a command-line driven program that allows the user to interract with the board's monitor. The source for this terminal application is located in excimer.c. The other files that start with the name addition are a very rudimentary program that gets converted into PowerPC assembler, then into Motorola S-record format using the objcopy utility from the binutils package, then sent to the board for execution via the terminal application.

Humerously all of this was done (as i write this) 3 years ago and i can't find my excimer board now. So unfortunatly i can't create any screen shots of it in action. I hope you find this stuff useful. I sure had fun with it back then.

Note: Because this program interracts with the computers communications port you have to have super-user priviledges in order to run the excimer executable, or at least have a benevolent sysadmin who will make the application suid for you.

See the file COPYING or the copying web page. Basically all code is covered under the GPL and is copyrighted to me (Trevor Woerner) and all documentation that pertains to this project is covered under the FDL.