Table of Contents

Introduction

I am an open source developer. I purchased a NetWinder because I feel that this type of machine has a big future in many vertical markets. It is an concrete existence proof that open source software leads to innovation.

I plan to use the machine to demonstrate new possibilities to my clients and to help them "think outside the box" when architecting new systems. I also plan to make it a second platform for testing purposes and binary releases. I will probably write some demonstrations for the NetWinder that take advantage of it's unique hardware.

Downloads

Here is what I've produced for downloading:

ftp.netwinder.org/users/b/brianbr/rpm-2.5.2-arm.tar.gz
A binary tarball of RPM for bootstraping. Instruction for use are in the News section below.

Links

This section contains pointers to resources that I've made use of and recommend to others starting out with the NetWinder. It's also got links to other Web resources I've created.

RedHat 5.1 port
This is the location of the experimental version of the next CCC distribution packages.
NetWinder programming specifications
This is the official hardware description in elaborate detail.
Corel Netwinder Internals
An "unofficial" hardware description put together by Russel Nelson.
Shipping NetWinder FAQ
An FAQ covering the things that a first time user will want to know. Also created by Russel Nelson.
The NetWinder rescue HOWTO
For those troubling times... Contains information about the boot process and options unavailable elsewhere. Put together by Stanislav N. Vardomskiy.
Unofficial NetWinder.org Developer Community FAQ
A complete and growing FAQ on the NetWinder start by Jim Tittsler. This FAQ uses a *really cool* "FAQ Wizard" that let's anyone can add or edit entries. Net effect: It stays current.
NetWinder.org Fresh Meat
Another automated service from Jim Tittsler (he must have done open source projects before!) that lists the latest documents and files on netwinder.org.
The ARM/NetWinder Structure Alignment FAQ
This FAQ is hosted here and details the issue of structure alignment on ARM and StrongArm Linux distributions. I am always looking for feedback on which applications port to the ARM without any alignment problems and which have had problems. If you have ported a Linux package to the NetWinder, I'd be very interested in a quick note about whether or not structure alignment was an issue. The more data points on this, the easier it will be for distribution originators to make the right decisions.
www.minoru-development.com
This is the home page for my company.
Minoru R&D
Follow this link if you want to know more personal details about me and my work.

I can be reached at brianbr@ibm.net.

NetWinder Review

At this writing (September 1998) all aspects of the machine are in rapid evolution:

What shipped to me on September 15th was:

All of the software is available on the ftp.netwinder.org site at these links: NeTTrom, 2.0.31Kernel Source, Disk Image, and Packages. The kernel source is basically "read-only" because a) you need an a.out configured cross compiler to build it, and b) it can only be safely tested using bootp or an external hard drive. The NetWinder Rescue HOWTO contains more details. There is also little point in mucking with these because a sparkling new version will be out real soon now.

My understanding (could be wrong!) of the soon to be coming release is:

The "experimental" packages can be found at http://www.netwinder.org/~andrewm/redhat.

The "experimental" Nettrom can be found on San Mehat's page http://www.netwinder.org/devel/notes/sanm.html.

The experimental kernel is in ftp://ftp.netwinder.org/pub/ccc/kernel. Modutils that go with it are in ftp://ftp.netwinder.org/users/p/patb/modutils-2.1.107. The set_therm and read_temp that go with it are in ftp://ftp.netwinder.org/users/w/woody/therm3. You need to carefully read the instructions at http://www.netwinder.org/~ralphs/knotes.html before installing the new kernel. Installing the new modutils is particularly risky because the floating point emulator cannot be loaded with the new insmod. You need to keep the old insmod under a different name (eg: /sbin/insmod.aout) and modify /etc/rc.d/rc.sysinit to use the old one when loading the fpe. There are a number of other init files in rc.d and rc.init.d that need to change to load new modules instead of old ones. Change "insmod /lib/modules/..foo.o" to just "insmod foo". The new insmod is smart enough to find the right versions. The other change is that the device number for /dev/therm has changed to 10 131 from 102 0.

I used the configure option arm-unknown-linux-gnu for the modutils build. I didn't recompile read_temp and set_therm, but used the binaries given.

There is still no experimental version of the disk image publicly available, but it should be announced real soon now.

Experimental development tools are in ftp://ftp.netwinder.org/pub/contrib/unsupported.

While rapid progress is clearly visible, the transition period is a little rough. With literally everything changing at the same time, it's hard for anyone, including CCC, to put together a system where all of the pieces are in sync.

The original system was based on aout and the new one is ELF based. Anyone who went through this transition with RedHat will know that this is a tricky update. CCC staff and a few selected outsiders are running test versions of the new release, so some of the things uploaded to netwinder.org do not run at all or have problems for the rest of us.

News

October 7, 1998
Things are moving fast! My fan works now! I compiled and installed the new ELF kernel, along with new modutils and the new set_therm/read_temp. read_temp is flaky -- often returning 0.0 instead of an actual temperature reading. The problem just seems to be reading the temperature -- the fan does the right thing even when the temperature is reported as 0.0.

The number of alignment fix-ups reported by the new kernel is in the millions. "cat /proc/cpuinfo" gives a count. I still consider this a compiler problem. Many C programs (especially for graphics) are written for speed over portability. The alignment trap increases portability at the expense of speed. Fixing the compiler increases portability with a negligable speed penalty. Writing ARM specific versions of X windows and application code is work that will never finish.

Glad I didn't install the experimental bash RPM. It toasts the boot process by trying to use the FPE before it is loaded.

I also gained some new problems from installing the experimental RPMs (these started with the old kernel and didn't change with the new one)

My workaround is to remove these services from rc.d/rc.d and to reboot before leaving X.

Next step...replace all the old a.out binaries. This should increase stability and, more importantly, make it possible to identify which things are real problems with the experimental RPMs instead of just blaming strangeness on the a.out/ELF mix.

October 6, 1998
I have updated glibc and now have egcs running for "C" programs, but not for "C++". Recompiling glibc fixes the problems I was having compiling RPM, so I'm happy I did it.

I used the glibc from ftp.netwinder.org/pub/contrib/unsupported with the following 'configure' options:

Everything compiled fine, but their were errors from the 'make check' step. All of the errors except one were related to floating point operations on +inf, -inf, NaN, or doubles in the range 10**-315. Looks like the Acorn FPE doesn't fully emulate IEEE standards for these values. The one exception was a specific call to a very uncommon routine (sorry for the lack of detail, but it's gone from my hard drive now).

The egcs I installed was egcs-1.1b with the patches from Phil Blundel (http://www.tazenda.demon.co.uk/phil/armlinux). Configure options were:

The 'make bootstrap' failed when comparing the stage2 and stage3 object files. When I checked this out, the differences seemed benign. I had to make one fix in the 1.1b distribution -- the file gnu/acconfig.h had an extra line with @TOP@ at the end.

C++ programs that reference libstdc++ fail at the ld phase with a message that 'exception virtual table' was an undefined reference. Phil Blundel is looking into the cause. The problem could be either in the compiler or in ld.

October 3, 1998
I have installed the new Nettrom and have started installing packages from andrewm's 5.1 RPMs. The new Nettrom worked without a hitch, just following the instructions on the page and in e-mail. Key thing is to set: on first boot after installation. You need to interrupt the boot process when it starts it's countdown.

I am part way through installing RPMs. The first sticking point was getting RPM itself installed. I was unable to build RPM from the supplied source tarball using the compiler and setup from diskimage 1.1b. I think it was a problem with static linking. In any event, one of the tarballs I found had the binary sitting in it, so I ran that to install the actual RPM. I had to fiddle with the rpm configuration files to get this to work.

To make this easier for those who follow, I've uploaded a binary tar.gz of rpm 2.5.2 as installed from andrewm's RPM files. It's at ftp.netwinder.org/users/b/brianbr/rpm-2.5.2-arm.tar.gz.

To use:

where the last file is from andrewm's directory.

I've gone about as far as I can go right now without excessive --nodeps use. My next step is to recompile glibc and get ecgs working.

September 24, 1998
I have received my NetWinder! The first one was dead on arrival -- completely dead...no lights...no fan...no hard drive spinning up. Probably the power supply although I didn't get a chance to dig my volt meter out of cold storage in the two hours before I sent it back. CCC was very fast and responsive with a replacement machine and I was going within 24 hours. Thanks!

For the benefit of those now ordering or waiting, it took 22 days from the date of my order until I had a working machine. This is on the fast side of my experience with other mail order hardware vendors. CCC needs to improve it's estimates, however.

I'm not yet out of the woods yet on the hardware front, however. The machine fails 4 out of 8 of the diagnostics tests shipped with the latest NetWinders. It looks like all the failures are due to software incompatibilities, but I won't know for sure until the next "official distribution" is out. The most serious problem is that the temperature sensor cannot be read or the thermostat set reliably. As a consequence, the fan nevers goes to high speed and I only run the machine for limited periods at a time.

I currently have two goals. First, catch up to the "state-of-the-art" so I can contribute to the next distribution release. I'm installing andrewm's 5.1 RPMs.

Second, I'm looking into writing a userland utility that can "reset" the thermostat chip so that I can leave my NetWinder running. I don't know if just resetting the chip will work or if I will finish before the new release obsoletes my work, but it's a good way to get my hands dirty with the hardware.

September 14, 1998
My current status is that I have not yet received my NetWinder, but I've been participating in the devel@netwinder.org discussion.