Marvell U-Boot


Active Member

Reaction score: 64
Messages: 211

It is burned into some small flash area buy the manufacturer and normally doesn't have to be installed. Some old Marvell devices (e.g. Dockstar) shipped with u-boot versions lacking USB boot support but had enough flash to install a full featured u-boot. Only on such devices should you replace the bootloader because there is a risk to brick your board attempting to replace the bootloader.


Son of Beastie

Reaction score: 151
Messages: 3,247

I had been under the impression that a FreeBSD specific U-Boot had been installed, but after getting my new USB/serial connector hooked up properly I managed to record the boot process using script and cu -l /dev/cuaU0 -s 115200 and it would appear I don't need to worry about U-Boot at all.

Hope this manages to help anyone trying to do the same...

root@FreeBSD:~ # cu -l /dev/cuaU0 -s 115200


    -- NAS EXPLORER --
 _   _     ____              _
| | | |   | __ )  ___   ___ | |_
| | | |___|  _ \ / _ \ / _ \| __|
| |_| |___| |_) | (_) | (_) | |_
 \___/    |____/ \___/ \___/ \__|

U-Boot 1.1.4 (Sep 26 2011 - 13:01:13) Marvell version: 3.4.27
QSI NAS version: 1.0.6

U-Boot code: 00600000 -> 0067FFF0  BSS: -> 006CFB00

Soc: 88F6281 A1 (DDR2)
CPU running @ 1200Mhz L2 running @ 400Mhz
SysClock = 400Mhz , TClock = 200Mhz

DRAM CAS Latency = 5 tRP = 5 tRAS = 18 tRCD=6
DRAM CS[0] base 0x00000000   size 128MB
DRAM Total size 128MB  16bit width
Addresses 8M - 0M are saved for the U-Boot usage.
Mem malloc Initialization (8M - 7M): Done
256 MB
Flash:  0 kB

CPU : Marvell Feroceon (Rev 1)

Streaming disabled
Write allocate disabled

USB 0: host mode
PEX 0: interface detected no Link.
Net:   egiga0 [PRIME]
Hit any key to stop autoboot:  3 2 1 0

NAND read: device 0 offset 0x100000, size 0x600000

Reading data from 0x6ff800 -- 100% complete.
 6291456 bytes read: OK
## Booting image at 00800000 ...
   Image Name:   Linux-
   Created:      2010-06-17   5:37:59 UTC
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2095148 Bytes =  2 MB
   Load Address: 00008000
   Entry Point:  00008000
   Verifying Checksum ... OK

Starting kernel ...

Uncompressing Linux.................................................................................................................................... done, booting the kernel.
Linux version ( (gcc version 4.3.2 (sdk3.2rc1-ct-ng-1.4.1) ) #16 Thu Jun 17 01:37:53 EDT 2010
CPU: ARM926EJ-S [56251311] revision 1 (ARMv5TE), cr=00053977
Machine: Feroceon-KW
Using UBoot passing parameters structure
Memory policy: ECC disabled, Data cache writeback
CPU0: D VIVT write-back cache
CPU0: I cache: 16384 bytes, associativity 4, 32 byte lines, 128 sets
CPU0: D cache: 16384 bytes, associativity 4, 32 byte lines, 128 sets
Built 1 zonelists.  Total pages: 32512
Kernel command line: console=ttyS0,115200 ubi.mtd=2,2048 root=ubi0:rootfs rootfstype=ubifs init=/linuxrc
PID hash table entries: 512 (order: 9, 2048 bytes)
Console: colour dummy device 80x30
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Memory: 128MB 0MB 0MB 0MB = 128MB total
Memory: 125568KB available (3844K code, 261K data, 128K init)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
NET: Registered protocol family 16

CPU Interface
SDRAM_CS0 ....base 00000000, size 128MB
SDRAM_CS1 ....disable
SDRAM_CS2 ....disable
SDRAM_CS3 ....disable
PEX0_MEM ....base e8000000, size 128MB
PEX0_IO ....base f2000000, size   1MB
INTER_REGS ....base f1000000, size   1MB
NFLASH_CS ....base fa000000, size   2MB
SPI_CS ....base f4000000, size  16MB
CRYPT_ENG ....base f0000000, size   2MB

  Marvell Development Board (LSP Version KW_LSP_4.3.4_patch22)-- SHEEVA PLUG  Soc: 88F6281 A1 LE

 Detected Tclk 200000000 and SysClk 400000000
MV Buttons Device Load
Marvell USB EHCI Host controller #0: c057b600
PEX0 interface detected no Link.
PCI: bus0: Fast back to back transfers enabled
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
NET: Registered protocol family 2
Time: kw_clocksource clocksource has been installed.
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 4096 (order: 3, 32768 bytes)
TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
TCP: Hash tables configured (established 4096 bind 4096)
TCP reno registered
RTC registered
XOR registered 2 channels
XOR 2nd invalidate WA enabled
mvCesaInit: sessions=640, queue=64, pSram=f0000000
Warning: TS unit is powered off.
MV Buttons Driver Load
JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
io scheduler noop registered
io scheduler anticipatory registered (default)
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing disabled
serial8250.0: ttyS0 at MMIO 0xf1012000 (irq = 33) is a 16550A
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
loop: module loaded
Loading Marvell Ethernet Driver:
  o Cached descriptors in DRAM
  o DRAM SW cache-coherency
  o Single RX Queue support - ETH_DEF_RXQ=0
  o Single TX Queue support - ETH_DEF_TXQ=0
  o TCP segmentation offload enabled
  o Receive checksum offload enabled
  o Transmit checksum offload enabled
  o Network Fast Processing (Routing) supported
  o Driver ERROR statistics enabled
  o Driver INFO statistics enabled
  o Proc tool API enabled
  o SKB Reuse supported
  o SKB Recycle supported
  o Rx descripors: q0=128
  o Tx descripors: q0=532
  o Loading network interface(s):
    o  register under eth%d platform
    o eth0, ifindex = 1, GbE port = 0

Warning: Giga 1 is Powered Off

mvFpRuleDb (c7da7000): 1024 entries, 4096 bytes
Intel(R) PRO/1000 Network Driver - version 7.3.20-k2-NAPI
Copyright (c) 1999-2006 Intel Corporation.
e100: Intel(R) PRO/100 Network Driver, 3.5.17-k4-NAPI
e100: Copyright(c) 1999-2006 Intel Corporation
Integrated Sata device found
scsi0 : Marvell SCSI to SATA adapter
scsi1 : Marvell SCSI to SATA adapter
NFTL driver: nftlcore.c $Revision: 1.98 $, nftlmount.c $Revision: 1.41 $
NAND device: Manufacturer ID: 0x98, Chip ID: 0xda (Toshiba NAND 256MiB 3,3V 8-bit)
Scanning device for bad blocks
Using static partition definition
Creating 3 MTD partitions on "nand_mtd":
0x00000000-0x00100000 : "u-boot"
0x00100000-0x00700000 : "uImage"
0x00700000-0x10000000 : "root"
UBI: attaching mtd2 to ubi0
UBI: physical eraseblock size:   131072 bytes (128 KiB)
UBI: logical eraseblock size:    126976 bytes
UBI: smallest flash I/O unit:    2048
UBI: sub-page size:              512
UBI: VID header offset:          2048 (aligned 2048)
UBI: data offset:                4096
UBI: attached mtd2 to ubi0
UBI: MTD device name:            "root"
UBI: MTD device size:            249 MiB
UBI: number of good PEBs:        1992
UBI: number of bad PEBs:         0
UBI: max. allowed volumes:       128
UBI: wear-leveling threshold:    4096
UBI: number of internal volumes: 1
UBI: number of user volumes:     1
UBI: available PEBs:             0
UBI: total number of reserved PEBs: 1992
UBI: number of PEBs reserved for bad PEB handling: 38
UBI: max/mean erase counter: 1/0
UBI: background thread "ubi_bgt0d" started, PID 296
ehci_marvell ehci_marvell.70059: Marvell Orion EHCI
ehci_marvell ehci_marvell.70059: new USB bus registered, assigned bus number 1
ehci_marvell ehci_marvell.70059: irq 19, io base 0xf1050100
ehci_marvell ehci_marvell.70059: USB 2.0 started, EHCI 1.00, driver 10 Dec 2004
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
USB Universal Host Controller Interface driver v3.0
usb 1-1: new high speed USB device using ehci_marvell and address 2
usb 1-1: configuration #1 chosen from 1 choice
usbcore: registered new interface driver usblp
drivers/usb/class/usblp.c: v0.13: USB Printer Device Class driver
Initializing USB Mass Storage driver...
scsi2 : SCSI emulation for USB Mass Storage devices
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
mice: PS/2 mouse device common for all mice
i2c /dev entries driver
Linux telephony interface: v1.00
Marvell Telephony Driver:

Warning Tdm is Powered Off
md: linear personality registered for level -1
md: raid0 personality registered for level 0
md: raid1 personality registered for level 1
raid6: int32x1     91 MB/s
raid6: int32x2    109 MB/s
raid6: int32x4    119 MB/s
raid6: int32x8     94 MB/s
raid6: using algorithm int32x4 (119 MB/s)
md: raid6 personality registered for level 6
md: raid5 personality registered for level 5
md: raid4 personality registered for level 4
raid5: measuring checksumming speed
   arm4regs  :  1084.400 MB/sec
   8regs     :   822.000 MB/sec
   32regs    :   803.200 MB/sec
raid5: using function: arm4regs (1084.400 MB/sec)
device-mapper: ioctl: 4.11.0-ioctl (2006-10-12) initialised:
dm_crypt using the OCF package.
usbcore: registered new interface driver usbhid
drivers/hid/usbhid/hid-core.c: v2.6:USB HID core driver
TCP cubic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
md: Autodetecting RAID arrays.
md: autorun ...
md: ... autorun DONE.
UBIFS: mounted UBI device 0, volume 0, name "rootfs"
UBIFS: file system size:   239857664 bytes (234236 KiB, 228 MiB, 1889 LEBs)
UBIFS: journal size:       9023488 bytes (8812 KiB, 8 MiB, 72 LEBs)
UBIFS: media format:       4 (latest is 4)
UBIFS: default compressor: zlib
UBIFS: reserved for root:  0 bytes (0 KiB)
VFS: Mounted root (ubifs filesystem).
Freeing init memory: 128K
Failed to execute /linuxrc.  Attempting defaults...

INIT: version 2.86 booting

        Welcome to HipServ
        Press 'I' to enter interactive startup.
Setting clock : Tue Nov 21 19:08:00 GMT 2017 [  OK  ]

Starting udev: [  OK  ]

Setting hostname  [  OK  ]

Setting up Logical Volume Management:   No volume groups found
[  OK  ]

Checking filesystems
Checking all file systems.
[  OK  ]

Mounting local filesystems:  mount: sysfs already mounted or /sys busy
mount: according to mtab, /sys is already mounted on /sys

Enabling /etc/fstab swaps:  [  OK  ]

INIT: Entering runlevel: 3

Entering non-interactive startup
HipServ startup:[  OK  ]

Starting reset:  [  OK  ]

Starting seagate-lifecycle:[  OK  ]

Bringing up loopback interface:  [  OK  ]

Bringing up interface eth0:
Determining IP information for eth0... done.
/etc/init.d/iptables: line 42: /etc/sysconfig/networking/oe-profiles/default/ifcfg-eth0: No such file or directory
Flushing all current rules and user defined chains: [  OK  ]

Clearing all current rules and user defined chains: [  OK  ]

[  OK  ]
[  OK  ]
Applying iptables firewall rules:
[  OK  ]

[  OK  ] no process killed
Starting igd-daemon:sh: /usr/sbin/oe-gateway-check: No such file or directory
[  OK  ]
error reading information on service transmission.init: No such file or directory
[  OK  ]

Starting system logger: [  OK  ]

Starting kernel logger: [  OK  ]

Starting locator:[  OK  ]

Starting system message bus: [  OK  ]

Starting sshd: [  OK  ]

Starting cups: [  OK  ]

Starting vsftpd for vsftpd: [  OK  ]

Starting httpd: [  OK  ]

Starting appserver: [  OK  ]

Starting crond: [  OK  ]

Starting Netatalk services:
  Starting cnid_metad:[  OK  ]

  Starting afpd:[  OK  ]

Starting SMB services: [  OK  ]

Starting NMB services: [  OK  ]

Starting OEone System Proxy: SPD starting....log level=1, uid=0

[  OK  ]

Starting access-patrol:[  OK  ]

Starting Avahi daemon... [  OK  ]

Starting /usr/sbin/minidlna ...
Starting S99lld2: [  OK  ]

Starting DAAP server: [  OK  ]

Starting mynetworkd:[  OK  ]

    HipServ - Checking if RAID needs to be rebuilt
        HipServ - No RAID found
    HipServ - Bringing up iptables
    HipServ - Updating date...
[  OK  ]
    HipServ - Enabling swap
    HipServ - Cleaning USB mountpoints
    HipServ - Mounting USB devices
ufsd: module license 'Commercial product' taints kernel.
ufsd: driver 8.4 (011_A)  LBD=ON with ioctl loaded at bf04b000
NTFS read/write support included
NTFS includes 4K MBR support for device with sector size 512
Hfs+/HfsX read/write support included
Built for: seagate_axentra_512_COMBO
    HipServ -  Checking for FTPS certificate
        HipServ - Found vsftpd key file
    HipServ -  Ensuring that table structures are up-to-date
    HipServ - Starting usbreaderd: [  OK  ]
    HipServ - Checking for updates...
[  OK  ]
HipServ - boot complete
Starting spindownd.init:  [  OK  ]

Starting xMySyncMount.php:  [  OK  ] login:


Son of Beastie

Reaction score: 151
Messages: 3,247

It is burned into some small flash area buy the manufacturer and normally doesn't have to be installed. Some old Marvell devices (e.g. Dockstar) shipped with u-boot versions lacking USB boot support but had enough flash to install a full featured u-boot. Only on such devices should you replace the bootloader because there is a risk to brick your board attempting to replace the bootloader.
I have replaced U-Boot on my GoFlexHome unit according to instructions here.

What I'm not certain about is whether this version supports bootelf. Maybe I should investigate building it myself using the source here

Do I just need to run git clone to download a copy and subsequently run make?


Son of Beastie

Reaction score: 1,602
Messages: 4,595

Whoa be careful. Updating the uboot in NAND can brick your box.

I am happy to hear you got it up to date, but that sucessful booting FreeBSD mailing list post is using a uboot from 2010.
Yours was from 2011 before you upgraded it.
All I am saying is the stock uboot on the device may boot FreeBSD just fine.

Suss out your settings first, as the addresses look different to me.

Be very careful with that uboot on NAND I hate to see you get this far and brick it.
Just a little thought.


Son of Beastie

Reaction score: 151
Messages: 3,247


U-Boot 2017.05-tld-2 (Jul 26 2017 - 02:37:42 -0700)
Seagate GoFlex Home

SoC:   Kirkwood 88F6281_A1
DRAM:  128 MiB
WARNING: Caches not enabled
NAND:  256 MiB
In:    serial
Out:   serial
Err:   serial
Net:   egiga0
88E1116 Initialized on egiga0
Hit any key to stop autoboot:  0
BOOTP broadcast 1
BOOTP broadcast 2
BOOTP broadcast 3
*** Unhandled DHCP Option in OFFER/ACK: 125
*** Unhandled DHCP Option in OFFER/ACK: 125
DHCP client bound to address (1038 ms)
*** Warning: no boot file name; using 'C0A80136.img'
Using egiga0 device
TFTP from server; our IP address is
Filename 'C0A80136.img'.
Load address: 0x800000
Loading: T T T T T T T T T T
Retry count exceeded; starting again
Wrong Image Format for bootm command
ERROR: can't get kernel image!
GoFlexHome> usb start
starting USB...
USB0:   USB EHCI 1.00
scanning bus 0 for devices... 2 USB Device(s) found
       scanning usb for storage devices... 1 Storage Device(s) found
GoFlexHome> printenv
bootargs=root=/dev/nfs nfsroot= ip=
bootcmd=bootp; setenv bootargs root=/dev/nfs nfsroot=${serverip}:${rootpath} ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off; bootm
usb_boot=fatload usb $usb_device 0x900000 ubldr.bin; go 0x900000;

Environment size: 517/131068 bytes
GoFlexHome> fatload usb 0:1 0x2000000 ubldr
reading ubldr
295973 bytes read in 90 ms (3.1 MiB/s)
GoFlexHome> bootelf 0x02000000
CACHE: Misaligned operation at range [01000098, 01030c04]
CACHE: Misaligned operation at range [01030c04, 01031707]
CACHE: Misaligned operation at range [01031708, 010330f0]
CACHE: Misaligned operation at range [010330f0, 0103558b]
CACHE: Misaligned operation at range [01035590, 01036c98]
CACHE: Misaligned operation at range [01036c98, 01036cf4]
CACHE: Misaligned operation at range [01036cf4, 01036d5c]
CACHE: Misaligned operation at range [01036d5c, 01036e30]
CACHE: Misaligned operation at range [01036e30, 01036e3c]
## Starting application at 0x01000098 ...
Consoles: U-Boot console  
Compatible U-Boot API signature found @0x7b12860

FreeBSD/arm U-Boot loader, Revision 1.2
(Thu Nov 30 14:06:37 GMT 2017 root@Test)

Number of U-Boot devices: 2
U-Boot env: loaderdev not set, will probe all devices.
Found U-Boot device: disk
  Probing all disk devices...
  Checking unit=0 slice=<auto> partition=<auto>... good.
Booting from disk0s2:
/boot/kernel/kernel data=0x443064+0x30f9c syms=[0x4+0x932d0+0x4+0x667c5]

Hit [Enter] to boot immediately, or any other key for command prompt.
Booting [/boot/kernel/kernel] in 9 seconds... Booting [/boot/kernel/kernel] in 8 seconds... Booting [/boot/kernel/kernel] in 7 seconds... Booting [/boot/kernel/kernel] in 6 seconds... Booting [/boot/kernel/kernel] in 5 seconds... Booting [/boot/kernel/kernel] in 4 seconds... Booting [/boot/kernel/kernel] in 3 seconds... Booting [/boot/kernel/kernel] in 2 seconds... Booting [/boot/kernel/kernel] in 1 second... Booting [/boot/kernel/kernel]...               
Using DTB compiled into kernel.
Kernel entry at 0x1200100...
Kernel args: (null)
Copyright (c) 1992-2017 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
    The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 11.1-RELEASE #0: Thu Nov 30 14:22:01 GMT 2017
    root@Test:/usr/obj/arm.arm/usr/src/sys/DB-88F6XXX arm
FreeBSD clang version 4.0.0 (tags/RELEASE_400/final 297347) (based on LLVM 4.0.0)
module mvs already present!
CPU: Feroceon 88FR131 rev 1 (**unknown 4** core)
  Little-endian DC enabled IC disabled WA disabled DC streaming enabled
  BTB disabled L2 enabled L2 prefetch enabled
  WB enabled LABT branch prediction disabled
  16KB/32B 4-way instruction cache
  16KB/32B 4-way write-back-locking-C data cache
real memory  = 134213632 (127 MB)
avail memory = 123895808 (118 MB)
SOC: Marvell 88F6281 rev A1, TClock 200MHz
  Instruction cache prefetch disabled, data cache prefetch disabled
  256KB 4-way set-associative write-through unified L2 cache
random: entropy device external interface
ofwbus0: <Open Firmware Device Tree>
simplebus0: <Flattened device tree simple bus> on ofwbus0
cpulist0: <Open Firmware CPU Group> on ofwbus0
cpu0: <Open Firmware CPU> on cpulist0
localbus0: <Marvell device bus> on ofwbus0
nand0: <Marvell NAND controller> mem 0xf9300000-0xf93fffff on localbus0
nandbus0: <NAND bus> on nand0
ic0: <Marvell Integrated Interrupt Controller> mem 0x20200-0x2023b on simplebus0
timer0: <Marvell CPU Timer> mem 0x20300-0x2032f irq 1 on simplebus0
Event timer "CPUTimer0" frequency 200000000 Hz quality 1000
Timecounter "CPUTimer1" frequency 200000000 Hz quality 1000
gpio0: <Marvell Integrated GPIO Controller> mem 0x10100-0x1011f irq 35,36,37,38,39,40,41 on simplebus0
rtc0: <Marvell Integrated RTC> mem 0x10300-0x10307 on simplebus0
twsi0: <Marvell Integrated I2C Bus Controller> mem 0x11000-0x1101f irq 43 on simplebus0
iicbus0: <Philips I2C bus> on twsi0
iic0: <I2C generic I/O> on iicbus0
mge0: <Marvell Gigabit Ethernet controller> mem 0x72000-0x73fff irq 12,13,14,11,46 on simplebus0
mge0: PHY8 attached, phy_sc points to mge0
mge0: Ethernet address: 52:3b:20:9c:11:51
mge0: MII failed to find PHY
device_attach: mge0 attach returned 6
uart0: <16550 or compatible> mem 0x12000-0x1201f irq 33 on simplebus0
uart0: console (1056,n,8,1)
uart1: <16550 or compatible> mem 0x12100-0x1211f irq 34 on simplebus0
cesa0: <Marvell Cryptographic Engine and Security Accelerator> mem 0x30000-0x30fff,0x3d000-0x3dfff irq 22 on simplebus0
ehci0: <Marvell Integrated USB 2.0 controller> mem 0x50000-0x50fff irq 48, this point19 on simplebus0
usbus0: EHCI version 1.0
usbus0 on ehci0
mvs0: <Marvell 88F6281 SATA controller> mem 0x80000-0x85fff irq 21 on simplebus0
mvs0: Gen-IIe, 2 3Gbps ports, Port Multiplier supported with FBS
mvsch0: <Marvell SATA channel> at channel 0 on mvs0
mvsch1: <Marvell SATA channel> at channel 1 on mvs0
pcib0: <Marvell Integrated PCI/PCI-E Controller> mem 0xf1040000-0xf1041fff irq 44 on ofwbus0
pci0: <PCI bus> on pcib0
cryptosoft0: <software crypto>
Timecounters tick every 10.000 msec
usbus0: 480Mbps High Speed USB v2.0
Boot process stops at this point.... any ideas why?


New Member

Messages: 1

Hi balanga,

Any more progress on this? I am trying to setup 11.1 to run on a Zyxel NSA (325v2), which has 88F6282 and the same processor. Boot hangs at exactly the same point.


Son of Beastie

Reaction score: 151
Messages: 3,247

Hi balanga,

Any more progress on this? I am trying to setup 11.1 to run on a Zyxel NSA (325v2), which has 88F6282 and the same processor. Boot hangs at exactly the same point.
Unfortunately I bricked my GoFlexHome unit two months ago. I've just got hold of another one and am trying to get back to where I was but can't fully remember what I did.

If you've built 11.1 can you share what you did?

At the moment I'm documenting my progress here - feel free to join in.

BTW if you are handy at debugging C programs can you have a look at Thread 61777? It's a pain having to boot Ubuntu just to run kwboot which I need to do to try and get FreeBSD loading...