[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Flattened Device Tree on SheevaPlug and Linux 3.15



Hello

I'm hoping someone can help point out the way to make U-Boot work with
Flattened Device Tree on the SheevaPlug.

I have the same Linux 3.15.1 kernel binary running on the OpenRD client,
but the OpenRD client has support baked into the kernel (presumably
because the OpenRD client has no newer version of U-Boot that can support
FDT).

On the SheevaPlug I upgraded from the original Marvell u-boot to the
version here:
 http://www.cyrius.com/debian/kirkwood/sheevaplug/uboot-upgrade/

I don't believe that the sheevaplug is actually an eSATA version - it
doesn't have an eSATA port -- maybe there's just support on board.

U-Boot 2011.12 (Mar 11 2012 - 18:59:46)
Marvell-Sheevaplug - eSATA - SD/MMC

SoC:   Kirkwood 88F6281_A0
DRAM:  512 MiB
WARNING: Caches not enabled
NAND:  512 MiB
In:    serial
Out:   serial
Err:   serial
Net:   egiga0
88E1116 Initialized on egiga0
Hit any key to stop autoboot:  0
Marvell>>

It has a standard setup from having re-flashed u-boot, apart from I added
setenv machid=a76

Marvell>> print
baudrate=115200
bootcmd=${x_bootcmd_kernel}; setenv bootargs ${x_bootargs}
${x_bootargs_root}; ${x_bootcmd_usb}; ${x_bootcmd_sata}; bootm 0x6400000;
bootdelay=3
ethact=egiga0
ethaddr=00:50:43:cc:34:2b
machid=a76
stderr=serial
stdin=serial
stdout=serial
x_bootargs=console=ttyS0,115200
mtdparts=orion_nand:512k(uboot),4m@1m(kernel),507m@5m(rootfs) rw
x_bootargs_root=ubi.mtd=2 root=ubi0:rootfs rootfstype=ubifs
x_bootcmd_kernel=nand read 0x6400000 0x100000 0x400000
x_bootcmd_sata=ide reset;
x_bootcmd_usb=usb start;

Environment size: 545/131068 bytes


Marvell>> dhcp;tftpboot 0x5880000
slackwarearm-current/dtb/kirkwood-sheevaplug.dtb
BOOTP broadcast 1
*** Unhandled DHCP Option in OFFER/ACK: 28
*** Unhandled DHCP Option in OFFER/ACK: 43
*** Unhandled DHCP Option in OFFER/ACK: 28
*** Unhandled DHCP Option in OFFER/ACK: 43
DHCP client bound to address 192.168.1.19
Using egiga0 device
TFTP from server 192.168.1.1; our IP address is 192.168.1.19
Filename 'pxelinux.0'.
Load address: 0x800000
Loading: #
done
Bytes transferred = 11826 (2e32 hex)
Using egiga0 device
TFTP from server 192.168.1.1; our IP address is 192.168.1.19
Filename 'dtb/kirkwood-sheevaplug.dtb'.
Load address: 0x5880000
Loading: #
done
Bytes transferred = 9779 (2633 hex)

Marvell>> tftpboot 0x01100000 initrd-kirkwood.img
Using egiga0 device
TFTP from server 192.168.1.1; our IP address is 192.168.1.19
Filename 'slackwarearm-current/uinitrd-kirkwood.img'.
Load address: 0x1100000
Loading: #################################################################
[ .. snip .. ]
done
Bytes transferred = 18873744 (11ffd90 hex)

Marvell>> tftpboot 0x00800000 uImage-kirkwood
Using egiga0 device
TFTP from server 192.168.1.1; our IP address is 192.168.1.19
Filename 'slackwarearm-current/uImage-kirkwood'.
Load address: 0x800000
Loading: #################################################################
[..snip..]
done
Bytes transferred = 2547312 (26de70 hex)
Marvell>>

Marvell>> setenv bootargs earlyprintk console=ttyS0,115200n8 kbd=uk nic=auto:eth0:dhcp root=/dev/ram rw
Marvell>> bootm 0x00800000 0x01100000 0x5880000

## Booting kernel from Legacy Image at 00800000 ...
   Image Name:   Linux-3.15.1-kirkwood
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2547248 Bytes = 2.4 MiB
   Load Address: 00008000
   Entry Point:  00008000
   Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at 01100000 ...
   Image Name:   Installer
   Image Type:   ARM Linux RAMDisk Image (gzip compressed)
   Data Size:    18873680 Bytes = 18 MiB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
   Loading Kernel Image ... OK
OK
Using machid 0xa76 from environment

Starting kernel ...

Uncompressing Linux... done, booting the kernel.

Error: unrecognized/unsupported machine ID (r1 = 0x00000a76).

Available machine support:

ID (hex)        NAME
0000089b        LaCie d2 Network v2
0000089e        LaCie 5Big Network v2
0000089c        LaCie 2Big Network v2
00000b44        Marvell OpenRD Ultimate Board
00000939        Marvell OpenRD Client Board
00000915        Marvell OpenRD Base Board
00000691        Marvell RD-88F6192-NAS Development Board
00000692        Marvell RD-88F6281 Reference Board
00000b1e        HP t5325 Thin Client
0000085b        QNAP TS-119/TS-219
000009c6        QNAP TS-41x

ffffffff        Marvell Kirkwood (Flattened Device Tree)

Please check your kernel config and/or bootloader.



....So I changed machid to ffffffff and tried again with exactly the same
boot parameters as above:-

.....


Using machid 0xffffffff from environment

Starting kernel ...

Uncompressing Linux... done, booting the kernel.
[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 3.15.1-kirkwood (root@pepa) (gcc version 4.8.3 (GCC) ) #2 Thu Jun 19 21:11:50 BST 2014
[    0.000000] CPU: Feroceon 88FR131 [56251311] revision 1 (ARMv5TE), cr=00053977
[    0.000000] CPU: VIVT data cache, VIVT instruction cache
[    0.000000] Machine: Marvell Kirkwood (Flattened Device Tree)
[    0.000000] bootconsole [earlycon0] enabled
[    0.000000] Memory policy: Data cache writeback
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 130048
[    0.000000] Kernel command line: earlyprintk console=ttyS0,115200n8 kbd=uk nic=auto:eth0:dhcp root=/dev/ram rw
[    0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)
[    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
[    0.000000] Memory: 495712K/524288K available (3431K kernel code, 250K rwdata, 1180K rodata, 188K init, 519K bss, 28576K reserved)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
[    0.000000]     vmalloc : 0xe0800000 - 0xff000000   ( 488 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xe0000000   ( 512 MB)
[    0.000000]     modules : 0xbf000000 - 0xc0000000   (  16 MB)
[    0.000000]       .text : 0xc0008000 - 0xc0488f14   (4612 kB)
[    0.000000]       .init : 0xc0489000 - 0xc04b83c4   ( 189 kB)
[    0.000000]       .data : 0xc04ba000 - 0xc04f8ba8   ( 251 kB)
[    0.000000]        .bss : 0xc04f8ba8 - 0xc057ab8c   ( 520 kB)
[    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] NR_IRQS:114
[    0.000000] clocksource_of_init: no matching clocksources found
[    0.000000] sched_clock: 32 bits at 100 Hz, resolution 10000000ns, wraps every 21474836480000000ns
[    0.000000] Console: colour dummy device 80x30


And this is where it stops.

The 'Machine:' line should indicate the model number (according to various
posts I've found around FTD and U-Boot).

The same kernel binary running on the OpenRD client has:-
droot@wizbit:~# dmesg | less
[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 3.15.1-kirkwood (root@pepa) (gcc version 4.8.3 (GCC) ) #2 Thu Jun 19 21:11:50 BST 2014
[    0.000000] CPU: Feroceon 88FR131 [56251311] revision 1 (ARMv5TE), cr=00053977
[    0.000000] CPU: VIVT data cache, VIVT instruction cache
[    0.000000] Machine: Marvell OpenRD Client Board


On the Sheeva I have tried both the eSATA FDT blob (the dtb file) and the
regular SheevaPlug blob, both with the same result.

My kernel has the support for appended DTBs so I also tried appending the
FDT blob to the uImage - again for both eSATA and regular Sheevaplug:
  cat dtbfile.dtb >> uImage
and then tried booting but this time only loading the initrd & kernel into
RAM (rather than loading the DTB and specifying the address to the 'boot'
command).

The kernel config is http://www.polplex.co.uk/~mozes/d/config-kirkwood
I believe that it's configured correctly.

Does anybody have any idea why it doesn't work or how to make it work?
I would prefer to load the FDT blob using u-boot rather than appending it
to the Kernel blob since the version of u-boot on this Sheeva should
support it.

Thanks


Reply to: