Project Idea

Daniel Gimpelevich daniel at gimpelevich.san-francisco.ca.us
Sun Feb 12 21:59:33 PST 2017


On Mon, 2016-08-08 at 15:04 -0400, Douglas Paul wrote:
> My old DM currently has a version of Gentoo I was trying to get going
> with a
> patched gcc to support the 'neweabi' without the return instruction it
> requires. It was actually working fine and had good performance, but I
> lacked spare time to migrate the server to it.

Lately, I've been thinking about finally doing something from my
NetWinder TODO list of _eleven_ years ago next month. What you already
did with Gentoo and gcc was certainly on it, so it would be great if you
could post that somewhere. I don't think I can find that list now, but I
remember the following. I wanted to start with hardware optimizations
and then move on to software.

Priority #1 on it was/is 256MB of RAM. Looking back through a few posts
I made to this list, I erroneously said "128MB" instead a few times, but
I meant 256MB. The NetWinder's lack of an additional address line meant
that requirements for modules that could theoretically be modified to be
4 arrays of 32 bits instead of 2 arrays of 64 bits were roughly the same
as for i440BX-based laptops as well as the bottom socket of
"tray-loading" iMac and 1998 and 1999 PowerBook models from Apple.
Although they were compatible, upgrades marketed toward the BX chipset
did not have nearly as long a product lifecycle as those marketed toward
the Macs, in which form they were still in production as of September
2006, including the RD256F44UWSIM from RamDirect in Silicon Valley, a
short distance away. IIRC, some modules were engineered specifically to
be able to do 4 banks by 4M by 16 bits using only 8 chips, i.e. 4 denser
chips per side. At that time, I spoke by phone with Joe, the owner of
RamDirect, about possible SODIMM modifications, and he unexpectedly
volunteered to perform them himself, on either an individual or group
basis. To locate points to modify, he sent me two photos of a blank PCB
he said was used for the RD256F44UWSIM, and a functional block diagram:
http://linuxmafia.com/~danielg4/ram/SODIMM_Side1.jpg
http://linuxmafia.com/~danielg4/ram/SODIMM_Side2.jpg
http://linuxmafia.com/~danielg4/ram/blockDiag.jpg
This did not look right to me, because there were places for two gates
on the PCB but only one in the diagram. Nevertheless, I worked out in my
head how the design in the diagram is able to work around the lack of an
additional address line coming in using the chip select, and sent back
the following speculative modification to it:
http://linuxmafia.com/~danielg4/ram/modified-blockDiag.jpg
He sent back the Gerber-D files he said were for the same module as in
the above photos:
http://linuxmafia.com/~danielg4/ram/144SO16R.zip
http://linuxmafia.com/~danielg4/ram/144SO16C.zip
They matched the functional diagram above exactly and even included it
as a PDF, but they did not match the photos above. Since he was not able
to find more details on the PCB's he did have, nothing was done. A year
later, it later occurred to me that I might be able to find such a
module in a cast-off Mac, so I went to Craigslist and immediately saw a
Rev.D Grape iMac with no hard disk and 288MB of RAM for $38, cheaper
than any module, and quite obviously 256+32. The guy even dropped it off
and didn't wait for me to count bills, so I got it for $36. I removed
the 256MB module from the top socket and left the 32MB one from the
bottom socket in the machine before I remembered that only bottom-socket
256MB modules were suitable, and sure enough, it has a CY2308ZC-1H on
it. At this time, I absolutely cannot recall how the A12/CS gating above
worked, so by extension, I am at a complete loss as to my thinking that
produced the above modification. If someone could enlighten me,
theoretically there may still be suitable modules around:
https://www.micron.com/~/media/documents/products/data-sheet/modules/sodimm/sdf16c32_64x64hg.pdf
http://www.kawakami-ca.com/8_chip_low_density_256mb_sodimm/
I used the iMac with 32MB a couple of times to mess with people by
netbooting it using the initrd from LTSP but modified to boot directly
to a full-screen RDP client, making the machine appear to boot directly
into Windows XP Professional before Intel iMacs existed.

The second hardware optimization I hoped to make if I could was to
fashion some sort of "RAM drive" that exposed some additional slow RAM
directly as a block device on PATA slave, which could be the target of
mkswap on boot to reduce wear on the PATA master device. As such, a
three-gigabyte hard disk in this century isn't even enough to be a joke.
In this day and age, a CF card or even two (barring the RAM drive idea)
would be the obvious choice, for a theoretical maximum of 256GiB, faster
than the biggest 2.5" PATA drive ever made: 320GB. Another theoretical
option is a PATA to SATA adapter. However, looking back on this list,
whether the NetWinder can address more than 128GiB was in question and
never confirmed. Either way, there would need to be a way to attach
everything to the 2.5" hard drive rails.

Then comes the software. Aside from NetBSD and LFS, the only modern
distros that looked like they could work were Gentoo and buildroots such
as OpenWrt/LEDE, which easily lends itself to the dual NIC's. You did
the Gentoo work, and porting that to OpenWrt/LEDE would likely be
trivial. AFAICT, there are no outstanding kernel issues except video
capture and sound, although someone else has recently written a
WaveArtist ALSA driver:
https://patchwork.kernel.org/patch/7066621/
https://patchwork.kernel.org/patch/7066591/
The v4l-dvb framework has changed a great deal in recent years, so
adding video capture support at this point would not be so trivial. The
remaining hardware support issue that I know about right now is that
AFAICT, neither VGA output nor a framebuffer work in Xorg at this point,
and I don't know what it would take to fix it.

Finally, it should be deployed for a use case which it can somehow serve
more elegantly than a Raspberry Pi or other such device. The years have
not been kind to any ideas I had for it, so the normal flow of "use case
first" is sadly turned around. Does the parallel port support ECP?




More information about the Netwinder mailing list