excimer Readme
**************

Trevor Woerner
++++++++++++++

Copyright &copy; 2001 by Trevor Woerner



Table of Contents
The Need for OpenSource
Legal Stuff

The Need for OpenSource
***********************



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. 

Legal Stuff
***********



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. 


