Linux on the Palm Tungsten T

Published: Wed 15 June 2005 by Ludo In Soft

Running Linux on the Tungsten T and some hardware information gathered on one page.

Booting Linux

Many thanks to Nikolay Petukhov ! Thanks to his TT2 kernel, I first booted Linux on my Palm. I downloaded his 'garux_usb.prc' kernel (also here), took my favorite binary editor to transform the TT2 hardware check into a TT1 check and it booted perfectly ! (find the 1st '0x00 0x32' sequence and replace '0x32' by '0x31')

The palm once in its cradle, the CDCEther module should load and you will ping the Palm on 192.168.5.31. I then telneted to it and played a little as you can see on the logs below. The only difference between the TT1 and the TT2 seems to have been detected properly: 16MB of RAM instead of 32MB.

My kernel, initrd, and sources are available here.

Notes: root password = root, you can mount NFS FS with 'mount 192.168.5.1:/tmp /mnt -o nolock,nfsvers=2'

~ # cat /proc/version 
Linux version 2.6.11-omap1-palmtt2 (root@red.localdomain) (gcc version 3.4.4 20041218 (prerelease) (Debian 3.4.3-1)) #19 Tue Nov 1 20:20:35 CET 2005

~ # free
              total         used         free       shared      buffers
  Mem:        14456         2272        12184            0            0
 Swap:            0            0            0
Total:        14456         2272        12184

~ # ps
  PID  Uid     VmSize Stat Command
    1 root        172 S   init  
    2 root            SWN [ksoftirqd/0]
    3 root            SW< [events/0]
    4 root            SW< [khelper]
    9 root            SW< [kthread]
   16 root            SW< [kblockd/0]
   43 root            SW  [pdflush]
   44 root            SW  [pdflush]
   46 root            SW< [aio/0]
   45 root            SW  [kswapd0]
  710 root        208 S   /bin/sh /etc/init.d/rcS 
  713 root        220 S   /bin/sh /etc/init.d/rcS 
  727 
root        156 S   /sbin/getty -L ttyS2 57600 
  728 root        112 S   /sbin/telnetd 
  729 root        248 S   -sh 
  732 root        264 R   -sh 

~ # dmesg
Linux version 2.6.11-omap1-palmtt2 (root@red.localdomain) (gcc version 3.4.4 20041218 (prerelease) (Debian 3.4.3-1)) #19 Tue Nov 1 20:20:35 CET 2005
CPU: ARM925Tid(wt) [54029152] revision 2 (ARMv4T)
CPU0: D VIVT write-back cache
CPU0: I cache: 16384 bytes, associativity 2, 16 byte lines, 512 sets
CPU0: D cache: 8192 bytes, associativity 2, 16 byte lines, 256 sets
Machine: Generic OMAP1510/1610/1710
Warning: bad configuration page, trying to continue
Memory policy: ECC disabled, Data cache writethrough
OMAP_DIE_ID_0: 0x4f8d0b12
OMAP_DIE_ID_1: 0xb718c83c DIE_REV: 12
OMAP_PRODUCTION_ID_0: 0x00000000
OMAP_PRODUCTION_ID_1: 0x00000000 JTAG_ID: 0x0000
OMAP32_ID_0: 0x03310115
OMAP32_ID_1: 0x3b47002f
JTAG_ID: 0xb470 DIE_REV: 12
OMAP1510 revision 12 handled as 15xx id: b718c83c4f8d0b12
On node 
0 totalpages: 4096
  DMA zone: 4096 pages, LIFO batch:1
  Normal zone: 0 pages, LIFO batch:1
  HighMem zone: 0 pages, LIFO batch:1
Built 1 zonelists
Kernel command line:  rw mem=16M console=tty0
Total of 64 interrupts in 2 interrupt banks
PID hash table entries: 128 (order: 7, 2048 bytes)
Console: colour dummy device 80x30
Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
Memory: 16MB = 16MB total
Memory: 14184KB available (1401K code, 314K data, 248K init)
Calibrating delay loop... 59.80 BogoMIPS (lpj=299008)
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
CPU: Testing write buffer coherency: ok
NET: Registered protocol family 16
DMA support for OMAP1510 initialized
OMAP1510 GPIO hardware
Initializing OMAP McBSP system
USB: hmc 0, usb0 2 wires (dev)
NetWinder Floating Point Emulator V0.97 (double precision)
omapfb: configured for panel generic1510
OMAP LCD 
controller initialized.
Console: switching to colour frame buffer device 80x53
OMAP framebuffer initialized vram=262144
Serial: 8250/16550 driver : 1.90 $ 4 ports, IRQ sharing disabled
ttyS0 at MMIO 0xfffb0000 (irq = 46) is a ST16654
ttyS1 at MMIO 0xfffb0800 (irq = 47) is a ST16654
ttyS2 at MMIO 0xfffb9800 (irq = 15) is a ST16654
io scheduler noop registered
RAMDISK driver initialized: 8 RAM disks of 4096K size 1024 blocksize
udc: OMAP UDC driver, version: 4 October 2004 (iso) (dma)
udc: OMAP UDC rev 2.5
funx_mux_ctrl_0:f040040
Mod_conf_ctrl_0:b208000
udc: hmc mode 0, transceiver (unknown)
udc: fifo mode 3, 648 bytes not used
usb0: Ethernet Gadget, version: Equinox 2004
usb0: using omap_udc, OUT ep2out-bulk IN ep1in-bulk STATUS ep3in-int
usb0: MAC de:61:02:71:63:02
usb0: HOST MAC 32:d9:25:6e:f8:53
mice: PS/2 mouse device common for all mice
NET: Registered protocol family 2
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP 
established hash table entries: 1024 (order: 1, 8192 bytes)
TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
TCP: Hash tables configured (established 1024 bind 1024)
NET: Registered protocol family 1
NET: Registered protocol family 17
Freeing init memory: 248K
udc: USB reset done, gadget ether
usb0: full speed config #1: 100 mA, Ethernet Gadget, using CDC Ethernet


/proc # cat cpuinfo 
Processor       : ARM925Tid(wt) rev 2 (v4l)
BogoMIPS        : 59.80
Features        : swp half thumb 
CPU implementer : 0x54
CPU architecture: 4T
CPU variant     : 0x0
CPU part        : 0x915
CPU revision    : 2
Cache type      : write-back
Cache clean     : cp15 c7 ops
Cache lockdown  : not supported
Cache format    : Harvard
I size          : 16384
I assoc         : 2
I line length   : 16
I sets          : 512
D size          : 8192
D assoc         : 2
D line length   : 16
D sets          : 256

Hardware        : Generic 
OMAP1510/1610/1710
Revision        : 15100015
Serial          : 4f82342342b718c83c

What's next ? Nothing :-( The Tungsten has not enough flash and RAM to be usable under Linux. So, wait for the next PalmOS/Linux device or buy a Zaurus!

Tungsten T Processor info

A TI OMAP 1510 was used for the Palm Tungsten T which has two processors inside: one ARM 925T CPU (300 MIPS at 144 MHz), and a TI C55x DSP with up to 400 MIPS at 200 Mhz !

Here are the details.

TMS320C55x DSP Core:

  • Up to 200 MHz (maximum frequency)
  • One/two instructions executed per cycle
  • 32K x 16-bit on-chip dual-access RAM (DARAM) (64 KB)
  • 48K x 16-bit on-chip single-access RAM (SARAM) (96 KB)
  • 16 KB I-cache, 8 KB D-cache
  • Video hardware accelerators for DCT, iDCT, pixel interpolation, and motion estimation for video compression

TI925T ARM9TDMI Core:

  • Up to 175 MHz (maximum frequency)
  • 16KB I-cache; 8KB D-cache
  • 192-KB of shared internal SRAM - frame buffer
  • Support for 32-bit and 16-bit (Thumb mode) instruction sets for increased code density
  • Data and program MMUs
  • Two 64-entry translation look-aside buffers (TLBs) for MMUs
  • 17-word write buffer

Memory Traffic Controller (TC):

  • 16-bit EMIFS external memory interface
  • 16-bit EMIFF external memory interface

  • 9-Channel System DMA Controller

  • Digital Phase-Locked Loop (DPLL) for MPU/DSP/TC Clocking Control
  • Comprehensive Power-Saving Modes for MPU/DSP/TC
  • IEEE Standard 1149.1 (JTAG) Boundary Scan Logic

Application Subsystem:

  • Three 32-bit timers and watchdog timer
  • 32-kHz timer
  • Level1/Level2 interrupt handlers
  • USB1.1 host interface with up to 3 ports
  • USB1.1 function interface
  • One integrated USB transceiver for either host or function
  • Multichannel buffered serial port (McBSP)
  • I2C master and slave interface
  • Micro-wure serial interface
  • MMC/SD interface
  • HDQ/1-wire interface
  • Camera interface for CMOS sensors
  • ETM9 trace module for TI925T debug
  • Keyboard matrix interface (6 x 5 or 8 x 8)
  • Up to 10 MPU general-purpose I/Os
  • Pulse-width tone (PWT) interface
  • Pulse-width light (PWL) interface
  • Two LED pulse generators
  • Real-time clock
  • LCD controller with dedicated system DMA channel
  • Two multichannel buffered serial ports
  • Two multichannel serial interfaces
  • Three UARTs (one supporting SIR mode for IrDA)
  • Four interprocessor mailboxes
  • Up to 14 shared general-purpose I/Os

Gnome calendar on the TT

The mandatory photo!

Gnome calendar Palm Tungsten

What's inside the TT ?

You'll find nice take apart instructions here.

Technical Documentation for the Palm Tungsten T

ARM 925T documentation : http://www.arm.com

TI C5xx DSP : http://focus.ti.com/docs/prod/folders/print/omap5910.html ?

OMAP 1510 Peripherals : no real documentation found !

MontaVista has made Linux Kernel patches to run Linux on the OMAP1510. You can look at the source and learn at ftp://source.mvista.com/pub/omap/2.4/.

Also the OMAP5910's datasheet can be useful. It can be downloaded here or there.

Another Linux OMAP Page: http://www.muru.com/linux/omap/ and a bitkeeper tree which seems to be active: http://linux-omap.bkbits.net/

Linux on Tungsten project: http://www.likid.org/palm/

If you have more details, please comment below! 😉

LD. --

Similar posts for you:

Speak your mind: