Random Facts about the Webpal hardware
The Webpal is a set top box appliance designed to provide Web access using
a television as a display. It comes with a IR keyboard and IR
remote control. The system is based around an Cirrus Logic CLPS7500FE,
an ARM processor. There is 1 MB of flash memory and a single
72 pin RAM socket that is populated with a 4 MB SIMM.. A superIO chip,
an SMC FDC37C666GT provides two serial ports, a parallel port, and the IDE
and floppy interfaces. The serial ports are not brought to outside
and are used internally for the IR and smart card slots.
CLPS7500 Memory and IO Clocks
The clocks for the CLPS7500 are derived from a Cromtel CH9294.
The CH9294 has several inputs that control its output frequencies.
These are hardwired on the Webpal to give a 80 Mhz clock for both the IO
clock and memory clock and a 25.175 Mhz display clock.
The sound clock is a 22.1184 crystal clock which is divided by 2 to give
something close to what the sound circuitry wants for CD rate sound output.
I assume this crystal frequency was used because it is a standard value.
However, since it is not exactly the correct frequency, sounds won't
be quite on pitch.
The clocks must all be divided by two when you set up the chip.
This gives a 40 MHz clock, the maximum for this version of the CLPS7500.
Since the CLPS7500 normally uses 32 Mhz for its IO clock and this design
uses 40 Mhz, busses and internal timers will run at the 1.25 times the expected
rates. I had to make some mods in Linux code to take the
different timer rates into account. For example, the clock driving
the timers is a 2.5 Mhz clock rather than a 2.0 Mhz clock.
The flash has a non-standard pin out compared to a RAM SIMM.
Some of the pins are the same, but since the flash has non-mulitplexed address
pins, it cannot match a RAM pin out. Its also only 16 bits
wide in most cases. A few Webpals come with 2M of Flash, using two chips
on the SIMM and making it 32 bits wide. My bootstrap loader only
works for a 16 bit wide SIMM.
The current version of Linux for the Webpal contains a MTD driver for
the Flash SIMM. This allows you to read and program any of the
four partitions from Linux. A special program is required to
erase a partition.
The A12 address pin on the CLPS7500 is not wired to the RAM SIMM slot.
Because of this, the Webpal doesn't support 4 K refresh RAM SIMMs.
16 MB and 32 MB SIMMs that use 4 K refresh will only report 1/2 of their
memory. 64 MB and 128 MB SIMMs will always report 1/4 of
their memory. So be sure to specify that you want 2K refresh SIMMs
if you buy either 16MB or 32MB SIMMs.
The Webpal does support double sided SIMMs. A double sided SIMM
will appear as two memory banks.
The video controller is integrated into the CLPS7500 ARM chip.
Connectors are provided for VGA, SVideo, and standard TV video. Because
there is no PLL circuitry on the board, the display resolution is limited
to 640 x 480. A Chrontel 7001A provides SVideo and video outputs
to use with a TV. It appears there is a way to tweak the centering
via the hardware, but I haven't done this yet.
A standard floppy connector is provided (J9). The functionality
is provided by a SuperIO chip, a SMC FDC37G666GT. No one is
currently using this interface so it is not known whether it has bugs.
Two serial ports are provided (J10 and J11). These connectors
are not stuffed but standard 10 pin dual headers can be added after the
holes are desoldered. The levels at these connectors are TTL
levels. The first serial port (J10) is already in use as
the interface for the IR keyboard/remote and smart card reader.
However, the second serial port (J11) is not used so by adding
an external RS-232-C driver board it can
be converted into a general purpose RS-232-C port.
The parallel port is provided by the SuperIO chip, a SMC FDC376G666GT.
This chip is located a offset 0x278. Its interrupt pin PINTR is
connected to INT3. Unfortunately, this is a level sensitive
interrupt pin, but the chip is wired to generate a short pulsed interrupt
on PINTR. To work around this in applications that needed parallel
port interrupts to work correctly, I wired the PINTR pin to nINT1
which is a edge triggered interrupt. INT6 maps in Linux to IRQ13
and nINT1 maps to IRQ2.
There is a single IDE connector (J13). Due to a bug discovered
by codeman, if you wish to use this interface, you must lift pin 11 of U2.
On boards that are PWB-11A Ver. 01, the IDE controller appears in the
primary slot. In all other boards, it is at the secondary address.
The default parameters in the bootstrap loader assume the IDE controller
is at the secondary address.
IR keyboard/remote and Smart card reader
The system comes with an IR keyboard and an IR remote control.
There is also a smart card slot on the front of the Webpal.
The IR keyboard/remote and smart card slot are handled by a Amtel AT89C52
microprocessor and passed to the primary serial port. I didn't
enable this serial port in Linux although this would be easy to do
by adding an entry in include/asm-arm/arch-cl7500/serial.h.
Instead, it makes more sense to write a keyboard driver that reads from
this port and maps the IR codes to keypushes. I do have such
a keyboard driver that supports the IR keyboard although its not in the current
Note that there is a wierd interaction between the IR keyboard and
the other serial port. When I have my RS-232-C board plugged
in, the IR keyboard refuses to work.
I don't have any information on the smart card reader.
Most likely, the serial data to and from the smart card is multiplexed on
the serial stream connected to the primary serial port. However,
the exact details are unknown.
There are a red, yellow, nd green LED on the front of the unit.
The Green LED is a power indicator. The other two LEDs are controlled
by software. The current version of Linux for the Webpal blinks
the yellow LED at 1 second intervals and the red LED is an activity indicator
that lights whenever Linux is not in its idle loop.
ISA Bus Slot
There is one ISA bus slot at physical address 0x08000000. This
is mapped by Linux to start at address 0xe1000000. At
the Linux programming and administration level, devices on the ISA bus are
addressed starting at 0x80400000.
The only interrupt supported by the ISA bus slot is IRQ3.
This maps to interrupt #9 in Linux.
Initializing the CLPS7500
The CLPS7500 chip requires a specfic set of instructions to go completely
into 32 bit mode. Look at my bootstrap loader to see the
sequence. I found this sequence in one of the ARM application
Updated: April 27, 2002