Mark Guzdial [mailto:guzdial@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
squeak-dev@lists.squeakfoundation.org