Once again I had trouble making the actual PCB. The Modela was not level when we used it, and also didn't completely cut out all of the copper so I had to manually scrape away some of it. This probably lead to my problems with getting the board to work correctly. Another issue is that we ran out of the capicators we needed to use which forced me to use a different one. This probably didn't cause any problems, however.
After I programmed it I was able to get the board to echo, but it did not do this consistantly and sometimes spit out garbage characters. I didn't have time to look into this further, but I'm planning on remaking the PCB to correct this. This meant that I wasn't able to test the assembly/C code, although I do think what I wrote will work after I test it.
I wasn't too concerned about this since I have a lot of experience working with low level C code on ARM boards (see our Sociometric Badge project). I'm actually currently working on writing drivers in C for our new badge version to work with a digital accelerometer and digital microphone, and once I have those drivers I'll post them on the badge site. You can look at the badge firware code which I mainly wrote on MLForge if you have a Media Lab login that currently runs on an AT91SAM. I can't publicly distribute that code though since it's we're currently patenting it, but there are a lot of useful drivers for IR transceivers, Chipcon radio, an ADC, a button! We played around with lots of different configurations depending on what kind of data you want to collect and wrote high-level accessor functions, so that might serve as good examples if you're doing ARM peripheral development.