xGoat
More tea please.

Formica Firmware Release

Formica Logo
We’ve finally got around to releasing the designs and code for the Formica robots. You can find a technical report over at Jeff’s website Warranty Void if Removed. The hardware designs are under a CC license, and we’ve GPL’ed the firmware.

I’ve made the firmware available here. To build this, you’ll need to have an install of mspgcc that’s been built (and probably patched) to compile for the MSP430F2254. If you’re using Fedora 9, then you should be able to use my mspgcc RPMs.

Compilation

Compiling it is as should be as simple as running “make”:

[rob@zarniwoop formica-fw-r468]$ make
./freq.py 500 3500 3 > freq.c
cp .freq.h freq.h
sed -i -e "s/_NFREQ/`echo "$(((1 << 3) + 2))"`/" freq.h
sed -i -e "s/_NBITS/3/" freq.h
sed -i -e "s/_MIN_PERIOD/500/" freq.h
sed -i -e "s/_MAX_PERIOD/3500/" freq.h
sed -i -e "s/_SYMBOLS_PER_BYTE/`./.sym_per_bit.py 3`/" freq.h
curl -s http://users.ecs.soton.ac.uk/rds204/formica/rev.php > .fw_ver
msp430-gcc -o main -mmcu=msp430x2254 -g -Wall -Os -mendup-at=main -DRAND_WALK_SPEED=3 -DFW_VER=`cat .fw_ver`  main.c ir-rx.c freq.c net-rx.c opamp-1.c ir-tx.c ir-tx-data.c net-tx.c adc10.c random.c motor.c virus.c smbus_pec.c battery.c ir.c food.c bearing.c flash.c behav/braitenberg.c time.c behav/parking.c behav/watchdog.c -Wl,-T,lkr/msp430x2254-lower.x
Firmware revision 485
msp430-gcc -o main-top -mmcu=msp430x2254 -g -Wall -Os -mendup-at=main -DRAND_WALK_SPEED=3 -DFW_VER=`cat .fw_ver`  main.c ir-rx.c freq.c net-rx.c opamp-1.c ir-tx.c ir-tx-data.c net-tx.c adc10.c random.c motor.c virus.c smbus_pec.c battery.c ir.c food.c bearing.c flash.c behav/braitenberg.c time.c behav/parking.c behav/watchdog.c -Wl,-T,lkr/msp430x2254-upper.x
Firmware revision 485
cp -f freq.h .freq.h.win
cp -f freq.c .freq.c.win
[rob@zarniwoop formica-fw-r468]$

This will generate two binaries: main and main-top. These contain the same code but they are linked into different regions of the flash. You can load either one of them into the robot’s MSP430. However, when you start working on getting them to flash each other over IR, you’ll need to make sure that you’ve got the right ones loaded.

You may notice that there’s a curl in that make output. This grabs a firmware version number from the web. Obviously you can change the URL this grabs it from, but feel free to use the one that I’ve set up in my ECS account.

p.s. I should add that none of the stuff from the Alife conference has involved the title “Formica” or our logo, which was a little dissapointing. So, let me point out that this is the same project as in all of these news stories.

Posted at 2:12 pm on Friday 12th September 2008

Comments are closed.

Site by Rob Gilton. © 2008 - 2019