TinySoar Build Instructions


To build TinySoar's host environment, you'll need:

To build the TinySoar runtime for the Lego® Mindstorms RCX, you'll need:

Getting the Code

You can download the most up-to-date development version of the code (“the trunk”) using anonymous CVS. First, you'll need to log in:

$ cvs -d :pserver:anonymous@cvs.tinysoar.sourceforge.net:/cvsroot/tinysoar login
(Logging in to anonymous@cvs.tinysoar.sourceforge.net)
CVS password:

There is no password, so just press return. Then, checkout the source code using this command:

$ cvs -d :pserver:anonymous@cvs.tinysoar.sourceforge.net:/cvsroot/tinysoar co tinysoar

Alternatively, you can download the a released “tarball” from the TinySoar project homepage on SourceForge.

Building the Host Environment

Start by creating a directory that is a sibling of the tinysoar directory; e.g., if you've installed TinySoar in /usr/src/tinysoar/tinysoar, create a directory called /usr/src/tinysoar/debug. Then, run configure:

$ cd /usr/src/tinysoar/debug (or wherever)
$ CFLAGS="-g -DDEBUG" ../tinysoar/configure

This will configure TinySoar four your host environment.

Next, build the TinySoar Tcl extension:

$ make tcl-extension

Now, you should be able to run tclsh and load the TinySoar extension:

$ TCLLIBPATH=`pwd` tclsh
% package require TinySoar

If you get this far, TinySoar has been installed successfully for your host environment.

Building the TinySoar Runtime for the Lego Mindstorms RCX

Once you've got your cross-compilation environment set up (building and installing LegOS would be a good test for this), you're ready to build TinySoar for the Lego RCX.

Make another directory that's a sibling of the tinysoar directory; e.g., /usr/src/tinysoar/h8300-hitachi-hms. Then configure TinySoar for the Lego RCX:

$ cd /usr/src/tinysoar/h8300-hitachi-hms (or wherever)
$ CFLAGS="-O2 -fomit-frame-pointer" ../tinysoar/configure \
> --target=h8300-hitachi-hms --with-sizeof-int=2 --without-rete-create

(I know, I really should make configure smart enough to know all this junk.)

Then, build the target environment:

$ make legosoar

This will link in a pre-existing agent (agent.inc in the tinysoar source directory, which was exported from tests/bumper.soar), and create a file called lego that can be downloaded to the RCX using the firmdl3 program included with LegOS. Assuming you've installed LegOS in /usr/src/legOS, you'd type something like:

$ /usr/src/legOS/util/firmdl3 --slow ./legosoar

I've never had any luck with the --fast option (maybe I'm doing something wrong), so the --slow download will take about two minutes. Once it's done, you should be able to press the Run button on the RCX to start the bumper.soar agent.

Note that you'll need to pull the batteries out of the RCX each time before downloading a new TinySoar agent. This is because a TinySoar agent is firmware, and isn't smart enough to notice that new firmware is trying to be downloaded on top of it. (I really ought to fix this.)