(4 intermediate revisions by one user not shown)
Line 5: Line 5:
 
It sports three processors combined into the SoC, a 500MHz MIPS 24KF main CPU+FPU, a 333MHz MIPS 4KEc IPU (Image Processing Unit) and a 333MHz Security CPU supporting conditional access (CA) and digital rights management (DRM).
 
It sports three processors combined into the SoC, a 500MHz MIPS 24KF main CPU+FPU, a 333MHz MIPS 4KEc IPU (Image Processing Unit) and a 333MHz Security CPU supporting conditional access (CA) and digital rights management (DRM).
  
<code>
+
<PRE>
~ # cat /proc/cpuinfo<br>
+
~ # cat /proc/cpuinfo
system type            : Sigma Designs TangoX<br>
+
system type            : Sigma Designs TangoX
processor              : 0<br>
+
processor              : 0
cpu model              : MIPS 24K V7.12  FPU V0.0<br>
+
cpu model              : MIPS 24K V7.12  FPU V0.0
Initial BogoMIPS        : 332.59<br>
+
Initial BogoMIPS        : 332.59
wait instruction        : yes<br>
+
wait instruction        : yes
microsecond timers      : yes<br>
+
microsecond timers      : yes
tlb_entries            : 32<br>
+
tlb_entries            : 32
extra interrupt vector  : yes<br>
+
extra interrupt vector  : yes
hardware watchpoint    : yes<br>
+
hardware watchpoint    : yes
ASEs implemented        : mips16<br>
+
ASEs implemented        : mips16
shadow register sets    : 1<br>
+
shadow register sets    : 1
VCED exceptions        : not available<br>
+
VCED exceptions        : not available
VCEI exceptions        : not available<br>
+
VCEI exceptions        : not available
<br>
+
 
System bus frequency    : 333000000 Hz<br>
+
System bus frequency    : 333000000 Hz
CPU frequency          : 499500000 Hz<br>
+
CPU frequency          : 499500000 Hz
DSP frequency          : 333000000 Hz<br>
+
DSP frequency          : 333000000 Hz
</code>
+
</PRE>
  
  
Line 31: Line 31:
 
The board contains a single Micron MT29F2G08AAD NAND FLASH with a capacity of 2Gbits x 8 (256MBytes).
 
The board contains a single Micron MT29F2G08AAD NAND FLASH with a capacity of 2Gbits x 8 (256MBytes).
  
<code>
+
<PRE>
 
/proc # cat sigminfo
 
/proc # cat sigminfo
 
dev:    size    offset  name    CS
 
dev:    size    offset  name    CS
sigmblk0: 0ff80000 00000000 "CS0-Device" 0<br>
+
sigmblk0: 0ff80000 00000000 "CS0-Device" 0
sigmblk1: 00080000 00000000 "CS0-Part1" 0<br>
+
sigmblk1: 00080000 00000000 "CS0-Part1" 0
sigmblk2: 00040000 00080000 "CS0-Part2" 0<br>
+
sigmblk2: 00040000 00080000 "CS0-Part2" 0
sigmblk3: 00300000 000c0000 "CS0-Part3" 0<br>
+
sigmblk3: 00300000 000c0000 "CS0-Part3" 0
sigmblk4: 00300000 003c0000 "CS0-Part4" 0<br>
+
sigmblk4: 00300000 003c0000 "CS0-Part4" 0
sigmblk5: 01000000 006c0000 "CS0-Part5" 0<br>
+
sigmblk5: 01000000 006c0000 "CS0-Part5" 0
sigmblk6: 00800000 016c0000 "CS0-Part6" 0<br>
+
sigmblk6: 00800000 016c0000 "CS0-Part6" 0
sigmblk7: 05a00000 01ec0000 "CS0-Part7" 0<br>
+
sigmblk7: 05a00000 01ec0000 "CS0-Part7" 0
sigmblk8: 05a00000 078c0000 "CS0-Part8" 0<br>
+
sigmblk8: 05a00000 078c0000 "CS0-Part8" 0
sigmblk9: 00020000 0d2c0000 "CS0-Part9" 0<br>
+
sigmblk9: 00020000 0d2c0000 "CS0-Part9" 0
sigmblk10: 00020000 0d2e0000 "CS0-Part10" 0<br>
+
sigmblk10: 00020000 0d2e0000 "CS0-Part10" 0
sigmblk11: 00020000 0d300000 "CS0-Part11" 0<br>
+
sigmblk11: 00020000 0d300000 "CS0-Part11" 0
</code>
+
</PRE>
  
 +
<PRE>
 
/dev # ls -l /dev/mtd*
 
/dev # ls -l /dev/mtd*
 
brw-r--r--    1 root    root    254,  0 Jan  1  2000 /dev/mtdblock0
 
brw-r--r--    1 root    root    254,  0 Jan  1  2000 /dev/mtdblock0
Line 69: Line 70:
 
brw-rw----    1 root    root    254,  10 Nov 12 12:51 /dev/sigmblockk
 
brw-rw----    1 root    root    254,  10 Nov 12 12:51 /dev/sigmblockk
 
brw-rw----    1 root    root    254,  11 Jan  1  2000 /dev/sigmblockl
 
brw-rw----    1 root    root    254,  11 Jan  1  2000 /dev/sigmblockl
 
+
</PRE>
  
 
sigmblocka
 
sigmblocka
Line 92: Line 93:
 
To initialise the network and obtain an IP address via DHCP:
 
To initialise the network and obtain an IP address via DHCP:
  
<code>
+
<PRE>
YAMON> <B>net init</B><br>
+
YAMON> <B>net init</B>
em86xx_eth0 ethernet stop<br>
+
em86xx_eth0 ethernet stop
<br>
+
 
em86xx_eth0 - full-duplex mode<br>
+
em86xx_eth0 - full-duplex mode
em86xx_eth0 - 100 Mbit/s<br>
+
em86xx_eth0 - 100 Mbit/s
em86xx_eth0 ethernet start<br>
+
em86xx_eth0 ethernet start
DHCP was successfully configured.<br>
+
DHCP was successfully configured.
ipaddr:    192.168.0.50<br>
+
ipaddr:    192.168.0.50
subnetmask: 255.255.255.0<br>
+
subnetmask: 255.255.255.0
gateway:    192.168.0.254<br>
+
gateway:    192.168.0.254
</code>
+
</PRE>
  
 
To load a kernel into memory from TFTP:
 
To load a kernel into memory from TFTP:
  
<code>
+
<PRE>
 
YAMON> <B>load -b tftp://192.168.0.251/vmlinux.bin 0x84000000</B>
 
YAMON> <B>load -b tftp://192.168.0.251/vmlinux.bin 0x84000000</B>
</code>
+
</PRE>
  
 
And then execute:
 
And then execute:
  
<code>
+
<PRE>
 
YAMON> <B>go</B>
 
YAMON> <B>go</B>
</code>
+
</PRE>
  
  
Line 122: Line 123:
 
The YAMON bootloader requires a binary version of the kernel. Use objcopy to generate this file from the vmlinux ELF file.
 
The YAMON bootloader requires a binary version of the kernel. Use objcopy to generate this file from the vmlinux ELF file.
  
<code>
+
<PRE>
 
mipsel-linux-objcopy -O binary vmlinux vmlinux.bin
 
mipsel-linux-objcopy -O binary vmlinux vmlinux.bin
</code>
+
</PRE>
 +
 
 +
The default kernel configuration doesn't enable rootnfs. if you try to specify a NFS root, the kernel will display :
 +
 
 +
<PRE>
 +
VFS: Cannot open root device "nfs" or unknown-block(0,255)<BR>
 +
Please append a correct "root=" boot option; here are the available partitions:
  
 +
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,255)</PRE>
  
 +
To turn this on, enable
 +
Networking -> Networking Options -> IP: kernel level autoconfiguration
 +
This will then allow you to enable :
 +
File Systems -> Network File Systems -> Root file system on NFS
  
 
== Root FS ==
 
== Root FS ==
Line 134: Line 146:
 
The filesystem is a CRAM ROM file system. To extract the contents :
 
The filesystem is a CRAM ROM file system. To extract the contents :
  
<code>
+
<PRE>
 
tail -c +33 wdtvlive.bin > wdtvlive.stripped.bin
 
tail -c +33 wdtvlive.bin > wdtvlive.stripped.bin
 
./cramfsck-16k -x dump wdtvlive.stripped.bin
 
./cramfsck-16k -x dump wdtvlive.stripped.bin
</code>
+
</PRE>

Latest revision as of 11:27, 3 January 2012

PCB Top NoHeatSink.jpg

The Western Digital TV Live is a media player running a Sigma Designs SMP8655 (Non Macrovision version of the SMP8654).

It sports three processors combined into the SoC, a 500MHz MIPS 24KF main CPU+FPU, a 333MHz MIPS 4KEc IPU (Image Processing Unit) and a 333MHz Security CPU supporting conditional access (CA) and digital rights management (DRM).

~ # cat /proc/cpuinfo
system type             : Sigma Designs TangoX
processor               : 0
cpu model               : MIPS 24K V7.12  FPU V0.0
Initial BogoMIPS        : 332.59
wait instruction        : yes
microsecond timers      : yes
tlb_entries             : 32
extra interrupt vector  : yes
hardware watchpoint     : yes
ASEs implemented        : mips16
shadow register sets    : 1
VCED exceptions         : not available
VCEI exceptions         : not available

System bus frequency    : 333000000 Hz
CPU frequency           : 499500000 Hz
DSP frequency           : 333000000 Hz


FLASH Memory

The board contains a single Micron MT29F2G08AAD NAND FLASH with a capacity of 2Gbits x 8 (256MBytes).

/proc # cat sigminfo
dev:    size     offset   name    CS
sigmblk0: 0ff80000 00000000 "CS0-Device" 0
sigmblk1: 00080000 00000000 "CS0-Part1" 0
sigmblk2: 00040000 00080000 "CS0-Part2" 0
sigmblk3: 00300000 000c0000 "CS0-Part3" 0
sigmblk4: 00300000 003c0000 "CS0-Part4" 0
sigmblk5: 01000000 006c0000 "CS0-Part5" 0
sigmblk6: 00800000 016c0000 "CS0-Part6" 0
sigmblk7: 05a00000 01ec0000 "CS0-Part7" 0
sigmblk8: 05a00000 078c0000 "CS0-Part8" 0
sigmblk9: 00020000 0d2c0000 "CS0-Part9" 0
sigmblk10: 00020000 0d2e0000 "CS0-Part10" 0
sigmblk11: 00020000 0d300000 "CS0-Part11" 0
/dev # ls -l /dev/mtd*
brw-r--r--    1 root     root     254,   0 Jan  1  2000 /dev/mtdblock0
brw-r--r--    1 root     root     254,   3 Jan  1  2000 /dev/mtdblock2
brw-r--r--    1 root     root     254,   6 Jan  1  2000 /dev/mtdblock3
lrwxrwxrwx    1 root     root           15 Jan  1  2000 /dev/mtdblock_bootloader -> /dev/sigmblocka
lrwxrwxrwx    1 root     root           15 Jan  1  2000 /dev/mtdblock_kernel -> /dev/sigmblockd
lrwxrwxrwx    1 root     root           15 Jan  1  2000 /dev/mtdblock_romfs -> /dev/sigmblockh

ls -l /dev/sigmblock*
brw-rw----    1 root     root     254,   0 Jan  1  2000 /dev/sigmblocka
brw-rw----    1 root     root     254,   1 Jan  1  2000 /dev/sigmblockb
brw-rw----    1 root     root     254,   2 Jan  1  2000 /dev/sigmblockc
brw-rw----    1 root     root     254,   3 Jan  1  2000 /dev/sigmblockd
brw-rw----    1 root     root     254,   4 Jan  1  2000 /dev/sigmblocke
brw-rw----    1 root     root     254,   5 Jan  1  2000 /dev/sigmblockf
brw-rw----    1 root     root     254,   6 Jan  1  2000 /dev/sigmblockg
brw-rw----    1 root     root     254,   7 Jan  1  2000 /dev/sigmblockh
brw-rw----    1 root     root     254,   8 Jan  1  2000 /dev/sigmblocki
brw-rw----    1 root     root     254,   9 Jan  1  2000 /dev/sigmblockj
brw-rw----    1 root     root     254,  10 Nov 12 12:51 /dev/sigmblockk
brw-rw----    1 root     root     254,  11 Jan  1  2000 /dev/sigmblockl

sigmblocka signblockc YAMON sigmblockd vmlinux_xload.zbf sigmblocke vmlinux_xload.zbf sigmblockh

sigmblockf Splash Screens


RAM Memory

Four 1Gbit Nanya NT5TU64M16DG-AC DDR2-800 SDRAMs have been used for volatile memory providing a total 512Mbytes of RAM.

YAMON PROM Monitor

The board uses MIPS's YAMON PROM Monitor as the bootloader. Source code is available from here.

To break into the YAMON console while booting, press the 0 key.

To initialise the network and obtain an IP address via DHCP:

YAMON> <B>net init</B>
em86xx_eth0 ethernet stop

em86xx_eth0 - full-duplex mode
em86xx_eth0 - 100 Mbit/s
em86xx_eth0 ethernet start
DHCP was successfully configured.
ipaddr:     192.168.0.50
subnetmask: 255.255.255.0
gateway:    192.168.0.254

To load a kernel into memory from TFTP:

YAMON> <B>load -b tftp://192.168.0.251/vmlinux.bin 0x84000000</B>

And then execute:

YAMON> <B>go</B>


Kernel

The YAMON bootloader requires a binary version of the kernel. Use objcopy to generate this file from the vmlinux ELF file.

mipsel-linux-objcopy -O binary vmlinux vmlinux.bin

The default kernel configuration doesn't enable rootnfs. if you try to specify a NFS root, the kernel will display :

VFS: Cannot open root device "nfs" or unknown-block(0,255)<BR>
Please append a correct "root=" boot option; here are the available partitions:

Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,255)

To turn this on, enable Networking -> Networking Options -> IP: kernel level autoconfiguration This will then allow you to enable : File Systems -> Network File Systems -> Root file system on NFS

Root FS

The WD Firmware distributes the firmware containing a filesystem image as a .bin file (e.g. wdtvlive.bin)

The filesystem is a CRAM ROM file system. To extract the contents :

tail -c +33 wdtvlive.bin > wdtvlive.stripped.bin
./cramfsck-16k -x dump wdtvlive.stripped.bin