(Added YAMON commands) |
|||
(6 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). | ||
− | < | + | <PRE> |
− | ~ # cat /proc/cpuinfo | + | ~ # cat /proc/cpuinfo |
− | system type : Sigma Designs TangoX | + | system type : Sigma Designs TangoX |
− | processor : 0 | + | processor : 0 |
− | cpu model : MIPS 24K V7.12 FPU V0.0 | + | cpu model : MIPS 24K V7.12 FPU V0.0 |
− | Initial BogoMIPS : 332.59 | + | Initial BogoMIPS : 332.59 |
− | wait instruction : yes | + | wait instruction : yes |
− | microsecond timers : yes | + | microsecond timers : yes |
− | tlb_entries : 32 | + | tlb_entries : 32 |
− | extra interrupt vector : yes | + | extra interrupt vector : yes |
− | hardware watchpoint : yes | + | hardware watchpoint : yes |
− | ASEs implemented : mips16 | + | ASEs implemented : mips16 |
− | shadow register sets : 1 | + | shadow register sets : 1 |
− | VCED exceptions : not available | + | VCED exceptions : not available |
− | VCEI exceptions : not available | + | VCEI exceptions : not available |
− | + | ||
− | System bus frequency : 333000000 Hz | + | System bus frequency : 333000000 Hz |
− | CPU frequency : 499500000 Hz | + | CPU frequency : 499500000 Hz |
− | DSP frequency : 333000000 Hz | + | DSP frequency : 333000000 Hz |
− | </ | + | </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). | ||
− | < | + | <PRE> |
/proc # cat sigminfo | /proc # cat sigminfo | ||
dev: size offset name CS | dev: size offset name CS | ||
− | sigmblk0: 0ff80000 00000000 "CS0-Device" 0 | + | sigmblk0: 0ff80000 00000000 "CS0-Device" 0 |
− | sigmblk1: 00080000 00000000 "CS0-Part1" 0 | + | sigmblk1: 00080000 00000000 "CS0-Part1" 0 |
− | sigmblk2: 00040000 00080000 "CS0-Part2" 0 | + | sigmblk2: 00040000 00080000 "CS0-Part2" 0 |
− | sigmblk3: 00300000 000c0000 "CS0-Part3" 0 | + | sigmblk3: 00300000 000c0000 "CS0-Part3" 0 |
− | sigmblk4: 00300000 003c0000 "CS0-Part4" 0 | + | sigmblk4: 00300000 003c0000 "CS0-Part4" 0 |
− | sigmblk5: 01000000 006c0000 "CS0-Part5" 0 | + | sigmblk5: 01000000 006c0000 "CS0-Part5" 0 |
− | sigmblk6: 00800000 016c0000 "CS0-Part6" 0 | + | sigmblk6: 00800000 016c0000 "CS0-Part6" 0 |
− | sigmblk7: 05a00000 01ec0000 "CS0-Part7" 0 | + | sigmblk7: 05a00000 01ec0000 "CS0-Part7" 0 |
− | sigmblk8: 05a00000 078c0000 "CS0-Part8" 0 | + | sigmblk8: 05a00000 078c0000 "CS0-Part8" 0 |
− | sigmblk9: 00020000 0d2c0000 "CS0-Part9" 0 | + | sigmblk9: 00020000 0d2c0000 "CS0-Part9" 0 |
− | sigmblk10: 00020000 0d2e0000 "CS0-Part10" 0 | + | sigmblk10: 00020000 0d2e0000 "CS0-Part10" 0 |
− | sigmblk11: 00020000 0d300000 "CS0-Part11" 0 | + | sigmblk11: 00020000 0d300000 "CS0-Part11" 0 |
− | </ | + | </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: | ||
− | < | + | <PRE> |
− | YAMON> <B>net init</B | + | YAMON> <B>net init</B> |
− | em86xx_eth0 ethernet stop | + | em86xx_eth0 ethernet stop |
− | + | ||
− | em86xx_eth0 - full-duplex mode | + | em86xx_eth0 - full-duplex mode |
− | em86xx_eth0 - 100 Mbit/s | + | em86xx_eth0 - 100 Mbit/s |
− | em86xx_eth0 ethernet start | + | em86xx_eth0 ethernet start |
− | DHCP was successfully configured. | + | DHCP was successfully configured. |
− | ipaddr: 192.168.0.50 | + | ipaddr: 192.168.0.50 |
− | subnetmask: 255.255.255.0 | + | subnetmask: 255.255.255.0 |
− | gateway: 192.168.0.254 | + | gateway: 192.168.0.254 |
− | </ | + | </PRE> |
To load a kernel into memory from TFTP: | To load a kernel into memory from TFTP: | ||
− | < | + | <PRE> |
− | YAMON> <B>load -b tftp://192.168.0.251/vmlinux 0x84000000</B> | + | YAMON> <B>load -b tftp://192.168.0.251/vmlinux.bin 0x84000000</B> |
− | </ | + | </PRE> |
And then execute: | And then execute: | ||
− | < | + | <PRE> |
− | YAMON> <B>go | + | YAMON> <B>go</B> |
− | </ | + | </PRE> |
+ | |||
+ | |||
+ | == Kernel == | ||
+ | |||
+ | The YAMON bootloader requires a binary version of the kernel. Use objcopy to generate this file from the vmlinux ELF file. | ||
+ | |||
+ | <PRE> | ||
+ | mipsel-linux-objcopy -O binary vmlinux vmlinux.bin | ||
+ | </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 == | ||
+ | |||
+ | 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 : | ||
+ | |||
+ | <PRE> | ||
+ | tail -c +33 wdtvlive.bin > wdtvlive.stripped.bin | ||
+ | ./cramfsck-16k -x dump wdtvlive.stripped.bin | ||
+ | </PRE> |
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
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
Four 1Gbit Nanya NT5TU64M16DG-AC DDR2-800 SDRAMs have been used for volatile memory providing a total 512Mbytes of RAM.
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>
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
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