Porting Squeak to Bare Hardware

Jay Carlson nop at nop.com
Tue Oct 31 14:52:14 UTC 2000


Mark Guzdial [mailto:guzdial at cc.gatech.edu] writes:

> Jim Roberts here at GaTech is attempting to port Squeak to the TINI
> board.  (See his page at http://coweb.cc.gatech.edu/csl/31 for lots
> of links and additional info.)

Cool page.

> The TINI board is cheap (~$50) and can take up to 4M on the board
> with reasonable FLASH memory.

How much does it cost with all that memory attached? The obvious alternative
to TINI for these applications is something like a uCsimm, but it's bigger
and more expensive---8M RAM, 2M flash, $240 if you buy it built.  That's not
a particularly compelling price point, but welcome to the world of low
volume systems.  Hm, and then there's ARM's $200 eval kit---wait, I don't
need *another* hobby architecture....

> The processor is a descendant of the
> 8088

Not really.  It's a decendent of the 8051, which is a much-propagated Intel
family of 8-bit microcontrollers.

> -- it's 32 bit internally, 16 bit data path.

It's 8 bit internally, with various kludges to support expanded memory and a
bolt-on-the-side math unit that you can push 16*16 multiplies and 32/16
divides into.  (Actually, their expanded external addressing is a kludge on
top of the 8051's external memory kludge....)

It is one scary CPU for C code that thinks mostly in terms of 32-bit ints
and void*s.

> We've had three strategies that we've been exploring for getting
> Squeak on there:

> (1) Put Squeak into the 4M of memory and launch it via Java Native
> Interface (JNI).  The problem is that we can't find a C compiler to
> work with this processor that supports JNI.

And then fight with the garbage collector etc?  Sounds like no fun.

> (2) Rewrite the Squeak VM into something Java-ish that can run on top
> of the native JVM.  That seems like an enormous amount of work and
> would run VERY slowly.

All I have to say is: Two layers of interpreter on an 8-bit micro. :-)

> (3) Trash the JVM and put a Squeak VM into the Flash memory.  This
> option sounds the most reasonable at this point, but we do this with
> some trepidation -- we're essentially trashing the OS and porting to
> bare hardware.  For this platform, there is less to port than usual,
> since there is no display, no mouse, no keyboard.  But we also lose
> even a filesystem once we trash the JVM.  We also still have to
> figure out someway of loading the image (maybe download it serially
> via XModem, like the neat Helio port; or put it all in a C array like
> Paul Fernhout's Squeakette (http://www.kurtz-fernhout.com/squeak)).

I like the XModem approach (thanks :-), although TFTP shouldn't be too hard.
In my poking around I found http://www.turbobit.com/tini.htm which is the
start of a C-based loader/operating system/BIOS.

Jay





More information about the Squeak-dev mailing list