Went to the ARM
Developers' Conference Tuesday -- or at least the free trade show
associated with it. Not really much there of interest to a Linux-based
software developer. It was interesting to see that Eclipse has
become a popular IDE, and that most of the RTOS (Real-Time Operating
System) vendors now coexist one way or another with Linux. GCC remains
the most popular compiler. No surprises. On the hardware side, the main
newcomer is Freescale, which is
Motorola's spun-off semiconductor division.
On the way back to work (it was a small trade show, and reasonably close to
work) I picked up a little USB enclosure for a laptop drive, and resumed
my current project: putting together a development
environment for the ARM-based Stargate boards my group is doing a little prototyping with. The
Stargate is basically a headless server, based on a 400MHz XScale (ARM)
processor, with 64MB of RAM and 32MB of flash, on a board measuring
3.5x2.5 inches. It runs on Linux, but a rather old and stripped-down
distribution so as to leave plenty of room for user software.
As I've mentioned earlier,
I've been experimenting with various toolchains and trying to put together
a Java runtime environment for the board. I spent Tuesday afternoon and
Wednesday morning setting up a coworker with a C environment (all he wants to
do is twiddle the IO) by giving him an account on my desktop machine.
That was easy.
The easy part out of the way, I got back to the main problem at hand:
setting up a Java-friendly runtime environment for my other
coworkers. This time I took the easy way out: Debian. I already knew, from previous
experimentation, that Debian has packages for at least three different
Java runtimes that work for our software. So, says I to myself, how hard
could it be to get Debian running on the Stargate board?
The answer is: only a little harder than I expected. Basically all I had
to do was to plug in a preformatted (since the board doesn't have
fdisk
) USB hard drive and run debootstrap
.
There were a few complications. First, even though the
debootstrap
command takes an "architecture" parameter, it
still needs to chroot
into the environment it sets up and run
code (mainly dpkg
) to finish installing the packages it
downloads. So it didn't run on my desktop machine.
Secondly, debootstrap
needed a couple of programs I didn't
have on the board, mainly ar
and zcat
. And
ar
is needed to unpack Debian packages. So I had to do the
initial unpacking on my desktop. OK, that's pretty easy. Then, the
aborted run of debootstrap
on my desktop machine left things
in a broken state, so I had to wipe the partition and try again. Finally,
the kernel on the board was apparently having problems with the "large"
(6GB) disk, so I switched to a 2GB filesystem in partition 1.
So I now have what appears to be a perfectly useable Debian install on the
Stargate board. It's still using the old kernel, since the Stargate's
bootloader doesn't know how to boot from a USB drive. I intend to fix
that soon by moving to a compact flash Microdrive (can't use flash because
I really need a swap area, and flash allows only a limited number of write
cycles. Also, writing on flash is s..l..o..w... And I still have to
pick a JVM and verify that it works. That's my project for this morning.