To build TinySoar's host environment, you'll need:
To build the TinySoar runtime for the Lego® Mindstorms RCX, you'll need:
gcc: installing these is probably the quickest way to get started. If you're a die-hard, configure and build
gccto cross-compile to H8/300 yourself.
firmdl3utility to download the TinySoar runtime onto the RCX.
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:email@example.com:/cvsroot/tinysoar login (Logging in to firstname.lastname@example.org) CVS password:
There is no password, so just press return. Then, checkout the source code using this command:
$ cvs -d :pserver:email@example.com:/cvsroot/tinysoar co tinysoar
Alternatively, you can download the a released “tarball” from the TinySoar project homepage on SourceForge.
Start by creating a directory that is a sibling of the
tinysoar directory; e.g., if you've installed TinySoar
/usr/src/tinysoar/tinysoar, create a directory
/usr/src/tinysoar/debug. Then, run
$ 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
$ TCLLIBPATH=`pwd` tclsh % package require TinySoar Firing: Retracting: 1.0 %
If you get this far, TinySoar has been installed successfully for your host environment.
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 (
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
$ /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
will take about two minutes. Once it's done, you should be able to
press the Run button on the RCX to start the
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.)