The Winterm Embedded System
Goal of this project was to build a truly low cost, low power system
that runs linux and is at least somewhat standard x86 without too much
The wyse winterm is a good choice because it met most of these requirements (shown is the compaq variant).
This setup is really a simplest prototype design for other
more elaborate projects. See my other page for info about the
winterm hardware internals and other links http://www.ccs.neu.edu/home/bchafy/t1010.html
No Scan Converter
The interface between the TV and the winterm VGA is comprised of just a
few resistors. No scan converters were used and winterms do not
have an onboard TV out capability, just ordinary VGA.
The video driver is programmed to clock and sync at an NTSC compatible mode from poweron (via the patched bios) and in the geode kernel framebuffer driver.
Geode GX1 Video
Recently, the 2.6 kernel changed the geode framebufer from the
terrible AMD durango to a completely opensource natvie diriver.
Its superior to the one in 2.4.x kernels. But it lacked in
its ability to do interlacing, doublescan, and low scanrates.
Also, after reading the cs5530 data sheet I found that the dot
clock PLL is quite flexible and can drive at just about any scanrate
from 10mhz to 200mhz and even a little outside of these boundries.
But it requires setting up the dot clock confiiguration register
with strange cryptic values and even more strange constraints.
So I made a dot clock register calculator that included all of the
lookup tables and boundry conditions.
Ive also added interlacing, double scan, pixdouble, v/h sync polarity
selection as well as some default NTSC compatible startup modes
(640x200 and 640x230) to
the gx1 framebuffer driver.
See the Files section below for these plus a t1010 downloadable bundle.
Ordinarily, a normal PC posts into INT10 mode 3, 80x25 text, and the
patched bios is enough to startup and run linux in NTSC-compatible text
mode for the duration. But the winterm firmware is a little
peculiar. It jumps into graphics mode 640x480x8 (INT10 mode 5F), then
shortly after goes into protected mode, then executes NK.BIN without ever changing back to a text mode.
Once in protected mode, going back to real mode (or emulated via vm86, or x86emu) is
no trivial task, and doing it for just the purpose of setting up a vga
text mode isnt very practical. So instead, the native
geode framebuffer does the work when linux starts. In
order to use X11, the framebuffer driver needed to be patched anyway,
so this kills both birds with the same stone.
The cs5530 include a capability for YUV
acceleration, enabling for fast display of video content. As far as I
can tell, nobody has ever written a driver or mplayer plugin to enable this.
One added, these platforms may be much more capable with video.
The ExpressAudio driver is still in the linux kernel. This
requires ExpressROM and/or VSA (software based hardware compatibility
layer hidden in SMI space which isnt very efficent or bug free).
Fortunately native audio drivers exist for the
Geode platform, for FreeBSD and linux.
See http://alumni.cse.ucsc.edu/~brucem/gx_audio/ and kahlua-native-sound-2.6.17.tar.bz2
No Power? No problem
I found that there wasn't any really good deals when it came to a basic
12v to 5v switching converter that could handle more than 1A.
There must be a demand for these or something. Anyway I
built one myself for just a few dollars with junkbox parts and a
switching regulator from ON Semiconductor (PN MC34167, came as free samples).
Not pretty, but functional. It handles up to 5A load and
generates almost no heat after testing for more than 4 hours continuous
The circuit is the same as the one in the datasheet, sans the PCB, just
using stiff wires. It was faster to assemble this way and avoids
the nasty etchant chemicals.
The completed circuit is small enough to be stuffed into a short section of PVC.
On the left is the 12V in, on the right is the 5V out to the winterm. The plug in the center is the 12V to the TV.
After building this, I discovered I could have made it even cheaper by
using the very common MC34063 and an external FET (which is
basically what the MC34167 is, except all in one package). The
advantage of the external FET is higher current handing. But for
a winterm, the power consumption is not even close to 5A.
Note, these images came out a little bit overexposed and contrasted.
In part because of a lousy digicam, but also because capturing a full tv raster scan required a long
exposure time. Otherwise only a fraction of the screen would appear.