
С давних пор лежит без дела такой девайс. Брал его как внешний накопитель для серьезной задачи, но, как на форуме производителя написал админ того форума, "его надо забыть, как страшный сон"
С другой стороны, я подумал - а может можно его перепрошить для чего полезного?
Google на эту тему промолчал, поэтому попробую сам.
Начал с того, что извлек плату контроллера из корпуса. Сфотографировал и разобрался, как подключить консоль.На скорую руку сделал переходник на мой usb-кабель:
Подключаюсь через Putty. Подобрал параметры настройки последовательного порта: 115200,8,N,1.
Итак, теперь посмотрю, что выдаст система при загрузке:
** LOADER **
** BOARD NAME: ZET_RDK036_DDR1_BE BE
** BOARD ID: 15
U-Boot 1.1.1 (Sep 18 2006 - 20:40:26)
=========== Cameo/Zetera Version: 0.0.7.2 ===========
DRAM CS[0] base 0x00000000 size 32MB
DRAM Total size 32MB
[4096kB@ffc00000] Flash: 4 MB
Addresses 8M - 0M are saved for the U-Boot usage.
Mem malloc Initialization (8M - 4M): Done
Soc: MV88F5182 Rev 2
CPU: ARM926 (Rev 0) running @ 500Mhz
SysClock = 166Mhz , TClock = 166Mhz
Net: egiga0 [PRIME]
egiga0 no link
Using egiga0 device
Hit any key to stop autoboot: 0
Приостановил загрузку и посмотрел на встроенный help:
[more]Zetera> help
? - alias for 'help'
FSdel - del a file from the Flash MV FS
FSdir - ls the Flash MV FS
FSformat- format the Flash MV FS
FSlef - Load an exe file to the Flash MV FS
FSlf - Load a file to the Flash MV FS
FSrun - Load an exe file from the Flash MV FS and run it
FStftp - tftp a file to the Flash MV FS
FStftpe - tftp an exe file to the Flash MV FS
FStype - cat file from the Flash MV FS
base - print or set address offset
boot - boot default, i.e., run 'bootcmd'
bootd - boot default, i.e., run 'bootcmd'
bootelf - Boot from an ELF image in memory
bootext2 dev:boot_part1,boot_part2 addr boot_image linux_dev_name
bootm - boot application image from memory
bootp - boot image via network using BootP/TFTP protocol
bootvx - Boot vxWorks from an ELF image
bubt - Burn an image on the Boot Flash.
chpart - change active partition
cmp - memory compare
cmpm - Compare Memory
cp - memory copy
cpumap - Display CPU memory mapping settings.
crc32 - checksum calculation
date - get/set/reset date & time
dclk - Display the MV device CLKs.
ddimm - Display SPD Dimm Info
dhcp - invoke DHCP client to obtain IP/boot params
diskboot- boot from IDE device
dma - Perform DMA
echo - echo args to console
eeprom - EEPROM sub-system
enaloop - Configure the Ethernet to run with Gibabit loop-back stub.
erase - erase FLASH memory
ext2load- load binary file from a Ext2 filesystem
ext2ls- list files in a directory (default /)
fi - Find value in the memory.
flinfo - print FLASH memory information
fsinfo - print information about filesystems
fsload - load binary file from a filesystem image
g - start application at cached address 'addr'(default addr 0x40000)
go - start application at address 'addr'
help - print online help
icrc32 - checksum calculation
ide - IDE sub-system
iloop - infinite loop on address range
imd - i2c memory display
imm - i2c memory modify (auto-incrementing)
imw - memory write (fill)
inm - memory modify (constant address)
iprobe - probe to discover valid I2C chip addresses
ir - reading and changing MV internal register values.
ln - Load S-Record executable file through the network interface.
loop - infinite loop on address range
ls - list files in a directory (default /)
map - Diasplay address decode windows
md - memory display
me - PCI master enable
mm - memory modify (auto-incrementing)
mp - map PCI BAR
mtest - simple RAM test
mw - memory write (fill)
nm - memory modify (constant address)
pci - list and access PCI Configuraton Space
phyRead - Read Phy register
phyWrite - Write Phy register
ping - send ICMP ECHO_REQUEST to network host
printenv- print environment variables
protect - enable or disable FLASH write protection
rarpboot- boot image via network using RARP/TFTP protocol
reset - Perform RESET of the CPU
resetenv - Return all environment variable to default.
run - run commands in an environment variable
saveenv - save environment variables to persistent storage
se - PCI Slave enable
setenv - set environment variables
sg - scanning the PHYs status
sleep - delay execution for some time
sp - Scan PCI bus.
testall - Test all components.
testdram - Test dram.
testflash - Test flash memory.
testled - Test led. Type 'help testled' for usage
testpci - Test pci interface.
all - Test SATA interface.
tftpboot- boot image via network using TFTP protocol
version - print monitor version
zboot - Zetera boot command.
zbubt - Burn an microsan image on the Boot Flash.
Zetera>[/more]
Теперь лог полной загрузки:
[more]Zetera>> reboot
syncing disks... done
unmounting file systems... done
rebooting...
** LOADER **
** BOARD NAME: ZET_RDK036_DDR1_BE BE
** BOARD ID: 15
U-Boot 1.1.1 (Sep 18 2006 - 20:40:26)
=========== Cameo/Zetera Version: 0.0.7.2 ===========
DRAM CS[0] base 0x00000000 size 32MB
DRAM Total size 32MB
[4096kB@ffc00000] Flash: 4 MB
Addresses 8M - 0M are saved for the U-Boot usage.
Mem malloc Initialization (8M - 4M): Done
Soc: MV88F5182 Rev 2
CPU: ARM926 (Rev 0) running @ 500Mhz
SysClock = 166Mhz , TClock = 166Mhz
Net: egiga0 [PRIME]
egiga0 no link
Using egiga0 device
Hit any key to stop autoboot: 3 2 1 0
Booting from flash ...
>> Wasabi NetBSD/MVORION Gzip Boot, Revision 1.2
>> (briggs@tref.local, Wed Apr 5 21:32:02 EDT 2006)
>> RAM 0x0 - 0x1ffffff, heap at 0x140000
>> Load address: 0x200000, Image address 0xffc05be4
Uncompressing image...|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\done.
Jumping to image @ 0x200000...
physical_freeend 00200000, physical_freestart 00009000
physical_freeend 001ee000, physical_freestart 00009000
logical = 0043a000
zmbuf pool initialized: PA 0x500000, VA 0xc0500000, len 0x300000
zcluster pool initialized: PA 0x800000, VA 0xc0800000, len 0x800000
Copyright (c) 2002, 2003, 2004, 2005
Wasabi Systems, Inc. All rights reserved.
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
The NetBSD Foundation, Inc. All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
The Regents of the University of California. All rights reserved.
Wasabi NetBSD 3.99.5 (build.RDK036) #2: Fri May 11 23:29:51 UTC 2007
rsharma@Rochak-Linux:/PROJECTS/release/Config-RDK036/obj/build.RDK036
total memory = 32768 KB
avail memory = 15680 KB
Zetera special allocation mbpool/mclpool 0xc0435500/0xc043562c
Zetera special allocation mbpool_cache/mclpool_cache 0xc04355e4/0xc04352a0
mainbus0 (root)
cpu0 at mainbus0: Marvell 1850 step A0 (Feroceon core)
cpu0: WB enabled LABT
cpu0: 32KB/32B 1-way Instruction cache
cpu0: 32KB/32B 1-way write-back-locking-C Data cache
mbus0 at mainbus0 base 0xf1020000 irq 0: AHB to MBUS Bridge
mvwdog0 at mbus0: Watchdog Timer
mvdevb0 at mbus0 target 1, irq 14: Device Bus
com0 at mvdevb0 offset 0x2000, irq 3: ns16550a, working fifo
com0: console
stdflash1 at mvdevb0 BootCS: Onboard BootFlash
stdflash1: 4 MB, 1 x 4 MB, CFI w/ AMD/Fujitsu std. cmd set
flash1 at stdflash1 00000000-00390000, untranslated, read/write
flash2 at stdflash1 00390000-00400000, untranslated, read-only
mvtwsi0 at mvdevb0 offset 0x1000, irq 5: Two Wire Serial Interface
mvtwsi0: I2C clocked at 94.696 Khz
iic0 at mvtwsi0: I2C bus
adt7463c0 at iic0 addr 0x2e ADT7463 thermal monitor and fan controller, addr: 2e
mvgec0 at mbus0 target 7, irq 22: Gigabit Ethernet Global Controller
gec0 at mvgec0 unit 0, irq 18: Gigabit Ethernet Controller, Unit 0
gec0: MAC address: 00:1b:2f:2f:9b:04
makphy0 at gec0 phy 8: Marvell 88E1111 Gigabit PHY, rev. 2
makphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-FDX, auto
mvpci0 at mbus0 target 3, irq 15: PCI Controller
mvpci0: mode Conventional PCI, width 32 bits, speed 66MHz
pci0 at mvpci0 bus 0
pci0: i/o space, memory space enabled, rd/line, rd/mult, wr/inv ok
mvidma0 at mbus0 target 6, irq 24: IDMA Controller
zmvsata0 at mbus0 target 8, irq 29: Sata Controller
************** sc->sc_base = 0xffe80000, SATAIntrIsr = 0xc0332a20
hddInit(): device ID 0x0, sc_base 0x0xffe80000
hddInit(): Probing.... Probing....
hddInit(): GSata 0x0xffe80000, GPci 0x0xffe81d40, Gif 0x0xffe80c00, Gpio 0x0xffe904f0hddInit(): SATA-II Drive[1] PHY Present.
hddInit(): Initializing....
hdd_soft_reset: resetting...
*** Drive 1 ***************************************************
model - WDC WD2500JS-00NCB1
firmware - 10.02E02WDC WD2500JS-00NCB1
serial - WD-WCANKD762324
revision - 254:0
***************************************************************
mvpci0: PCI Error Interrupt. Cause: 0x00000100
mvpci0: Error Event 0x00000100 - Address: 0x00020000, Command: 0xa
using EXT cmds...
hddInit(): Disk[1] Ready...
hdd_init: size of devInfo=594
clock: hz=100 stathz=0 profhz=0
md0: internal 128 KB image area
boot device: <unknown>
root on md0a dumps on md0b
root file system type: ffs
WARNING: CHECK AND RESET THE DATE!
Wasabi Embedded Programming Environment
Kshell debug console
Copyright (c) 2002, 2003, 2005 Wasabi Systems, Inc. All rights reserved.
Zetera>> bypassCodeInit() : Initializing bypass code
bypassCodeInit() : Allocating bypass code top memory pool
bypassCodeInit() : Allocating bypass code sub memory pools
bypassCodeInit() : Initializing bypass code functions
Bypass Error Reset is Enabled
errorHandler Done
initNullStruct Done
initIPCompare Done
rx_ustack Done
initFilterIP Done
initDGCompare Done
initFragManager Done
bypassCodeInit() : Done initializing bypass code
hddBPinit(): ...
hddBPinit(): Starting BPproc
hddBPinit(): BPproc Started
usanInit() : Starting usan initialization...
MicroSAN Version : 1.1.3
Date : May 11 2007 (16:29:14)
MicroSAN Signature : !*~5doi3jd71c0wq9101ta~*!
2-Bay Desktop system
ipAdd() : ip = 0.0.0.0 , anchor = 0x80000001, status = 1, ipType = 3
ipAdd() : ip = 255.255.255.255, anchor = 0x80000001, status = 1, ipType = 1
getMacAddr() : NIC[0] MAC Address : 0x1b2f2f9b04 : 0:1b:2f:2f:9b:4
makphy_service() : setmedia
*************** PHY STATUS ***************
makphy_status() : Auto negotiating...
mii_phy_statusmsg: mii_media_status=1
mii_phy_statusmsg() : linkdown
ipAdd() : ip = 0.0.0.0 , anchor = 0x80000001, status = 0, ipType = 3
mii_phy_statusmsg: mii_media_status=1
mii_phy_statusmsg() : linkdown
+++++ No loopback connector
Loopback cable not detected.
restoreEthernetSettings...
makphy_service() : setmedia
*************** PHY STATUS ***************
makphy_status() : Auto negotiating...
mii_phy_statusmsg: mii_media_status=1
mii_phy_statusmsg() : linkdown
*************** PHY STATUS ***************
makphy_status() : Auto negotiating...
makphy_status() : 100BaseT
makphy_status() : FULL DUPLEX
******************************************
mii_phy_statusmsg: mii_media_status=3
mii_phy_statusmsg() : linkup
*************** PHY STATUS ***************
makphy_status() : Auto negotiating...
makphy_status() : 100BaseT
makphy_status() : FULL DUPLEX
******************************************
gec0: gec_watchdog(): device timeout (txfree 1023 txnext 1, txdirty 0)
makphy_service() : setmedia
*************** PHY STATUS ***************
makphy_status() : Auto negotiating...
makphy_status() : 100BaseT
makphy_status() : FULL DUPLEX
******************************************
mii_phy_statusmsg: mii_media_status=3
mii_phy_statusmsg() : linkup
PING 192.168.123.185: 1 iterations of 64 data bytes
ipRemove() : ip = 0.0.0.0
setLeaseInfo() : NIC Index = 00
Client ID = MicroSAN Base[0]:00000000-0000-0000-0000-000000000000:1b2f2f9b04
HW Address = 1b2f2f9b04
Old IP Addr = 0.0.0.0
New IP Addr = 192.168.123.185
Server IP = 192.168.123.254
Old Net Mask = 0.0.0.0
New Net Mask = 255.255.255.0
Old Broadcast Addr = 0.0.0.0
New Broadcast Addr = 192.168.123.255
Lease time = 259200
ipConfig() : ip_addr_str = 192.168.123.185 bcast_addr = 192.168.123.255 net_mask = ffffff00
ipAdd() : ip = 192.168.123.185, anchor = 0x80000001, status = 1, ipType = 3
soft_reset_int_init() : Initializing soft reset interrupt.
********************************
usanStart: root[0] not alive
********************************
usanStart: initializing root[1]...
setNicIndex() : Single NIC : iRootIdx = 1 nicIndex = 0
check_context_status[1,0]: stored root chksm=f1aa
check_context_status[1,0]: fw sequence number=6
check_context_status[1,0]: context status comparison succeeded
PING 192.168.123.189: 1 iterations of 64 data bytes
setLeaseInfo() : NIC Index = 00
Client ID = Root[1]:32333234-0009-ad38-462b-000000000000:21b2f2f92a9
HW Address = 21b2f2f92a9
Old IP Addr = 0.0.0.0
New IP Addr = 192.168.123.189
Server IP = 192.168.123.254
Old Net Mask = 255.255.255.0
New Net Mask = 255.255.255.0
Old Broadcast Addr = 192.168.123.255
New Broadcast Addr = 192.168.123.255
Lease time = 259200
ipAdd() : ip = 192.168.123.189, anchor = 0xc0416ec8, status = 1, ipType = 3
get_context: wChecksum=f1aa rootChecksum(0)=f1aa
save_root_context(1): saving context...context 0 done...context 1 done
usanStart() : root.partition = 0xc0416ec8, 0xc0417370
usanStart() : root[1] initialized.
********************************
ipAdd() : ip = 192.168.123.255, anchor = 0x80000001, status = 1, ipType = 1
upnpd_init() : effffffa added to the socket m/c membership
ipAdd() : ip = 239.255.255.250, anchor = 0x80000001, status = 1, ipType = 2
ipAdd() : ip = 224.0.0.1 , anchor = 0x80000001, status = 1, ipType = 2
SSDP task initialized
usanInit(): Initialization complete
Zmain(): usanInit() successful
usanMain: MicroSAN task started
usanHotswapTask
hddIsDrivePresent: drive(0) not present.
Zetera>> help
Available commands:
cpuDumpRegs
about
help
ddb
mbufchk
halt
poweroff
reboot
shell
dhclient
ifconfig
ping
sendpkt
setaddrs
doflash
tcpserver
devShow
rootShow
partShow
attribShow
dhcpShow
Z_TICKS
Z_TICKS_PER_SEC
resetDrive
bpShow
bpIPShow
iostat
perf_enable
perf_read
md
mm
checkloop
debugReadAllocStatus
passwordShow
resolveName
memShow
phyRead
driveLED
setBusy
partRead
partWrite
writeBadContext
flushDiskCache
reflash
dumpErrorLog
enableNCQ
sataShow
setDebugClass
encShow
test
Zetera>>[/more]
Теперь самое время проанализировать полученную информацию и можно ли использовать имеющийся загрузчик u-boot для загрузки своей ос.
(запись будет дополнена)